gpt4 book ai didi

regex - 选择字符串以仅显示返回行的特定部分

转载 作者:行者123 更新时间:2023-12-04 11:44:03 25 4
gpt4 key购买 nike

我正在尝试在 Powershell 中获取管道选择字符串命令,以仅返回我正在搜索的内容,并在末尾添加一些额外信息。这是我目前所拥有的:

PS H:\> gwmi win32_LoggedOnUser -computer server | select-string -pattern "domain" | select-string -pattern "Admin" -NotMatch

\\server\root\cimv2:Win32_LoggedOnUser.Antecedent="\\\\.\\root\\cimv2:Win32_Account.Domain=\"domain\",Name=\"user1\"",Dependent="\\\\.\\root\\cimv2:Win32_LogonSession.LogonId=\"44946387\""
\\server\root\cimv2:Win32_LoggedOnUser.Antecedent="\\\\.\\root\\cimv2:Win32_Account.Domain=\"domain\",Name=\"user2\"",Dependent="\\\\.\\root\\cimv2:Win32_LogonSession.LogonId=\"41485153\""
\\server\root\cimv2:Win32_LoggedOnUser.Antecedent="\\\\.\\root\\cimv2:Win32_Account.Domain=\"domain\",Name=\"user3\"",Dependent="\\\\.\\root\\cimv2:Win32_LogonSession.LogonId=\"46401036\""
\\server\root\cimv2:Win32_LoggedOnUser.Antecedent="\\\\.\\root\\cimv2:Win32_Account.Domain=\"domain\",Name=\"user4\"",Dependent="\\\\.\\root\\cimv2:Win32_LogonSession.LogonId=\"40161073\""
\\server\root\cimv2:Win32_LoggedOnUser.Antecedent="\\\\.\\root\\cimv2:Win32_Account.Domain=\"domain\",Name=\"user5\"",Dependent="\\\\.\\root\\cimv2:Win32_LogonSession.LogonId=\"46557830\""

所以我已经找到了我要找的东西,但我想缩短命令实际显示给我的内容。最好我只希望看到:

Domain\user1
Domain\user2

但是我不知道该怎么做。我最接近的是通过管道将另一个命令“选择匹配项”传递到最后。我读过正则表达式可能是我遇到的问题的答案。

在此先感谢您的帮助。

最佳答案

请使用如下内容:

(gwmi win32_LoggedOnUser) | %{[void]($_.Antecedent -match 'Domain="(\w+)",Name="(\w+)"'); "{0}\{1}" -f $matches[1],$matches[2]}

避免使用太多 select-string - 这就像 bash 中所有的 grep、sed、awk、cut voodoo,我相信 Powershell 会避免使用高保真对象。尽可能多地使用对象及其属性。是的,并不总是可以使用它们,我们求助于 select-string 或其他字符串操作,但在最后可能的步骤之前尽量避免使用它们。使 Powershell 编程整洁、简单且无错误 IMO。

关于regex - 选择字符串以仅显示返回行的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7028080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com