的問題是,你不告訴設置郵箱其郵箱進行修改。您正在運行一個的foreach對象環路設置$ M給每個郵箱裏面的命令,但你不使用$ M內循環(這違背了一個的foreach對象循環的目的)。
的底線是-Identity對於設置郵箱命令必需的參數,而你不指定它 - 這就是爲什麼會被提示您。改變你的命令是:
Set-Mailbox $m -ProhibitSendReceiveQuota unlimited
- -Identity是隱含的,因爲它是第一個位置參數。
- 請注意
unlimited
之前缺少-
,這會使PowerShell將其解析爲一個單獨的(而不存在的)參數,而不是-ProhibitSendReceiveQuota
的參數。
有許多屬性,可以用來作爲一個參數到-Identity參數。看看這方面的文檔參數,它具有有效身份屬性的列表(也請注意Required? true
):
-Identity <MailboxIdParameter>
The Identity parameter specifies the mailbox. You can use the following values:
* ADObjectID
* Alias
* Distinguished name (DN)
* Domain\Account
* GUID
* LegacyExchangeDN
* SmtpAddress
* User principal name (UPN)
Required? true
Position? 1
Default value
Accept pipeline input? True
Accept wildcard characters? false
然而,這個名單是不完整的。奇怪的是,標識屬性不包括在內,但它肯定是有效的。 名稱和顯示名稱也工作。當然,你可以只提供一個郵箱對象作爲標識參數,就像我上面的命令(這是因爲郵箱對象的默認屬性是DisplayName)。
因此,Set-Mailbox $_.Identity [...]
,Set-Mailbox $_.DistinguishedName [...]
等都將工作得很好。如果您正在調用已經縮小到特定郵箱屬性的循環或管道中的cmdlet,這非常有用。
在mjolinor的回答管道工程,因爲你可以在文檔中看到,-Identity參數接受管道輸入,所以在結果集中獲取郵箱的每個對象設置爲-Identity論據。還要注意,對於大型數據集,管道更高效。
說到大數據集,請注意,默認情況下,Get-Mailbox僅返回前1000個結果。所以,除非你有一個小的組織少於1,000個郵箱,你想這樣做:
foreach ($m in (Get-Mailbox -ResultSize unlimited) {
Set-Mailbox -ProhibitSendReceiveQuota unlimited
}
或管道版本
Get-Mailbox -ResultSize unlimited | Set-Mailbox -ProhibitSendReceiveQuota unlimited