我正在尝试编写一个简短的PowerShell脚本来完成我正在处理的软件的网络集成。
我在运行Win7和Win8的4台机器之间运行Powershell 4.0,并且连接功能正常,并允许手动操作和执行。
然而,当我尝试编写一个脚本来自动化这个过程时,事情就开始行为不端了。
我想做的是在远程机器上执行命令,如
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参数,那么脚本会执行,但是没有办法证明它确实存在。 如果我使用cmdlet执行上述任何操作,例如Get-ChildItem,那么它将正确显示我连接的服务器的主目录的内容。
我对于我能做些什么感到很遗憾。 我对Powershell抱有很高的期望,但是如果我不能做到这一点,那就太难了......
谢谢!
答案 0 :(得分:0)
我修好了。 经过多次试验和错误,我确定即使我明确声明了App.exe命令的完整路径,我仍然需要在执行之前更改脚本中的工作目录。 在本地工作时我不需要这样做,但我需要通过网络无论出于何种原因这样做。 它现在工作正常,我可以继续我正在做的事情! 我仍然无法执行存储在字符串中的远程命令,但这是另一个主题。