Powershell Grep多行值

Powershell Grep多行值,powershell,powershell-4.0,Powershell,Powershell 4.0,我正在使用powershell命令net user userID/domain获取特定用户的本地组成员资格和全局组成员资格。我从这个命令中获得了很多信息,其中我只需要本地组成员身份和全局组成员身份信息 因此,我使用命令net user userID/domain | Out String-Stream | Select String“Global Group memberships”仅过滤出全局组成员身份信息。这里出现了这样一个问题:我只获取一行中的数据,而多行中存在数据 请帮助我使用power

我正在使用powershell命令
net user userID/domain
获取特定用户的本地组成员资格全局组成员资格。我从这个命令中获得了很多信息,其中我只需要本地组成员身份和全局组成员身份信息

因此,我使用命令
net user userID/domain | Out String-Stream | Select String“Global Group memberships”
仅过滤出全局组成员身份信息。这里出现了这样一个问题:我只获取一行中的数据,而多行中存在数据

请帮助我使用powershell命令,该命令将从该命令中筛选出特定用户的本地组成员身份和全局组成员身份的完整列表


如果有任何其他命令只获取此信息,也欢迎使用。我尝试了很多命令,但都没有成功。我使用的是WindowsServer2008R2和PSVersion4.0。任何帮助都将不胜感激。

这将使您更接近您需要的内容(但这将是一个包含所有组名和类别标题的单一列表):

您可能会进一步细化此解决方案,以生成两个不同的列表

说明:

  • 使用
    trim()
    从字符串输出中删除空行
  • 使用选择字符串“\*”
    选择所有包含星号字符的字符串(因为所有组的输出都以*开头)。\here是一个转义字符,因为正则表达式
  • 再次使用
    trim()
    删除组名周围不必要的空格
  • 使用
    Where{$\ne'}
    从输出中删除空行
我同意,如果您有一个域,那么使用Active Directory cmdlet(如
get ADUser
)会获得更好的结果,您需要安装AD管理工具和/或Active Directory PowerShell模块才能使用


您通过
net user
获得的组名输出被截断,因此无法获得非常真实的列表。

使用
get ADUser
和整个ActiveDirectory模块,因为您有一个域。我不确定它是否有效,但您是否尝试过“| format list”Powershell不接受命令“get ADUser”。似乎它不支持获得ADUser。它抛出错误“Get-ADUser:术语“Get-ADUser”未被识别为cmdlet、函数、脚本文件或可操作程序的名称“@VesperTried”| format list”。没有成功:(@guiwhatssthat
Format List
没有帮助。您遇到的问题是,
net
命令返回一个数组,其中每一行都是一个元素。虽然全局组成员资格列表跨越多行,但只有第一行包含该字符串并返回。请检查Get
Get ADUser
是否可用。此操作将我将返回一个对象,允许您使用
选择
来获取所需的属性。完美!!这正是我想要的:)非常好的解释。对我来说很有意义。非常感谢并继续支持!!!
(((net user $env:USERNAME /domain | Out-String -Stream).trim() | Select-String '\*') -split '\*').trim() | Where {$_ -ne ''}