2016-09-26 69 views
0

我需要過濾並且不從AD獲取包含X500的值。這將導出一切美麗,但我不需要任何東西,但smtp條目。我將有條目看起來像這樣的,這是我需要將數據導出爲CSV,但先將其過濾

SMTP:[email protected]

我有象下面這樣的一個我不想條目。

X500:/ O =域/ OU = Exchange管理 集團(FYDPDLT)/ cn =收件人/ CN =郵件

$Users = Get-ADUser -Filter "mail -like '*@*'" -Properties proxyAddresses | 
select name, @{ L = 'ProxyAddress_1'; E = { $_.proxyaddresses[0] } }, 
    @{ L = 'ProxyAddress_2'; E = { $_.ProxyAddresses[1] } }, 
    @{ L = 'ProxyAddress_3'; E = { $_.ProxyAddresses[2] } } | Export-Csv c:\temp\proxyadlist.csv -Notypeinformation -force 
+0

代理地址是否必須在各自的列中出現?如果這沒有關係,那將更容易。如果您在進行輸出之前首先計算所需的最大列數,則可以更容易地處理變量colomn輸出。 – Matt

+0

沒有足夠的信息,但你應該使用'where'來擺脫你不想要的。我不知道足以幫助你寫出一個好的條件。 – nkasco

+0

@nkasco _could_工作,但會給輸出文件中的列間隙。 – Matt

回答

0

可能會進一步細化,但我鞭打它,它應該做的伎倆。我想確保CSV沒有更多需要的列。希望展示我認爲您需要的基礎知識。

# Get all users 
$users = Get-ADUser -Filter "mail -like '*@*'" -Properties proxyAddresses 

# Calculate the number of columns needed for wanted proxyaddresses 
$maximumProxyAddresses = ($users | ForEach-Object{($_.proxyaddresses -match "^smtp").count} | Measure-Object -Maximum).Maximum 

# Build a new object for each user that contains each address we need. 
$users | ForEach-Object{ 
    $singleUser = $_ 
    $props = @{Name=$singleUser.Name} 

    # Add each proxy address as its own column 
    0..($maximumProxyAddresses - 1) | ForEach-Object{ 
     $props."ProxyAddress$_" = ($singleUser.proxyAddresses -match "^smtp")[$_] 
    } 

    # Send the hashtable as an object down the pipe. 
    [pscustomobject]$props 
# Order of variables needs to be corrected. 
} | Select (@("name") + (0..($maximumProxyAddresses - 1) | Foreach-object{"proxyaddress$_"})) 
+0

中的smtp地址的用戶感謝Matt。明天我進入辦公室時我會試試這個! – NobleMan

+0

像往常一樣馬特,你給我提供了我正在尋找的東西! – NobleMan

0

你的意思是你要嗎?

$ldapFilter = "(&(proxyAddresses=smtp:*)(proxyAddresses=x500:*))" 
Get-ADUser -LDAPFilter $ldapFilter -Properties proxyAddresses | ForEach-Object { 
    $_.proxyAddresses | Where-Object { $_ -match '^smtp:' } 
} 

這得到那些在proxyAddresses屬性都smtpx500所有用戶對象,則僅輸出smtp地址。

+0

我想他想過濾掉那些。 _I有下面那些我不想要的條目._ – Matt

+0

我試過但它沒有工作 – NobleMan

+0

$ Users = Get-ADUser -LDAPFilter「(proxyAddresses = SMTP:*)」-Properties proxyAddresses | – NobleMan