2012-03-21 41 views
1

我需要写cmd命令DIR的输出的powershell变量(数组)。可能吗?我需要它,因为我使用WinSCP赋予CMD脚本(SFTP客户端),当我连接到SFTP服务器,我可以用CMD命令只,而不是PowerShell的。但我需要获取远程目录中文件的名称和大小,以检查传输是否成功。这是我的脚本,它连接到SFTP和上传一些文件:cmd以连接的powershell

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中使用电话运营商&调用此行,并指定它的标准输出和/或错误输出到一个变量。

实施例:

$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
  • 两种:$output = & "C:\Program Files\WinSCP\winscp.com" /arg1 /arg2 2>&1
+0

谢谢你,安迪。我将WinSCP重新安装到c:\ WinSCP以避免文件夹名称中出现空白,但它尖叫着:术语'C:\ WinSCP \ winscp.com/console/command'不会被识别为cmdlet,函数的nam e,脚本文件或可操作程序。检查拼写Ø F中的名称,或是否包含一个路径,验证路径是否正确,然后再次尝试 。 – culter 2012-03-21 10:46:17

+0

@culter权利,请确保您有您的交易报价和参数的WinSCP这样一个空格:'&“C:\路径为\ winscp.com” /控制台/命令“选项一批中止” ...' – 2012-03-21 10:49:11

+0

安迪,现在没有空间了。我将它重新安装到C:\ WinSCP目录。 – culter 2012-03-21 10:55:13