首页 > 解决方案 > Invoke-Command 不带参数运行

问题描述

我正在尝试在 PowerShell 脚本中运行 Invoke-Command 以在远程服务器上运行脚本。它从 XML 文件中检索要运行的计算机名称和脚本。代码示例如下。脚本执行,但远程服务器上没有任何内容正在运行。我尝试了 2 种不同的方式来运行 Invoke-Command。

[string] $computer = "lumen"
[string] $scriptBlock = "cd C:\Scripts\Update-Apps; ./Update-Apps"

$session = New-PSSession -ComputerName $computer
Invoke-Command -Session $session -ScriptBlock { $scriptBlock }

#Invoke-Command -ComputerName $computer -ScriptBlock { $scriptBlock }

我在调用命令时做错了什么?谢谢!

标签: powershellremote-accessinvoke-command

解决方案


您正在传递scriptblock带有字符串的 a 。$scriptBlock当它调用它时,它基本上和在你的终端中写一样的效果。您必须实际执行scriptblock. 你可以使用Invoke-Expression.

[string] $computer = "lumen"
[scriptblock] $scriptBlock = { "cd C:\Scripts\Update-Apps; ./Update-Apps" | Invoke-Expression }

$session = New-PSSession -ComputerName $computer
Invoke-Command -Session $session -ScriptBlock $scriptblock

或者您可以直接将您的命令编写为scriptblock.

[string] $computer = "lumen"
[scriptblock] $scriptBlock = { cd C:\Scripts\Update-Apps; ./Update-Apps }

$session = New-PSSession -ComputerName $computer
Invoke-Command -Session $session -ScriptBlock $scriptblock

它不一定是字符串。


推荐阅读