我正在嘗試從 PowerShell 運行腳本以獲取來自 2 個不同 OU 的用戶。我正在嘗試將其匯出到 .CSV 檔案中。但是,我使用的腳本沒有將兩個 Ous 合并到一個檔案中,我只獲得 1 個 OU 資料。
我使用的腳本:
$users = @()
$OU1 = "OU=Standard users,OU=US,DC=x1,DC=contoso,DC=com','OU=Standard users,OU=AS, DC=x1,DC=contoso,DC=com"
$OU2 = "OU=Standard users,OU=US,DC=x1,DC=contoso,DC=com','OU=Standard users,OU=AS, DC=x1,DC=contoso,DC=com"
$users = Get-ADUser -Filter * -Searchbase $OU1 -Properties *|
Select-Object name, userPrincipalName, accountExpires, distinguishedName, physicalDeliveryOfficeName | export-csv -path "c:\users\$env:USERNAME\desktop\2-OU-List.csv"
$users = Get-ADUser -Filter * -SearchBase $OU2 -Properties *|
Select-Object name, userPrincipalName, accountExpires, distinguishedName, physicalDeliveryOfficeName | export-csv -path "c:\users\$env:USERNAME\desktop\2-OU-List.csv"
現在,當我取出匯出選項時,我的腳本可以在 powershell 中運行,但我正在嘗試匯出它:
$users = @()
$OU1 = "OU=Standard users,OU=US,DC=x1,DC=contoso,DC=com','OU=Standard users,OU=AS, DC=x1,DC=contoso,DC=com"
$OU2 = "OU=Standard users,OU=US,DC=x1,DC=contoso,DC=com','OU=Standard users,OU=AS, DC=x1,DC=contoso,DC=com"
$users = Get-ADUser -SearchBase $OU1
$users = Get-ADUser -SearchBase $OU2
uj5u.com熱心網友回復:
Export-Csv覆寫現有的輸出檔案,除非使用引數-Append。所以你總是Get-ADUser只得到第二個查詢的輸出。
使用引數-Append您甚至不需要將Get-ADUser結果存盤到中間陣列中$users,因此腳本將需要更少的記憶體。
$OU1 = "OU=Standard users,OU=US,DC=x1,DC=contoso,DC=com','OU=Standard users,OU=AS, DC=x1,DC=contoso,DC=com"
$OU2 = "OU=Standard users,OU=US,DC=x1,DC=contoso,DC=com','OU=Standard users,OU=AS, DC=x1,DC=contoso,DC=com"
# Create a new, empty file (clear any existing file)
$file = New-Item "c:\users\$env:USERNAME\desktop\2-OU-List.csv" -Force
# Use parameter -Append to add to the existing CSV
Get-ADUser -Filter * -Searchbase $OU1 -Properties *|
Select-Object name, userPrincipalName, accountExpires, distinguishedName, physicalDeliveryOfficeName |
export-csv -path $file.FullName -Append
# Use parameter -Append to add to the existing CSV
Get-ADUser -Filter * -SearchBase $OU2 -Properties *|
Select-Object name, userPrincipalName, accountExpires, distinguishedName, physicalDeliveryOfficeName |
export-csv -path $file.FullName -Append
請注意,為了對稱,我已-Append為兩個Get-ADUser呼叫指定并用于New-Item清除任何先前運行的輸出。這使代碼更易于維護,因為Get-ADUser當您將來添加更多查詢或洗掉現有查詢時,您無需關心哪個呼叫是第一個呼叫。
另一種方法是將兩個Get-ADUser呼叫都包裝到一個腳本塊中以有效地附加它們的輸出流。一個優點是我們可以洗掉一些重復的代碼。
$OU1 = "OU=Standard users,OU=US,DC=x1,DC=contoso,DC=com','OU=Standard users,OU=AS, DC=x1,DC=contoso,DC=com"
$OU2 = "OU=Standard users,OU=US,DC=x1,DC=contoso,DC=com','OU=Standard users,OU=AS, DC=x1,DC=contoso,DC=com"
# Create a script block to append the output streams of both `Get-ADUser` calls.
& {
Get-ADUser -Filter * -Searchbase $OU1 -Properties *
Get-ADUser -Filter * -SearchBase $OU2 -Properties *
} | Select-Object name, userPrincipalName, accountExpires, distinguishedName, physicalDeliveryOfficeName |
Export-Csv -Path "c:\users\$env:USERNAME\desktop\2-OU-List.csv"
該行& {使用呼叫運算子立即執行以下腳本塊。
最后一行結束腳本塊并將其輸出管道化,該輸出由兩個Get-ADUser呼叫的串行組合輸出組成, toSelect-Object和 to Export-Csv。沒有必要,-Append因為我們一口氣寫了檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/358635.html
