如何从 powershell 中的 get-mobiledevicestatistics 获取准确的用户名
how to get exact user name from get-mobiledevicestatistics in powershell
我有一个小脚本可以从 Exchange 2013 服务器获取所有用户移动设备信息。
Get-Mailbox -ResultSize Unlimited |
ForEach {Get-MobileDeviceStatistics -Mailbox:$_.Identity} |
Select-Object @{label="User" ; expression={$_.Identity}},DeviceOS, lastsuccesssync
我只想得到一个准确的用户名,而不是 AD 中的路径。我怎样才能在 expression={?}
中做到这一点
这是另一个脚本,它给了我用户名,但是属于用户的所有设备都没有分开,它们都在一行中...
$EASMailboxes = Get-CASMailbox -Filter {HasActiveSyncDevicePartnership -eq $True -and DisplayName -notlike "CAS_{*"} | Get-Mailbox
$EASMailboxes | Select-Object DisplayName, PrimarySMTPAddress, @{Name="Mobile Devices";Expression={(Get-MobileDeviceStatistics -Mailbox $_.Identity).DeviceOS}} |
Out-GridView
如果你有身份字段,看起来像这样
domain.com/Users/OU/UserName/ExchangeActiveSyncDevices/iPhone
然后在 /
上拆分并得到第三个结果,您只需请求:
$_.Identity.Split("/")[3]
>UserName
PowerShell 从数字 0 开始索引,因此要请求列表中的第四个条目,我们请求索引号 3。
更新
OP 提到 OU 级别可能会有所不同,这意味着他不能指望固定位置来请求索引。为了适应这种情况,试试这个方法,它会查找 ExchangeActiveSyncDevices 的索引,然后选择之前的索引位置。
$_.Identity.Split('/')[($_.Identity.Split('/').Indexof('ExchangeActiveSyncDevices')-1)]
我没有测试这个的环境,但这不是你要找的吗?
Get-Mailbox -ResultSize Unlimited | ForEach {
$user = $_.SamAccountName
Get-MobileDeviceStatistics -Mailbox:$_.Identity |
Select-Object @{label="User" ; expression={$user}},DeviceOS, lastsuccesssync
}
这应该在其自己的行中输出他们拥有的每个设备的用户。然后,您可以轻松地将其导出到 Export-CSV
或类似的东西。
我们保存 $user
以便稍后在管道中可用。也可以使用 Add-Member
但结果是一样的。
Get-Mailbox -resultsize unlimited|foreach {Get-MobileDeviceStatistics -Mailbox:$_.identity} |Select-Object @{l="user";e={$_.Identity.parent.parent.name}}, lastsuccesssync
on e2k13
我有一个小脚本可以从 Exchange 2013 服务器获取所有用户移动设备信息。
Get-Mailbox -ResultSize Unlimited |
ForEach {Get-MobileDeviceStatistics -Mailbox:$_.Identity} |
Select-Object @{label="User" ; expression={$_.Identity}},DeviceOS, lastsuccesssync
我只想得到一个准确的用户名,而不是 AD 中的路径。我怎样才能在 expression={?}
这是另一个脚本,它给了我用户名,但是属于用户的所有设备都没有分开,它们都在一行中...
$EASMailboxes = Get-CASMailbox -Filter {HasActiveSyncDevicePartnership -eq $True -and DisplayName -notlike "CAS_{*"} | Get-Mailbox
$EASMailboxes | Select-Object DisplayName, PrimarySMTPAddress, @{Name="Mobile Devices";Expression={(Get-MobileDeviceStatistics -Mailbox $_.Identity).DeviceOS}} |
Out-GridView
如果你有身份字段,看起来像这样
domain.com/Users/OU/UserName/ExchangeActiveSyncDevices/iPhone
然后在 /
上拆分并得到第三个结果,您只需请求:
$_.Identity.Split("/")[3]
>UserName
PowerShell 从数字 0 开始索引,因此要请求列表中的第四个条目,我们请求索引号 3。
更新
OP 提到 OU 级别可能会有所不同,这意味着他不能指望固定位置来请求索引。为了适应这种情况,试试这个方法,它会查找 ExchangeActiveSyncDevices 的索引,然后选择之前的索引位置。
$_.Identity.Split('/')[($_.Identity.Split('/').Indexof('ExchangeActiveSyncDevices')-1)]
我没有测试这个的环境,但这不是你要找的吗?
Get-Mailbox -ResultSize Unlimited | ForEach {
$user = $_.SamAccountName
Get-MobileDeviceStatistics -Mailbox:$_.Identity |
Select-Object @{label="User" ; expression={$user}},DeviceOS, lastsuccesssync
}
这应该在其自己的行中输出他们拥有的每个设备的用户。然后,您可以轻松地将其导出到 Export-CSV
或类似的东西。
我们保存 $user
以便稍后在管道中可用。也可以使用 Add-Member
但结果是一样的。
Get-Mailbox -resultsize unlimited|foreach {Get-MobileDeviceStatistics -Mailbox:$_.identity} |Select-Object @{l="user";e={$_.Identity.parent.parent.name}}, lastsuccesssync
on e2k13