我编写了一个脚本,用于从Active Directory和Exchange返回一些详细信息,然后将这些详细信息放入数组中。
问题是Exchange部分正在覆盖数组中的现有值,而我希望它基本上为Exchange数据创建一个新列并将其放在那里。
这是脚本:
$adusers = Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate, createTimeStamp, mail |
Where-Object { $_.Name -like $_."Name" } |
Select Name, SamAccountName, LastLogonDate, createTimeStamp, mail
$adusers | ForEach-Object {
$mailboxstats = Get-Mailbox $_.mail |
Get-MailboxStatistics |
Select-Object TotalItemSize
$adusers += $mailboxstats
}
return $adusers
答案 0 :(得分:1)
使用calculated property作为邮箱大小。此外,条件$_.Name -like $_."Name"
始终为true,因此您只需删除Where-Object
过滤器,并且不需要return
关键字,因为PowerShell函数会返回所有未捕获的输出Success output stream无论如何。
将您的代码更改为以下内容:
Get-ADUser -Filter {Enabled -eq $true} -Properties LastLogonDate, createTimeStamp, mail |
Select Name, SamAccountName, LastLogonDate, createTimeStamp, mail,
@{n='MailboxSize';e={
Get-Mailbox $_.mail |
Get-MailboxStatistics |
Select-Object -Expand TotalItemSize
}}
答案 1 :(得分:0)
使用Select-Object
修改集合中的项目:
return $adusers | Select *,@{Name='TotalItemSize';Expression={
$mailboxstats = Get-Mailbox $_.mail |
Get-MailboxStatistics |
Select-Object -Expand TotalItemSize}}
答案 2 :(得分:0)
非常感谢你。这完全成功了。
谢谢!!!
{{1}}