我正在尝试在PowerShell脚本中运行Invoke-Command,以便在远程服务器上运行脚本。它从XML文件中检索要运行的计算机名称和脚本。代码示例如下。脚本会执行,但远程服务器上的任何内容都未运行。我尝试了两种不同的方法来运行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 }我用Invoke-Command做错了什么?谢谢!
发布于 2021-05-05 05:08:27
您正在传递一个带有字符串的scriptblock。当它调用它时,它基本上具有与在终端中编写$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中将命令直接编写为PowerShell代码。
[string] $computer = "lumen"
[scriptblock] $scriptBlock = { cd C:\Scripts\Update-Apps; ./Update-Apps }
$session = New-PSSession -ComputerName $computer
Invoke-Command -Session $session -ScriptBlock $scriptblock它不一定是字符串。
https://stackoverflow.com/questions/67392068
复制相似问题