簡體   English   中英

如何使用用戶列表編寫帶有 For 循環的 Powershell 腳本以打印出 Active Directory 信息

[英]How to write a Powershell Script with a For-loop using a List of Users to Print Out Active Directory Information

所以我有一個用戶列表,我需要使用 Powershell 中的 RSAT 工具和 GetAD-User 模塊進行驗證。 結果,我確定以下命令將提取用戶信息,並且我將另一個文件傳遞給需要驗證的用戶。 以下命令將起作用並為我提供用戶信息,並查看 email 是否存在:

Get-ADUser -filter * -properties EmailAddress -SearchBase 'DC=xxx-xxxx,DC=xxx,DC=xx,DC=us'| select-object Name, EmailAddress | select-string 'doe,john'

因此,我嘗試使用以下方法進行循環:

cat .\PD.txt | ForEach-Object {Get-ADUser -filter * -properties EmailAddress -SearchBase 'DC=xx-xxxx,DC=xxx,DC=xx,DC=us'| select-object Name, EmailAddress | select-string '$_'}

**出於安全原因,我在 AD 名稱方面省略了一些 DC 信息。

在 PD.txt 中,我將有一個文本文件,其中包含姓氏、每行名字的用戶名。 但是,就信息而言,沒有任何東西可以打印出來。 如果我在沒有“$_”和 forEach-Object 命令的情況下這樣做,它會起作用,但沒有任何東西打印回來。 我的forloop錯了嗎?

我嘗試了一種不同的方式,但仍然無法使用撇號讓字符串以不同的方式傳遞,方法是將其寫入名為Real.txtusers.txt文件中。 雖然,當我輸入GetAD-User命令時,我可以通過它進行循環,但它不起作用。 但是,我認為我的 for 循環可能有問題,但不確定它是什么。

PS C:\Users\richard.barrett\Git> cat .\Real.txt | ForEach-Object {echo $_}
'Doe, John'
'Doe, Jane'

比較 For 循環:

PS C:\Users\richard.barrett\Git> cat .\Real.txt | ForEach-Object {Get-ADUser -filter * -properties EmailAddress -SearchBase 'DC=xx-xxxx,DC=xxx,DC=xx,DC=us'| select-object Name, EmailAddress | select-string $_}

所以我發現了我的問題的問題。 最后,我沒有將變量正確傳遞到選擇字符串中。 由於我是從.txt文件中獲取的,因此我決定設置一個變量並放棄 for 循環,只在文件上直接調用列表,而不是為每個用戶迭代Get-ADUser命令……非常慢。 結果,以下內容對我有用:

echo "Users for AD Verification" ; 
echo "============ LIST ============" ; 
cat .\PD.txt | ForEach-Object {echo $_} ; 
echo "============ END LIST ========" ;
echo "Executing Active Directory Verification" ; 
echo "============ PROCESS =========" ;
$list = cat .\PD.txt; 
Get-ADUser -filter * -properties EmailAddress -SearchBase 'DC=del-valle,DC=k12,DC=tx,DC=us'| select-object Name, EmailAddress | select-string $list
echo "============ END PROCESS =====" ;

這給了我在.\PD.txt中定義的列表。

盡管我最初猶豫不決,但我還是包含了我的身份 OU,以便用戶了解 OU 應該在命令中的位置 go 以在 AD 中拉出用戶及其 email 帳戶。

希望這對其他人有所幫助,我經常被要求在我的 Active Directory 中驗證用戶。

我忘了添加,但最初的問題是我如何將變量放入我不應該使用撇號的select-string中。 這是實際的命令,它也可以工作,但它會稍微長一些,因為它會迭代並為每一行執行一個命令......真的很長。

cat .\PD.txt | ForEach-Object {Get-ADUser -filter * -properties EmailAddress -SearchBase 'DC=del-valle,DC=k12,DC=tx,DC=us'| select-object Name, EmailAddress | select-string $_}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM