2014-11-25 119 views
0

我是新來的powershell,但實際上我需要一個腳本,所以我開始閱讀我自己的東西,發現PowerShell。從SAMaccount獲取用戶電子郵件地址

我有一個用戶名列表,如:

  • xyxz
  • 域名\ xyxz.xyxc

這個腳本應該從我的用戶列表搜索所有SAM帳戶,並給我的電子郵件不會忽略每一個SAM帳戶。

Get-Content C:\ Users \ xxxxx \ Desktop \ Users.txt | forEach Get-ADUser「我不知道如何指定用戶名」選擇郵件| Export-Csv output.csv }

這是我寫的腳本知道的,但我不知道如何完成它以使其工作。我知道這件事做得不好,但我不想在這裏寫一些文字而不自己做一些事情。

回答

0

你是那種親密

Get-Content C:\Users\xxxxx\Desktop\Users.txt | forEach { Get-ADUser $_ -properties EmailAddress} | select -ExpandProperty EmailAddress | Out-File output.csv 

應該做的伎倆(如果您的TXT文件包含SAMID,每行只有一個)。

您可以通過使用$_訪問管道內的對象。同樣爲了得到一個屬性的字符串值選擇你必須使用-ExpandProperty

在這種情況下,你還可以選擇屬性()移轉特別,因爲只有有限的一組屬性將被報告在默認情況下,以減輕工作負擔(這是由指定-properties參數來完成。

+0

做工精細我可以問你更多的東西?我想測試Users.txt,所以每當有像xx-xx \ abc這樣的域名時,它應該對它進行修剪。所以最後只有abc沒有xx-xx \。 – Timo 2014-11-25 11:59:19

+0

@timo這裏是一篇文章,應該幫助你做到這一點:http://technet.microsoft.com/en-us/library/ee692804.aspx – Paul 2014-11-25 13:09:23

+0

最後的改進,腳本工作正常。經過測試,我遇到了腳本問題,因爲有些用戶沒有電子郵件。那麼有沒有一種方法可以在沒有電子郵件的情況下跳過這些人,也許可以將它放入seperat輸出文件中? – Timo 2014-11-25 13:20:54

0

你的命令但是,Get-ADUser似乎並不接受UPN or Down-Level Logon Name格式的用戶名
要查詢除當前用戶登錄的域以外的域,需要使用-Server選項。該選項接受FQDN或NetBIOS域名 另一件事:默認情況下,Get-ADUser只返回默認屬性集(請參閱this列表以知道默認屬性),並且用戶的電子郵件地址不是默認屬性,所以我們需要使用-Properties選項將其添加到返回的值中。

的命令是這樣的:

$defaultDomain = $env:USERDOMAIN 
$usersFilePath = C:\Users\xxxxx\Desktop\Users.txt 
Get-Content $usersFilePath | %{ 
    if ($_.Contains("\")) { 
    @{username = $_.Split("\")[1]; server = $_.Split("\")[0]} 
    } 
    elseif ($_.Contains("@")) { 
     @{username = $_.Split("@")[0]; server = $_.Split("@")[1]} 
    } 
    else { 
     @{username = $_; server = $defaultDomain} 
    } 
} | %{ Get-ADUser -Identity $_.username -Properties Mail -Server $_.server} | select -ExpandProperty mail 
+0

偉大的信息,你給我。實際上我有點難以閱讀。我應該更多地閱讀PowerShell的功能。 – Timo 2014-11-25 12:03:05

相關問題