簡體   English   中英

如何從CSV列中讀取用戶名並將Active Directory中的相關數據添加到他們的行中?

[英]How can I read in user names from a CSV column and add relevant data from Active Directory to their row?

使用這個奇妙的腳本 ,我能夠掃描計算機列表,並將其本地管理員帳戶輸出到一個漂亮的CSV文件中。 下面是一個示例:

ComputerName     LocalGroupName  Status      MemberType      MemberDomain    MemberName
Computer1        Administrators  SUCCESS     LocalUser       Computer1       LocalBob
Computer1        Administrators  SUCCESS     DomainUser      DomainXYZ       User99874
Computer1        Administrators  SUCCESS     DomainGroup     DomainXYZ       Group123
Computer2        Administrators  SUCCESS     DomainGroup     DomainXYZ       GroupABC
Computer2        Administrators  SUCCESS     DomainUser      DomainXYZ       User18834

我想在上述腳本的末尾添加更多Powershell腳本,以將活動目錄中本地管理員的“部門”和“名稱”字段添加到列中,這將有助於生成有關誰擁有本地管理員以及原因的更有意義的報告。 以下是我希望輸出看起來像的示例:

ComputerName     LocalGroupName  Status      MemberType      MemberDomain    MemberName    Name    Department
Computer1        Administrators  SUCCESS     LocalUser       Computer1       LocalBob
Computer1        Administrators  SUCCESS     DomainUser      DomainXYZ       User99874     Nick    IT
Computer1        Administrators  SUCCESS     DomainGroup     DomainXYZ       Group123
Computer2        Administrators  SUCCESS     DomainGroup     DomainXYZ       GroupABC
Computer2        Administrators  SUCCESS     DomainUser      DomainXYZ       User18834     Adam    Sales

作為對Powershell還是很陌生的人,我可以理解從AD提取信息並創建新CSV文件的示例,但是我似乎無法確定如何將這些詳細信息附加到預先存在的CSV文件中。 我的解決方法是:

  1. 導入CSV文件

  2. MemberName列的每一行中提取用戶名

  3. 針對AD中的每個用戶的每個相關字段執行查詢

  4. 使用該用戶的查詢結果填充“ 名稱”和“ 部門”行。

希望這一切都有道理。 我敢肯定這一切都是很基本的,但是我已經盯着看了一段時間了,我不確定從哪里開始。

謝謝!

如果您的計算機上安裝了RSAT (建議這樣做),則從AD中提取信息很簡單:

$sInFile = "C:\input.csv" # Change to actual path
$sOutFile = "C:\ouput.csv" # Change to actual path

Import-Module -Name "ActiveDirectory"
# If you don't need last names, remove "sn" from the collection.
$cProperties = @("givenName", "sn", "depatment")

$cCsv = Import-Csv -Path $sInFile

foreach ($oRow in $cCsv) {
    if ($oRow.MemberType -eq "DomainUser") {
        $oUser = Get-ADUser -Identity $oRow.MemberName -Properties $cProperties
        foreach ($sProperty in $cProperties) {
            $oRow | Add-Member -MemberType "NoteProperty" -Name $sProperty `
                -Value $oUser.$sProperty
        }
    }
}   

$cCsv | Export-Csv -Path $sOutFile -NoTypeInformation -Encoding "UTF8"

暫無
暫無

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

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