![](/img/trans.png)
[英]Powershell. Loop through all AD users/mailboxes and run comand on all users/mailboxes
[英]Create csv file of all disabled AD users with mailboxes Output information from multiple cmdlets in powershell
我正在嘗試收集有關具有郵箱的已禁用用戶帳戶的一些信息。 我專門尋找用戶郵箱而不是共享郵箱。
這是我到目前為止所擁有的。
$Mailboxes = Get-Mailbox | where {$_.RecipientTypeDetails -eq 'UserMailbox'}
$date = 獲取日期 -f "MMddyyyy_HHmm" $Disabled = @()
Foreach ($Mailboxes 中的 $Mailbox) { if((Get-ADUser -Identity $Mailbox.SamAccountName).Enabled -eq $False){ $Disabled += Get-MailboxStatistics $Mailbox.SamAccountName | Select - 屬性 DisplayName,TotalItemSize }
} $禁用 | 排序顯示名稱 | Export-Csv -Path "%path%\DisabledADUsersWithMailbox_$date`.csv" -NoTypeInformation
此外,我想收集的是用戶 Title、Manager、LastlogonDate,所有這些都可以使用 Get-Aduser 找到。 我不確定我如何 go 從兩個 cmdlet 收集信息,然后將其全部導出到 csv。 我讀到我可能需要創建一個自定義 object。 我正在努力在這個腳本中進行設置。
任何幫助將非常感激。
謝謝
以下幾行應該給你你想要的,無法驗證它,因為我沒有在這里運行交換。
$date = get-date -f "MMddyyyy_HHmm"
$Disabled = @(
Foreach ($Mailbox in $Mailboxes) {
$adUser = get-aduser -Identity $Mailbox.SamAccountName -Properties enabled,manager,title,lastlogontimestamp
If ($adUser.Enabled -eq $False){
$mailStats = Get-MailboxStatistics $Mailbox.SamAccountName
$attrsht = [ordered]@{
displayname=$mailstats.displayname
totalitemsize=$mailStats.totalitemsize
samaccountname=$aduser.samaccountname
enabled=$aduser.enabled
manager=$aduser.manager
title=$aduser.title
lastlogontimestamp=[datetime]::FromFileTime($aduser.lastlogontimestamp)
}
new-object -TypeName psobject -Property $attrsht
}
}
)
$Disabled | Sort-Object DisplayName | Export-Csv -Path "%path%\DisabledADUsersWithMailbox_$date`.csv" -NoTypeInformation
避免使用 += 向數組添加元素。 它很慢,或者看看通用數組列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.