Powershell - 无法将远程会话变量传递回本地系统

时间:2017-05-26 15:37:48

标签: powershell csv

我想知道我在这里做错了什么。对PowerShell来说很新,所以要温和......试着在远程系统上运行PSSession(从系统列表中读取)。然后尝试将缺失补丁的值返回到本地系统,然后导出为CSV。我只想找一个要退回的号码。当在Invoke-command内部时,该值显示在Powershell窗口中,但是在脚本底部没有显示任何内容。任何人都可以提供一些建议我如何将该值传递回我的系统然后能够导出到csv?任何建议将不胜感激。

$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 个答案:

答案 0 :(得分: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的所有值。

希望有所帮助