如何使用powershell scipt

时间:2018-04-22 13:22:40

标签: shell powershell

步骤:

1。我在机器B的temp文件夹下创建了一个名为“test.vbs”的文件,在该脚本中我有msgbox“hi”

2。从机器A - 我的目标是执行到机器B中的test.vbs

3。在机器A.我做了以下步骤,但我没有得到远程脚本执行。任何人都可以帮助我。

ps c:/> $ s = new -pssession -computername machineB ps c:/> Invoke-Command -Session $ s-ScriptBlock {$ filecount =(Get-ChildItem c:\ temp \ test.vbs -Recurse)} ps c:/> Invoke-Command -Session $ s-ScriptBlock {$ filecount}

我收到目录c:\ temp,文件名为test.vbs

现在我要执行test.vbs

ps c:/> Invoke-Command -ComputerName MachineB {& “C:\ TEMP \ test.vbs”}

执行上述命令后,我看不到test.vbs没有远程执行。 我的期望是收到消息箱。

我不理解它是否被执行。

任何人都可以帮我在本地使用power shell执行远程脚本。

非常感谢。

1 个答案:

答案 0 :(得分:0)

如果我对你的问题的理解是正确的,你想从机器A对机器B执行test.vbs,我认为它不可能在PowerShell中。

我前段时间遇到过同样的问题。 Enter-PsSession和Invoke-Command都不能为你做这件事可能只是因为它们不是为此而设计的。如果您远程运行任何PowerShell cmdlet,它们工作正常,例如Get-Item您可以轻松地在机器B上获取项目。但是如果您尝试执行PowerShell远程会话之外的操作,例如运行将启动新CScript.exe进程的vbs脚本,则它将无法工作。这是由于某种原因导致此PowerShell远程处理的底层实现。

如果你确实需要这样做,我有两个解决方法

  1. PsExec可能是最佳解决方案。它最初是为了完成这类工作而设计的,它可以通过一系列高级功能轻松完成您想要的工作。
  2. 使用New-ScheduledTask在计算机B上创建计划任务,并让它在本地计算机B上自行触发。
  3. 如果您安装了SCCM,它也提供此类功能,请查看this blog