invoke-command的输出没有返回

时间:2017-03-08 02:15:18

标签: powershell

我有以下脚本块:

   $scriptblock = {
                $regpath = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
                $securitylayer = Get-ItemProperty -Path $regpath -Name SecurityLayer -ErrorAction SilentlyContinue

                If (!($securitylayer) -or ($securitylayer.securitylayer -ne '0')) {
                    Write-Host -ForegroundColor Yellow "Regkey not present or value not 0. Creating/setting to 0"
                    #Commented out for testing purposes
                    #Set-ItemProperty -Path $regpath -Name SecurityLayer -Value 0
                    }
                Else {Write-Host -ForegroundColor green "Regkey present and set to 0. Skipping."}
               }

我在运行Server 2003 SP2的远程计算机上传递给PSSession:

$computername = 'computer'
$pssession = New-PSSession -ComputerName $computername -Name $computername
Invoke-Command -Session $pssession -ScriptBlock {$scriptblock}

但我没有看到任何输出。

我也试过

  

写入输出

但仍然没有看到任何输出。

我看到另一篇帖子建议执行以下操作,但未返回任何内容:

$scriptblock = {
                    $regpath = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
                    $securitylayer = Get-ItemProperty -Path $regpath -Name SecurityLayer -ErrorAction SilentlyContinue

                    If (!($securitylayer) -or ($securitylayer.securitylayer -ne '0')) {
                    new-object pscustomobject –property @{Result = "Regkey not present or value not 0. Creating/setting to 0"}
                    #Commented out for testing purposes
                    #Set-ItemProperty -Path $regpath -Name SecurityLayer -Value 0
                        }
                    Else {new-object pscustomobject –property @{Result = "Regkey present and set to 0. Skipping."}}
               }

$computername = 'computer'
$pssession = New-PSSession -ComputerName $computername -Name $computername
$results = Invoke-Command -Session $pssession -ScriptBlock {$scriptblock}

$results.result

代码在计算机上运行时按预期运行。

1 个答案:

答案 0 :(得分:3)

您将脚本块包装在一个scriptblock中,因此它实际上并不是在执行脚本块。只需移除{}周围的{$scriptblock}

即可
Invoke-Command -Session $pssession -ScriptBlock $scriptblock