我需要一些關于腳本的幫助:)
此腳本在我們的 AD 中查找已禁用的帳戶。匯入 CSV 然后“通過 0365 比較并檢查用戶是否有 E3 許可證。
所以我需要幫助的可能是 if else 或 try catch 陳述句。因此,如果用戶在 AD 中被禁用并且將 E3 許可證匯出到 CSV 檔案。
當我運行腳本時,我得到用戶未找到紅色文本可能是處理所有錯誤文本的一種方法?提前致謝
$DisabledAccounts = Get-ADUser -Filter {Enabled -eq $false} | 選擇用戶主體名稱 | Export-csv "C:\Temp\disabledADUser.csv"
$user = Import-Csv "C:\Temp\disabledADUser"
$user | ForEach-Object {
$0365User= Get-MsolUser -UserPrincipalName $_.UserPrincipalName | Where-Object {($_.licenses).AccountSkuId -match "SPE_E3"} | 選擇 userprincipalnameione -ErrorAction SilentlyContinue
if ($0365User) {
寫主機 "" -ForegroundColor "red"
}else {
寫主機 "" -ForegroundColor "green"
}
}
uj5u.com熱心網友回復:
您應該避免使用大括號 : 進行過濾-Filter { Enabled -eq $false },而是使用雙引號-Filter "Enabled -eq $false"
但是,由于您只需要UserPrincipalName屬性,因此我更喜歡Search-ADAccountcmdlet。
Search-ADAccount -AccountDisabled -UsersOnly | ForEach-Object `
-Begin { $o365Users = @() } `
-Process { $o365Users = Get-MsolUser -UserPrincipalName $_.UserPrincipalName |
Where-Object {($_.Licenses).AccountSkuId -match "SPE_E3"} |
Select UserPrincipalName -ErrorAction SilentlyContinue } `
-End { $o365Users } | Export-CSV "C:\Temp\DisabledADUserWithLicenseAttached.csv"
cmdlet的-Begin引數ForEach-Object僅在啟動時呼叫一次以創建一個填充在-Process塊中的陣列,當所有用戶都經過驗證后,-End塊輸出要轉換為 csv 的陣列。
供您參考 MSOnline PowerShell 模塊將在今年年底被洗掉。您應該考慮改用 Microsoft.Graph 模塊(這里有一些關于許可證管理的資訊)。您還可以使用 PnP.PowerShell,這是一個非常強大的非 Microsoft 和開源模塊,但 Microsoft在此處參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518222.html
