我使用此问题作为我的基本参考Powershell - Query remote registry key value and generate text file IF value equals 1
我试图找到注册表项的值并将其输出到文件。
我修改了该链接中的代码,看起来像这样。
$keyname = 'Software\Policies\Microsoft\Windows\WindowsUpdate\AU'
Import-Csv 'C:\computers.csv' | % {
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",
$_.machinename)
$key = $reg.OpenSubkey($keyname)
$value = $key.GetValue('AUoptions')
Write-Host ($_.machinename , $value) | write-output "c:\computerresults.csv"
脚本正常工作,直到我到达|写输出。我无法将结果转储到文件中。我也试过了export-csv。
任何给予的帮助都会非常谨慎。
答案 0 :(得分:2)
Write-Host
打破了管道。如果要在管道命令中显示信息,请使用Write-Output
。
此外,Write-Output
不是您要导出数据的命令。查看Export-Csv
和Out-File
以获取文件输出。
答案 1 :(得分:0)
你错过了%循环的结束花括号。我已插入它,并修改了最后一行,为您提供所需的输出(非常确定,未经测试,但它应该可以工作。
New-Object PSObject @{MachineName=$_.machinename;Value=$value} } | Export-CSV "c:\computerresults.csv" -NoTypeInfo
这将输出一系列自定义对象,每个对象具有2个值,MachineName和Value。然后它将获取所有这些对象并将它们导出为CSV。 -NoTypeInfo是这样的,你不会在顶部找到一行来说明它是从哪个对象导出的。
答案 2 :(得分:0)
谢谢大家。这就是我最终使用
$keyname = 'Software\Policies\Microsoft\Windows\WindowsUpdate\AU'
Import-Csv 'C:\computers.csv' | % {
$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey("LocalMachine",
$_.machinename)
$key = $reg.OpenSubkey($keyname)
$value = $key.GetValue('AUoptions')
New-Object PSObject @{MachineName=$_.machinename;Value=$value}
Write-Host ($_.machinename , $value)
} | out-file "c:\computerresults.csv"
@TheMadTechnician。如果我使用Export-csv(使用write-host或不使用),我将此作为输出 IsReadOnly IsFixedSize IsSynchronized Keys值SyncRoot Count FALSE FALSE FALSE System.Collections.Hashtable + KeyCollection System.Collections.Hashtable + ValueCollection System.Object 2
因此,我结合了您和@kohlbrr提供的内容,并提出了一个可行的解决方案,在屏幕上向我显示结果并将其放入文件中。
再次感谢。