【问题标题】:Remote complex command not recognized in Powershell PSSession through script通过脚本在 Powershell PSSession 中无法识别远程复杂命令
【发布时间】: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


    【解决方案1】:

    我修好了。 经过多次试验和错误,我确定即使我明确声明了 App.exe 命令的整个路径,我仍然需要在执行之前更改脚本中的工作目录。 在本地工作时我不需要这样做,但无论出于何种原因,我都需要通过网络进行。 它现在工作正常,我可以继续我正在做的事情! 我仍然无法执行存储在字符串中的远程命令,但这是另一个话题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2015-09-10
      • 2015-05-26
      相关资源
      最近更新 更多