Powershell,注册表导出 Csv 中的已安装软件列表
Powershell, Installed Software List from Registry Export Csv
一直在尝试将其输出到 csv。本身工作正常,但无法弄清楚如何去做。我猜是因为我使用的是写主机,它实际上从未进入管道,这给了我一个空管道输入错误。我尝试过其他一些方法无济于事。这是我想设法导出到 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 的知识。我希望这是值得的。
一直在尝试将其输出到 csv。本身工作正常,但无法弄清楚如何去做。我猜是因为我使用的是写主机,它实际上从未进入管道,这给了我一个空管道输入错误。我尝试过其他一些方法无济于事。这是我想设法导出到 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 的知识。我希望这是值得的。