![](/img/trans.png)
[英]Powershell Script for adding Active Directory users to groups
[英]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.txt
的users.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.