2017-05-26 58 views
0

我想弄清楚我在这里做错了什么。非常新的PowerShell,所以要温柔...尝试在远程系统上运行PSSession(从系统列表中读取)。然后尝试将丢失补丁的值返回到本地系统,然后导出到CSV。我正在寻找一个号码被退回。该值在Invoke命令中显示在Powershell窗口中,但在脚本底部显示任何内容。任何人都可以提供一些建议,我可以将这个价值回传给我的系统,然后能够导出到csv?任何建议将不胜感激。Powershell - 无法将远程会话变量传递回本地系统

$array1 = Get-Content "C:\Users\******\Desktop\Server_List.txt" 
$ReportResults = New-Object System.Collections.Generic.List[System.Object] 
$Searchresult = @() 


#parse thru each machine name in 
foreach ($MachineName in $array1) 
{    

Write-host $MachineName 
$session = New-PSSession -ComputerName $MachineName 

Invoke-Command -Session $session { 
Param($ReportResults) 


#Get All Assigned updates in $SearchResult 
$UpdateSession = New-Object -ComObject Microsoft.Update.Session 
$UpdateSearcher = $UpdateSession.CreateUpdateSearcher() 
$SearchResult = $UpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and 
IsInstalled=0") 

Write-Host "total=$($SearchResult.updates.count)" 

$ReportResults.add($SearchResult) 

} -ArgumentList $ReportResults 

Remove-PSSession $session 


} 
$ReportResults # | export-csv C:\Users\******\Desktop\Compprogs\Test.csv - 
Notypeinformation 
+1

基本上问题是你什么都没有返回,所以没有什么可以返回的。你应该从会话中返回一些东西,而不是像你正在尝试做的那样将任何东西放入会话中 – 4c74356b41

回答

1

你必须“标记”参数为ref。有关更多信息,请参阅此link

另外,您可以通过Write-Output返回您想要的值。例如:

$returnValue = Invoke-Command -ScriptBlock { 

    Write-Output "Hello World" 
} 

# $returnValue should include "Hello World" 
Write-Host $returnValue 

要知道,当你使用Write-Ouput多次在Invoke-Command$returnValue将包括所有值通过Write-Ouput写信给输出steram。

希望有帮助

+0

我会尝试。感谢您的快速反应。 – CalvinK