我正在嘗試監視特定用戶郵箱的特定檔案夾。我的想法是使用變數呼叫用戶,然后運行 ??foreach 回圈并將輸出發送到電子郵件,以便通過電子郵件發送給我。
這是我的開始:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://ExchangeServer/PowerShell -Authentication Kerberos
Import-PSSession $Session -AllowClobber
$Users = 'user1','User2','user3','user4'
foreach($user in $users) {
$message = "------------- <br>"
$message ="checking user.... $user <br>"
$message = "------------- <br>"
$messsage = $report = Get-MailboxFolderStatistics $user | ?{$_.name -eq 'Top of Information Store' -or $_.name -eq 'Recoverable Items' -or $_.name -eq 'Deletions' -or $_.name -eq 'Purges' -or $_.name -eq 'Versions'} | ft Name, ItemsInFolder, FolderAndSubFolderSize
}
Send-MailMessage -SmtpServer smtpserver.domain.com -From [email protected] -To [email protected] -Subject "Litigation Mailbox Size Report" -Body $message -BodyAsHtml
Get-PSSession | Remove-PSSession
我可以讓它給我發送一封電子郵件,但它所擁有的只是電子郵件是帶有用戶的虛線,而不是來自 get-mailboxfolderstatistics 的結果。我曾嘗試將 $report 變數用于 get-mailboxfolderstatistics,然后不使用它。兩者似乎都不起作用。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
您的癥狀的直接解釋是一個錯字:$messsage應該是$message,正如圣地亞哥·斯夸爾松所指出的那樣。
- 為避免腳本中出現此類問題,請考慮設定,以防止參考不存在的變數。更高版本實作了額外的檢查(這可能有問題 - 請參閱GitHub 問題 #2798)。
Set-StrictMode-Version 1
即使更正了錯字,還需要額外的作業:
您必須使用Out-String以嵌入一個字串渲染的格式說明該Format-*cmdlet的如Format-Table(別名ft)的輸出:
$message = '<pre>{0}</pre>' -f (
Get-MailboxFolderStatistics $user |
Where-Object { $_.name -eq 'Top of Information Store' -or $_.name -eq 'Recoverable Items' -or $_.name -eq 'Deletions' -or $_.name -eq 'Purges' -or $_.name -eq 'Versions' } |
Format-Table Name, ItemsInFolder, FolderAndSubFolderSize |
Out-String
)
上面的內容額外地將輸出包裝在一個<pre>HTML 元素中,以便內容以等寬字體呈現,以實作正確的列對齊。
注意:Out-String意外地附加了一個尾隨換行符- 請參閱GitHub 問題 #14444。添加.TrimEnd()到(...)運算式以將其洗掉,或.Trim()同時洗掉前導空格(空行)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/363473.html
標籤:电源外壳
