2015-04-06 53 views
2

我有一個小腳本來從Exchange 2013服務器獲取所有用戶移動設備信息。如何從PowerShell中的get-mobiledevicestatistics獲取確切的用戶名

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 
+0

用戶名是什麼樣的?你能用那個更新這個問題嗎? – arco444

+0

它看起來像這個'domain.com /用戶/ OU /用戶名/ ExchangeActiveSyncDevices/iPhone'。所以我使用這個'表達式= {$ _。Identity -split「/」| select -last -3}'來得到名字,但它給了我所有的最後3個字...我只需要從最後的第三個 –

+0

在這種情況下,它不會是一個問題,但所有用戶名都在同一個ou?您可以從「Get-Mailbox」中獲得它,因爲您已經知道它。 – Matt

回答

3

我沒有環境來測試這個,但這不是你在找什麼?

Get-Mailbox -ResultSize Unlimited | ForEach { 
    $user = $_.SamAccountName 
    Get-MobileDeviceStatistics -Mailbox:$_.Identity | 
    Select-Object @{label="User" ; expression={$user}},DeviceOS, lastsuccesssync 
} 

應該輸出用戶爲每一個他們自己對自己的線路設備。然後,您可以輕鬆地將其導出到Export-CSV或某種類似的東西。

我們保存了$user,以便稍後在管道中可用。也可以使用Add-Member,但結果本來是一樣的。

+0

完美!謝謝 –

1

如果您有標識字段,它看起來像這樣

domain.com/Users/OU/UserName/ExchangeActiveSyncDevices/iPhone 

然後分裂的/並獲得第三個結果,你只需請求:

$_.Identity.Split("/")[3] 

>UserName 

PowerShell的開始與數爲零索引,因此請求在列表中的第四個條目,我們要求指數3

更新

OP提到OU水平可能會有所不同,這意味着他不能指望要求索引的固定頭寸。爲了適應這種情況,請嘗試使用此方法,該方法將查找ExchangeActiveSyncDevices的索引,然後在此之前選擇索引位置。

$_.Identity.Split('/')[($_.Identity.Split('/').Indexof('ExchangeActiveSyncDevices')-1)] 
+0

像@matt指出的,我不能使用[#] CUUS OU級別不確定。 –

+0

基於在ExchangeActiveSynDevices之前查找索引位置添加了一種不同的方法。 – FoxDeploy

-1
Get-Mailbox -resultsize unlimited|foreach {Get-MobileDeviceStatistics -Mailbox:$_.identity} |Select-Object @{l="user";e={$_.Identity.parent.parent.name}}, lastsuccesssync 
on e2k13 
相關問題