我正在尝试使用以下脚本从Exchange导出禁用的用户邮箱(名称以“ a”开头)。 如果我在不使用管道的情况下运行它,或者使用-whatif一切都很好,那么如果我运行它,则批处理作业将尝试写入相同的.pst文件。
我当然不是Powershell专家,所以也许我缺少明显的东西。
Get-Mailbox -filter "recipienttype -eq 'usermailbox' -and exchangeuseraccountcontrol -eq 'accountdisabled' -and name -like 'a*'" | new-mailboxexportrequest -file path ("\\server\share\exportfolder\$_.pst")
欢呼
答案 0 :(得分:0)
您可以使用以下方法实现目标:
Get-Mailbox -filter "recipienttype -eq 'usermailbox' -and exchangeuseraccountcontrol -eq 'accountdisabled' -and name -like 'a*'" `
| ForEach-Object `
{ new-mailboxexportrequest -Mailbox $_.Identity -filepath ("\\server\share\exportfolder\$($_.UserPrincipalName).pst") }
(添加了换行符以提高可读性)
在您的代码中,您使用的是$_
,在此示例中为邮箱对象数组。但是,new-mailboxexportrequest
参数的String
期望值为-FilePath
。这就是为什么需要$($_.UserPrincipalName)
。
添加了第一个美元符号和方括号,以便您可以在双引号之间访问属性值。
最后,要遍历所有数组元素,可以使用ForEach-Object
(或仅使用%
作为其别名)。