一直試圖讓它輸出到 csv。本身作業正常,但無法弄清楚如何做到這一點。我猜是因為我使用的是 write-host,它實際上從未進入管道,這給了我一個空管道輸入錯誤。我試過用其他幾種方法玩弄都無濟于事。這是我想設法匯出到 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 以外的東西重新格式化它。
uj5u.com熱心網友回復:
您需要首先使用有關特定程式的資訊創建一個物件,然后將此資訊添加到陣列中。然后,您可以將陣列匯出為 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"
uj5u.com熱心網友回復:
我重新撰寫了您的代碼以生成可以輸入到 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 的知識。我希望這是值得的努力。祝你好運。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/466222.html
