0

要求是修剪输出。仅保留 Name 中双引号内引用的输出,并删除/避免较早的行/字符

从:

$R.Output = \\GBVServer1\root\cimv2:Win32_Group.Domain="Contoso",Name="Domain Users"

$R.Output = \\GBVServer1\root\cimv2:Win32_SystemAccount.Domain="GBVServer1",Name="INTERACTIVE"

至:

$R.Output = Domain Users

$R.Output = INTERACTIVE

有人可以协助使用 powershell 开关吗?

4

1 回答 1

0

您可以使用正则表达式执行此操作,以仅捕获这些字符串的引号之间的名称部分:

$regex = [regex]'(?i)Name="([^,]+)"'

$string = '\\GBVServer1\root\cimv2:Win32_Group.Domain="Contoso",Name="Domain Users"'
$R.Output = $regex.Match($string).Groups[1].Value  # --> Domain Users

$string = '\\GBVServer1\root\cimv2:Win32_SystemAccount.Domain="GBVServer1",Name="INTERACTIVE"'
$R.Output = $regex.Match($string).Groups[1].Value  # --> INTERACTIVE

正则表达式详细信息:

Name=" 从字面上匹配字符“Name="”
( 匹配下面的正则表达式并将其匹配捕获到反向引用编号 1
   [^,] 匹配任何不是“,”的字符
      + 一次到无限次,尽可能多次,按需回馈(贪婪)
)
" 从字面上匹配字符 """

使(?i)匹配不区分大小写

于 2020-06-01T19:18:09.540 回答