如何避免PowerShell中Select-Object的输出显示在屏幕上?
解决PowerShell中Select-Object结果意外输出的问题
你的问题其实不是Select-Object导致的输出,而是后面的Replace方法调用。PowerShell中,任何未被赋值、未被重定向的表达式结果都会默认输出到控制台。你当前的代码里:
$data.Replace("`r`n"," ") $data.Replace("`n"," ")
这两行只是调用了字符串的Replace方法,但没有将返回的新字符串赋值给任何变量,也没有处理输出,所以方法执行后的结果会被直接打印到屏幕上。另外要注意:PowerShell中的字符串是不可变的,Replace不会修改原$data变量,只会返回新的字符串,所以你当前的这两行代码其实没有实际修改$data的内容。
正确的解决方法
方法1:将Replace结果重新赋值给$data(推荐)
既可以抑制输出,又能真正修改$data的内容:
$data = $totalData | Select-Object -Index ($s..$limit) # 将Replace结果赋值回$data,同时避免输出 $data = $data.Replace("`r`n"," ") $data = $data.Replace("`n"," ")
方法2:将Replace结果重定向到Out-Null(如果不需要保留修改后的内容)
如果你只是想执行Replace但不需要修改原变量,也不想看到输出,可以用管道将结果导向Out-Null:
$data = $totalData | Select-Object -Index ($s..$limit) $data.Replace("`r`n"," ") | Out-Null $data.Replace("`n"," ") | Out-Null
关于Select-Object的说明
当你将Select-Object的结果通过管道赋值给变量时,PowerShell会自动抑制默认输出,所以$data = ($totalData | Select-Object -Index ($s..$limit))这一行本身不会产生屏幕输出,无需额外参数或处理。
内容的提问来源于stack exchange,提问作者Venix
相关产品推荐
相关产品推荐

