我基本上是將一個簡短的 PC 名稱串列與我們的活動目錄進行比較,第一個檔案是我必須檢查的 PC 串列,第二個檔案是我使用以下命令獲得的廣告串列
$ADcomputer = get-adcomputer -Filter "name -Like '*'" -Searchbase "DC=**,DC=******,DC=**"
($ADcomputer).name | Out-file "C:\temp\ADComputer.csv"
在兩個串列中,拆分“A”中只有 pc 名稱,其中大部分都是像“PC23425”一樣構建的,只是帶有各種數字(當然也有一些例外,但我不需要僅針對具有這種模式的 pc 來檢查它們)。
list.csv 是這樣構建的
PC020682
PC020891
PC020953
PC021999
我閱讀了幾篇關于此的帖子,我非常確定我需要為此使用 foreach 回圈,但是由于我不經常使用 powershell,因此我不確定如何將其關閉。
我嘗試的是
$Path = "C:\temp"
$ComputerList = Import-Csv -Path "$($path)\ADcomputer.csv"
$ComputerAchiv = Import-Csv -Path "$($path)\List.csv"
但我不知道如何構建 foreach 回圈。
uj5u.com熱心網友回復:
雖然CSV檔案格式沒有完全標準化,但正如@Theo PowerShell所提到的,默認情況下第一行是標題記錄。標題行將用于定義Import-Csvcmdlet最終發出的物件的屬性名稱。如果您的CSV檔案不包含標題行,您可以使用-Header引數手動添加標題行(列名稱、屬性名稱),例如:-Header username。
對于 PowerShell,您的檔案是簡單的串列(沒有屬性),您可以使用Get-Contentcmdlet讀取這些串列:
$ComputerList = Get-Content -Path "$($path)\ADcomputer.csv"
$ComputerAchiv = Get-Content -Path "$($path)\List.csv"
要找出串列共享的專案,您可以使用Where-Objectcmdlet:(
另請參閱:比較兩個陣列并獲取不常見的值)
$ComputerList |Where-Object { $ADcomputer.name -eq $_ }
下一級
雖然這可能是對您問題的直接回答。因為你可能它可能不會給您帶來太多不希望處理PowerShell的標準CSV檔案(含義PowerShell的物件串列)和加入這些。為此,請參見例如:在 Powershell 中,將兩個表合并為一個的最佳方法是什么?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326234.html
