2012-03-21 3 views
1

cmd 명령 DIR의 출력을 powershell 변수 (배열)에 써야합니다. 가능한가? WinSCP (SFTP 클라이언트)에서 cmd 스크립팅을 사용하고 sftp 서버에 연결되어있을 때 powershell이 ​​아닌 cmd 명령 만 사용할 수 있기 때문에 필자가 필요합니다. 하지만 전송이 성공했는지 확인하기 위해 원격 디렉토리에있는 파일의 이름과 크기를 가져와야합니다. 이 스크립트는 sftp에 연결하여 일부 파일을 업로드하는 스크립트입니다.cmd to powershell connection

C:\"Program Files"\WinSCP\winscp.com /console /command "option batch abort" "option confirm off" "open sftp://login:[email protected]" "cd import" "option transfer binary" "put C:\_ZbankyNaOdoslanie\*.gpg" "put C:\_ZbankyNaOdoslanie\*.chk" "close" "exit" 

고맙습니다.

답변

3

호출 연산자 &을 사용하여 PowerShell에서이 행을 호출하고 stdout 및/또는 stderr을 변수에 지정할 수 있습니다.

예 :

$output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 

가변 $output 문자열 배열 될 것이다. 각 출력 행은 배열 요소가됩니다.

더 많은 예제 :

  • 은 그냥 표준 출력 : $output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 2>$null 그냥 표준 에러
  • : $output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 1>$null
  • 모두 :
+0

$output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 2>&1가, 앤디 감사합니다. 폴더 이름에 공백을 피하기 위해 WinSCP를 c : \ WinSCP에 다시 설치했지만 비명을지었습니다. 'C : \ WinSCP \ winscp.com/console/command'라는 용어는 cmdlet, function, 스크립트 파일 또는 작동 가능한 프로그램. 이름이 맞는지 확인하거나 경로가 포함되어 있으면 경로가 올바른지 확인한 후 을 다시 시도하십시오. – culter

+0

@culter 오른쪽 따옴표와 WinSCP 인수 사이에 다음과 같이 공백을 넣어야합니다. '& "C : \ Path to \ winscp.com"/ console/command "option batch abort"... " –

+0

Andy , 지금 공간이 없습니다. C : \ WinSCP 디렉토리에 다시 설치했습니다. – culter