我正在使用Exchange 2010并尝试运行PowerShell来导出具有用户邮箱的所有用户,我正在使用下面的PowerShell
Promise.all([counts, monthly, testeAt, atendData, testeEa, testeAtM]).then(([counts, monthly, testeAt, atendData, testeEa, testeAtM]) => {
const statusData = counts[0];
const monthlyData = monthly[0];
const atData = testeAt[0];
const dataAtend = atendData[0];
const dataEa = testeEa[0];
const atendAtM = testeAtM[0];
// console.log(testeAtM.length);
const data = {
...statusData, ...monthlyData, ...atData, ...dataAtend, ...dataEa, ...atendAtM,
user: req.user
};
console.log(JSON.stringify(data, null, 4));
但是,在创建用户邮箱时我们的环境并不一致,当我浏览上面导出的文件时,有一些共享邮箱显示为用户邮箱。
有没有一种方法可以在PowerShell命令中添加过滤器,属性或管道,以便仅“用户”字段可以提取数字值而非alpha值的数据?
这是因为我知道用户邮箱将仅以数字作为其SamAccountname示例Get-Mailbox -resultsize unlimited -recipienttypedetails UserMailbox | Get-MailboxPermission | export-csv c:\User_mailbox.csv -NoTypeInformation
,而不会是11368
。
谢谢
答案 0 :(得分:0)
我认为您可能需要显式过滤掉共享邮箱:
Get-Mailbox -resultsize Unlimited -RecipientTypeDetails UserMailbox |
Where-Object { @($_.RecipientTypeDetails) -notcontains 'SharedMailbox' } |
Get-MailboxPermission |
Export-Csv c:\User_mailbox.csv -NoTypeInformation
在您的情况下,也许-Filter
也会更精确:
Get-Mailbox -ResultSize Unlimited -Filter "RecipientTypeDetails -eq 'UserMailbox'"
修改
要也将SamAccountName过滤为数字,您可以执行以下操作( unested ):
Get-Mailbox -resultsize Unlimited -RecipientTypeDetails UserMailbox |
Where-Object { @($_.RecipientTypeDetails) -notcontains 'SharedMailbox' -and $_.SamAccountName -match '^\d+$'} |
Get-MailboxPermission |
Export-Csv c:\User_mailbox.csv -NoTypeInformation
或使用-Filter
Get-Mailbox -ResultSize Unlimited -Filter {(RecipientTypeDetails -eq 'UserMailbox') -and (SamAccountName -match '^\d+$')}