Powershell输出到文件帮助

时间:2014-03-12 15:04:04

标签: powershell

我使用此问题作为我的基本参考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。

任何给予的帮助都会非常谨慎。

3 个答案:

答案 0 :(得分:2)

Write-Host打破了管道。如果要在管道命令中显示信息,请使用Write-Output

此外,Write-Output不是您要导出数据的命令。查看Export-CsvOut-File以获取文件输出。

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提供的内容,并提出了一个可行的解决方案,在屏幕上向我显示结果并将其放入文件中。

再次感谢。