[英]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
解釋:
計算屬性是具有特定鍵值對的哈希表,允許您輸出自定義屬性名稱以及相應的自定義值。 它需要一個表示屬性名稱的鍵和一個表示您的值的鍵。 名稱可以表示為l
、 n
、 name
或label
。 值表達式可以是e
或expression
。
創建$hash
哈希表只是為了使計算出的屬性更具可讀性。 它只有一個與您所需的SideIndicator
值匹配的鍵,以便我們可以動態返回您需要的消息。
您可以將屬性名稱User
和Notice
更改為您想要的任何名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.