一直试图将其输出到 csv。本身工作正常,但无法弄清楚如何做到这一点。我想因为我使用的是 write-host,它实际上从来没有进入管道,这给了我一个空管道输入错误。我试过玩 aroung 与其他一些方法无济于事。这里是“股票代码”我想设法导出到 csv:
$InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
foreach($obj in $InstalledSoftware)
{write-host $obj.GetValue('DisplayName') -NoNewline;
write-host " - " -NoNewline;
write-host $obj.GetValue('DisplayVersion')}
正如我所说,它似乎是管道仍然是空的,所以添加| export-csv
不起作用。我甚至不需要它在屏幕上写入输出,虽然这是一个很好的加号,所以现在我将尝试使用 write-host 以外的东西重新制定它。
您需要首先创建一个对象,其中包含有关特定程序的信息,并将此信息添加到数组中。然后您可以将数组导出为 CSV。您也可以一次导出一个条目并将其附加到 csv。但如果发现这种方法更清洁:
$InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
$allSoftware = [System.Collections.ArrayList]@()
foreach($obj in $InstalledSoftware) {
$software = New-Object -TypeName PSObject
$software | Add-Member -MemberType NoteProperty -Name DisplayName -Value $obj.GetValue("DisplayName")
$software | Add-Member -MemberType NoteProperty -Name Version -Value $obj.GetValue("DisplayVersion")
$null = $allSoftware.Add($software)
}
$allSoftware | Export-Csv -Path "SomePath"
我重新编写了你的代码,以产生可以提供给 Export-csv 的东西。
下面的代码至少产生一个 CSV 文件。它确实产生了几个记录,其中没有数据。它也可能有其他错误。但至少它会给你一个如何操作对象的句柄。
$InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"
$installedSoftware | %{
[pscustomobject]@{
'DisplayName' = $_.GetValue('DisplayName')
'DisplayVersion' = $_.GetValue('DisplayVersion')
}} |Export-csv myfile.csv
您可能需要学习一些有关管道,类型转换,哈希表和 Export-csv 的知识。我希望这是值得的。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(23条)