1

我编写了一个 Powershell 脚本,该脚本使用 psftp.exe 从多个交换机备份配置文件。改编自此处的 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

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

我应该补充一点,这个问题发生在 Powershell CLI 窗口中,而不是在 Powershell ISE 控制台窗格中。

关于如何在这个脚本中屏蔽 psftp 的任何想法?

4

1 回答 1

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
于 2017-02-24T01:39:16.157 回答