我有以下..。
$output = @()
$servers =Get-Content "C:\Windows\System32\List3.txt"
foreach ($server in $servers)
{
trap [Exception] {continue}
Import-Module PSRemoteRegistry
$key="SOFTWARE\Microsoft\'Microsoft Antimalware'\'Signature Updates'"
$regkey=Get-RegBinary -ComputerName $server -Key $Key -Value SignatuesLastUpdated
#$regkey=(Get-Item HKLM:\SOFTWARE\Microsoft\'Microsoft Antimalware'\'Signature Updates').getValue('SignaturesLastUpdated')
#$regkey=[datetime]::ParseExact("01/02/03", "dd/MM/yy", $null) | Export-csv -path c:\temp\avinfo.csv -append
#$regkey
}
$output | Select $server , $Regkey | Export-Csv c:\temp\avinfo.csv -NoTypeInformation我认为这是相当接近,但没有工作的需要-谁能告诉我做错了什么在这里-一直读了很多,并设法做到这一点,只是需要帮助,以最终确定。
谢谢
发布于 2015-02-10 16:05:59
好的..。因此,有许多需要改变,以使这一工作。我会经常更新答案后,这是张贴。
$servers = Get-Content "C:\Windows\System32\List3.txt"
$key="SOFTWARE\Microsoft\Microsoft Antimalware\Signature Updates"
$servers | ForEach-Object{
$server = $_
Try{
Get-RegBinary -ComputerName $server -Key $Key -Value SignatuesLastUpdated -ErrorAction Stop
} Catch [exception]{
[pscustomobject]@{
ComputerName = $server
Data = "Unable to retrieve data"
}
}
} | Select ComputerName,@{Label=$value;Expression={If(!($_.Data -is [string])){[System.Text.Encoding]::Ascii.GetBytes($_.data)}Else{$_.Data}}} | Export-Csv c:\temp\avinfo.csv -NoTypeInformation以上代码所做的更符合您的意图。获取列表,并为每个项目从该服务器获取关键数据。如果存在获取该数据的问题,则输出一个自定义对象,以便在输出中判断是否存在问题。悬而未决的部分是如何将二进制数据导出到文件中。就目前情况而言,它应该创建一个以空格分隔的字节字符串。
应该强调的是,您确实遇到了一些问题
$output,但不要在循环过程中填充它。这对于foreach结构非常重要。最后,你发送空数组给你csv。我的答案不需要它,因为它只是使用标准输出。SignatuesLastUpdatedGet-RegBinary不会创建try/catch块所需的终止错误。增加了-ErrorAction Stop。不要认为您的代码trap [Exception] {continue}会捕捉到任何东西。$key中的单引号可能会阻止对路径进行解析。您试图转义空格,只需将整个字符串括在一组引号中即可。Select可以使用变量,但它们以基本形式在那里选择属性名称。简而言之,你所做的都是错的。https://stackoverflow.com/questions/28435150
复制相似问题