如何通过远程服务器上的Invoke-Command运行多个命令

时间:2017-05-03 12:49:58

标签: powershell powershell-remoting invoke-command

在下面的示例中,我的scriptblock中只有Get-Process正在执行。 " DEH系统"由于某种原因不打印

Invoke-Command -ComputerName mycomputer -Credential $mycreds -ScriptBlock {
    Get-Process
    Write-Host "deh"
}

如果我删除-ComputerName并在本地执行,那么它运行两个命令就好了。

编辑

这里我尝试对远程服务器执行IIS cmdlet。以下命令有效

Invoke-Command -ComputerName mycomputer -ScriptBlock { 
    Trace-Command CommandDiscovery {
        Import-Module webAdministration
        Start-WebAppPool -Name DefaultAppPool
    } -PSHost 
}

但这不起作用

Invoke-Command -ComputerName mycomputer -ScriptBlock { 
    Import-Module webAdministration
    Start-WebAppPool -Name DefaultAppPool
}

它有助于Start-WebAppPool工作的Trace-Command有什么特别之处?这真的很奇怪,我无法解释为什么这个功能......

3 个答案:

答案 0 :(得分:2)

不,Invoke-Command cmdlet采用 scriptblock ,您可以在其中放置多个命令。您还应该能够看到Write-Host输出。

答案 1 :(得分:1)

您可以通过\*在远程计算机上执行Trace-Command,看看发生了什么。我无法重现这一点。

Invoke-Command

答案 2 :(得分:-2)

尝试使用分号分隔命令:

  Invoke-Command -ComputerName mycomputer -Credential $mycreds -ScriptBlock {
        Get-Process ; 
        Write-Host "deh"
    }