2017-04-18 37 views
1

我正在使用powershell命令net user userID /domain獲取特定用戶的本地組成員關係全局組成員關係。我從這個命令中獲得很多信息,其中我只需要本地組成員和全局組成員信息。Grep多行值

因此,我使用命令net user userID /domain | Out-String -Stream | Select-String 「Global Group memberships」來過濾只有全局組成員信息。這裏出現了一個問題,我只能得到一行中存在多行數據的數據。

請幫助我使用powershell命令從本命令中篩選出特定用戶的本地組成員資格和全局組成員資格的完整列表。

如果還有任何其他命令只提取這些信息也是受歡迎的。我嘗試了許多沒有解決的命令。我正在使用Windows Server 2008 R2和PSVersion 4.0。任何幫助將不勝感激。

+0

因爲你有一個域,所以使用'Get-ADUser'和整個ActiveDirectory模塊。 – Vesper

+0

我不確定它是否有效,但您是否嘗試過「| format-list」 – guiwhatsthat

+0

Powershell不接受命令「Get-ADUser」。似乎它不支持Get-ADUser。它發生錯誤「Get-ADUser:術語'Get-ADUser'不被識別爲cmdlet,函數,腳本文件或可操作程序的名稱」@Vesper – Deepu

回答

1

這讓你一點點接近你所需要的(但是這將是一個列表中的所有組的名稱和類別的標題):

(((net user $env:USERNAME /domain | Out-String -Stream).trim() | Select-String '\*') -split '\*').trim() | Where {$_ -ne ''} 

你可能會進一步細化這個解決方案產生改爲兩個不同的列表。

說明:

  • 用途trim()從字符串輸出中刪除空行。
  • Uses Select-String '\*'選擇所有在其中都帶有星號字符的字符串(因爲所有組的輸出都以*開頭)。 \這裏是一個轉義字符,因爲正則表達式。
  • 再次使用trim()刪除組名稱周圍不必要的空格。使用Where {$_ -ne ''}刪除輸出中的空白行。

我不同意,如果你有一個域,你會得到一個更好的結果與Active Directory的cmdlet(如Get-ADUser),你需要安裝的廣告管理工具和/或Active Directory中的PowerShell模塊使用。

您通過net user獲得的組名的輸出被截斷,因此您沒有得到真正的列表。

+1

完美!這就是我正在尋找的東西:) 很好的解釋。對我來說很有意義。 非常感謝,並保持支持! – Deepu