【发布时间】:2014-07-31 20:48:35
【问题描述】:
我正在尝试编写一个简短的 powershell 脚本来为我正在开发的软件完成一些网络集成。
我有 Powershell 4.0 在 4 台同时运行 Win7 和 Win8 的机器之间工作,以及连接功能,并允许手动操作和执行。
但是,当我尝试编写脚本来自动化该过程时,事情开始出现问题。
我想做的是在远程机器上执行一个命令,比如
F:\Folder\App.exe /xLICENSE.txt
App.exe 从 /xLICENSE.txt 获取命令行输入,并在其主目录中创建一个名为 LICENSE.txt 的文件,该文件具有唯一的用户句柄以供某些应用程序进程使用。
如果我使用托管 App.exe 的计算机手动输入新的 PSSession,我可以完全按照所示输入该命令,它会执行应用程序并产生正确的结果。
但是,当我尝试将此命令集成到脚本中时,它一直告诉我该命令未被识别为任何命令或 cmdlet。
我试过了
$connection = New-Pssession -Computername NAME -Credential LOGIN
Invoke-Command -Session $connection -ScriptBlock {& "F:\Folder\App.exe /xLICENSE.txt"}
Remove-PSSession $connection
但这只是给了我之前描述的错误。 我还将命令从引号中取出,省略了 &,并用包含命令的字符串替换了命令(在 & 之前的引号内)
我也试过这条线
Invoke-Command -Computername NAME -ScriptBlock {& "F:\Folder\App.exe /xLICENSE.txt"} -Credential LOGIN
这也不起作用。我还尝试了使用字符串引用命令的不同方法,我还尝试将字符串作为参数传递给 invoke-command cmdlet,但似乎没有任何效果。
这里唯一的区别是,如果我手动执行,Invoke-Command 将不起作用...
如果我删除 /x 参数,则脚本会执行,但无法证明它确实如此。 如果我使用诸如 Get-ChildItem 之类的 cmdlet 执行上述任何操作,那么它将正确显示我正在连接的服务器的主目录的内容。
我只是有点迷茫,不知道我能做些什么。 我对 Powershell 寄予厚望,但如果我不能让它做到这一点,那将是艰难的......
谢谢!
【问题讨论】:
标签: windows powershell remoting