我使用以下PowerShell腳本來確定最終用戶在其計算機上安裝的應用程序(除了圖像安裝的默認應用程序之外)。在PowerShell中過濾CSV文件中的內容
當前,該腳本收集舊計算機上的應用程序列表,並粘貼其下的默認應用程序列表(來自DefaultApps.csv)。然後我在Excel中打開它,添加條件格式以查找重複條目並隱藏/刪除這些行。然後,我剩下一份我需要在新用戶的計算機上安裝的內容列表,其中不包含圖像安裝的任何內容。
我想要做的是修改腳本,以便PowerShell將篩選出它找到的任何重複條目。我在網上發現了一些能夠清除如何刪除其中一個條目的地方,但這在這種情況下不會有幫助。我非常想讓PowerShell從遠程PC拉取應用程序列表,然後刪除DefaultApps.csv中存在的任何條目。
我不確定從哪裏開始,因爲除了此腳本中的內容外,我還沒有做過太多編輯CSV文件的工作。有人能指導我如何實現這一目標的正確方向嗎?如果你知道我應該看的cmdlet/switch,或者如果你有一個解釋這個的頁面的鏈接,那將是一個好的開始。
$PCListOld = Get-Content F:\PCList-Old.txt
ForEach ($PC in $PCListOld) {
$AppList = Get-WmiObject -Computer $PC Win32_Product | Sort-Object Name | Select-Object Name
$AppList | Export-CSV C:\Scripts\AppLists\$PC.csv -NoTypeInformation
Import-CSV C:\Scripts\AppLists\DefaultApps.csv | Export-CSV C:\Scripts\AppLists\$PC.csv -Append
}
還不如包括如何從註冊表在這一點上搜索:http://stackoverflow.com/questions/29813325/powershell-search-software-installed/ 29814134#29814134 – Matt
到目前爲止,這似乎工作得很好。儘管在DefaultApps.csv中,唯一的問題是「Intel?Trusted Connect Service Client」出現在結果中。 「?」可以嗎?在入口處以某種方式拋棄它?我沒有收到任何錯誤,但每次csv導出後$ LASTEXITCODE都是1,即使我猜它應該是0,因爲沒有任何錯誤出現? – Andrew
@Andrew我不確定lastexitcode 1是從哪裏來的,即使WHERE過濾器失敗了,也不應該這樣做。過濾器應該用於問號,考慮''b'' -in @('a','b?','c')'起作用。我懷疑它實際上不是一個問號,而是一個註冊或版權或商標符號 - (R) - 例如'Intel®',您的默認應用程序電子表格未正確編碼(是否以ASCII編碼保存?) 。 – TessellatingHeckler