簡體   English   中英

Powershell AD 腳本無法導出到 csv

[英]Powershell AD script unable to export to csv

我寫了一個代碼,但在將其導出到 csv 時遇到了問題。 因此,代碼將 AD 用戶列表與通訊組或通訊組數量進行比較,並且效果很好。 我只能將其導出到 .csv。

Get-ADUser -filter {Enabled -eq $true} -SearchBase "OU=Location" |% { $_.samAccountName } | out-file "C:\users.txt"
Get-ADGroupMember -Identity "Company" |% { $_.samAccountName } | out-file "C:\Members.txt"

$List = Get-Content ("C:\Members.txt")
$ListOfUsers = Get-Content ("C:\users.txt")

$compare = Compare-Object -ReferenceObject $ListOfUsers -DifferenceObject $List -IncludeEqual 
foreach($Inp in $compare)
{
$notice = $Inp.InputObject 
    If ($Inp.SideIndicator -eq "==")
    {

        "$notice User is avaiable in Distribution List"
    }
    elseIf ($Inp.SideIndicator -eq "<=")  
    {
        "$notice User is not available in Distribution List "
    } 
} 

如果我在 export-csv 行的末尾添加它會給我這樣的東西:

圖片

我的問題是:如果用戶是否在通訊組內,如何正確導出它以接收 InputObject 作為名稱、SideIndicator 作為通知和比較運算符作為信息?

如果我們保留您當前的邏輯,您可以使用Select-Object 中的計算屬性獲得所需的結果。

$compare = Compare-Object -ReferenceObject $ListOfUsers -DifferenceObject $List -IncludeEqual
$hash = @{'==' = "{0} User is available in distribution list" -f $compare.inputobject
          '<=' = "{0} User is not available in distribution list" -f $compare.inputobject
}
$compare | Select-Object @{n='User';e={$_.InputObject}},@{n='Notice';e={$hash.($_.SideIndicator)}} |
    Export-Csv output.csv -NoType

解釋:

計算屬性是具有特定鍵值對的哈希表,允許您輸出自定義屬性名稱以及相應的自定義值。 它需要一個表示屬性名稱的鍵和一個表示您的值的鍵。 名稱可以表示為lnnamelabel 值表達式可以是eexpression

創建$hash哈希表只是為了使計算出的屬性更具可讀性。 它只有一個與您所需的SideIndicator值匹配的鍵,以便我們可以動態返回您需要的消息。

您可以將屬性名稱UserNotice更改為您想要的任何名稱。

暫無
暫無

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

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