2017-02-23 14 views
1

psftp.exe를 사용하여 여러 스위치에서 구성 파일을 백업하는 Powershell 스크립트를 작성했습니다. - 위의 코드 스위치의 IP 주소의 CSV 목록을 가로 지르는 루프 내에서, 그리고 그것이 무엇을해야합니까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 

이 잘 작동 다음과 같이 here에서 적응 PSFTP 루프의 내장은있다 구성 파일 수집과 관련하여 하지만 psftp 명령으로의 전환을 억제하고 싶습니다. psftp.exe에는 콘솔 출력을 비활성화하는 메커니즘이 없으므로 위 코드의 두 번째 줄 끝에 | Out-Null을 추가하여 Powershell에서 수행하려고해도 스위치 출력이 표시되지 않습니다.

이 문제는 Powershell ISE 콘솔 창이 아니라 Powershell CLI 창에서 발생한다고 추가해야합니다.

이 스크립트에서 psftp를 총구 법에 대한 아이디어가 있습니까?

답변

1

psftpout-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