2017-02-23 89 views
1

我写了一个Powershell脚本,它使用psftp.exe从多个开关备份配置文件。在PSFTP环的胆量,改编自here,如下:从Powershell脚本调用PSFTP:如何静音输出?

# set up array of psftp commands to run on each switch 
$cmd = @("get $config_file_on_switch $local_filename","quit") 
# 
# pipe those commands to a psftp call 
$cmd | & $path_to_PSFTP -l $user -pw $password $IP_addr_of_switch 
# 
# this is all I'd really like to see on the Powershell console: 
Write-Host $name_of_switch 

这工作得很好 - 上面的代码是一个循环,穿过交换机的IP地址的CSV列表里面,它做什么,它应该在收集配置文件方面。但我想抑制交换机对psftp命令的响应。 psftp.exe没有禁用控制台输出的机制,并且试图在Powershell中通过在第二行代码末尾添加| Out-Null来做到这一点,并不会抑制开关输出的显示。

我要补充的是,在PowerShell的命令行窗口中会出现这个问题,而不是在PowerShell ISE中控制台窗格中。

关于如何在这个脚本中使用psftp的想法?

回答

1

psftp不能写东西,这是所有out-null运行在标准输出流。

您可以尝试重定向所有可能的流使用*>&1标准输出流。例如:

Write-host "You can't see me" *>&1 | Out-Null 

或者你的情况:

$cmd | & $path_to_PSFTP -l $user -pw $password $IP_addr_of_switch *>&1 | Out-Null 
+1

做得好; '*> $ null'是一个较短的选择。 – mklement0