我試圖通過抓取用戶的 AD 組、他們的描述來進行網路訪問控制審計,然后以本示例所示的方式輸出它們:
[用戶]
@[1]組:@[1]組描述@[2]...
@[3]...
以下是我目前所擁有的。
$UserGroups = @{
User = Read-Host -Prompt "What user do You want to look up Access for?"
Groups = (Get-ADUser $User -Properties MemberOf).MemberOf
GroupsDescriptions = (Get-ADUser $User -Properties MemberOf).MemberOf | % {(Get-ADGroup $_ -Properties *).description}
}
$Object = New-Object psobject -Property $UserGroups
$Object | format-table | Export-Csv c:\tmp\test.csv
雖然輸出很奇怪。我不明白。以下是 Get-Content C:tmp\test.csv 的結果
#TYPE Microsoft.PowerShell.Commands.Internal.Format.FormatStartData "ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo","shapeInfo","groupingEntry" "033ecb2bc07a4d43b5ef94ed5a35d280",,,,"Microsoft.PowerShell.Commands。 Internal.Format.TableHeaderInfo”, “9e210fe47d09416682b841769c78b8a3” ,,,,, “27c87ef9bbda4f709f6b4002fa4af63c” ,,,,, “4ec4f0187cb04f4cb6973460dfe252df” ,,,,, “cf522b78d86c486691226b40aa69e95c” ,,,,,
我曾嘗試使用 Out-file 輸出到 .txt 檔案,但我總是在最后用 ... 截斷每個屬性。在將資料傳輸到匯出行之前格式化資料時,我使用了 -Autosize 和 -Expand。
任何建議或建議都會非常有幫助。
稍后我將查看的 內容遍歷 PowerShell 物件中的每一行并提取變數 Powershell 和 ActiveDirectory - 嘗試輸出組中的用戶及其成員資格 嘗試輸出表格時輸出檔案會裁剪我的文本 謝謝!
uj5u.com熱心網友回復:
如前所述,僅使用
Format-*
cmdlet 來生成用于顯示的輸出,絕不用于輸出以后必須以編程方式處理的資料。什么Format-Table
輸出是表示格式化指令的物件,它們的屬性最終出現在您的 CSV 檔案中 - 請參閱此答案以獲取更多資訊。為了在 CSV 輸出中包含集合(陣列),您必須使用自選分隔符將它們轉換為單個字串。否則,
Export-Csv
只需呼叫.ToString()
集合物件本身,這將產生集合的型別名稱,并且沒有關于其元素的資訊。
因此,請使用類似以下的內容,它', '
用作分隔符字串,以分別在單個列中表示組名稱和描述:
$UserGroups = [pscustomobject] @{
User = ($user = Read-Host -Prompt "What user do You want to look up Access for?")
Groups = ($groups = (Get-ADUser $User -Properties MemberOf).MemberOf) -join ', '
GroupsDescriptions = (
$groups | ForEach-Object { (Get-ADGroup $_ -Properties *).Description }
) -join ', '
}
$UserGroups | Export-Csv c:\tmp\test.csv
筆記:
[pscustomobject] @{ ... }
用于直接構造自定義物件,這是自 PowerShell v3 以來可用的語法糖,比New-Object
呼叫更簡單、更高效。為了
Read-Host
在物件定義的后續屬性中使用呼叫的結果,您必須將其快取在 aux. 變數$user
(請注意,將賦值包含在(...)
傳遞其值。同樣,
Get-ADUser
呼叫的結果快取在 aux 中。variable$groups
,因此它不必在GroupsDescriptions
值中重復。然而,正如zett42 所指出的,將
$user = ...
and$groups = ...
賦值分開陳述句并將它們放在物件構造之前可能會更清晰。
uj5u.com熱心網友回復:
問題是您先Format-Table
通過管道傳輸到Export-Csv
. 僅Format-Table
用于在螢屏上顯示內容。解決方法是洗掉它。
$Object | Export-Csv c:\tmp\test.csv
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/454884.html