我需要从运行命令时得到的结果中提取client_TargetText
和提取:AnotherTargetText_110953_140521
whoami /groups
Powershell 结果:
Group Name Type SID Attributes
========================================== ================ ============================================= ==================================================
Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group
BUILTIN\Users Alias S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\INTERACTIVE Well-known group S-1-5-4 Mandatory group, Enabled by default, Enabled group
CONSOLE LOGON Well-known group S-1-2-1 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users Well-known group S-1-5-11 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization Well-known group S-1-5-15 Mandatory group, Enabled by default, Enabled group
LOCAL Well-known group S-1-2-0 Mandatory group, Enabled by default, Enabled group
MYDOMAIN\GGM-FIRE-PC Group S-1-5-21-457414007-2867176591-488352320-6061 Mandatory group, Enabled by default, Enabled group
MYDOMAIN\myles_gp Group S-1-5-21-457414007-2867176591-488352320-12531 Mandatory group, Enabled by default, Enabled group
MYDOMAIN\GGM-RDP Group S-1-5-21-457414007-2867176591-488352320-13873 Mandatory group, Enabled by default, Enabled group
MYDOMAIN\client_TargetText Group S-1-5-21-457414007-2867176591-488352320-7924 Mandatory group, Enabled by default, Enabled group
MYDOMAIN\AnotherTargetText_110953_140521 Group S-1-5-21-457414007-2867176591-488352320-13947 Mandatory group, Enabled by default, Enabled group
Authentication authority asserted identity Well-known group S-1-18-1 Mandatory group, Enabled by default, Enabled group
Mandatory Label\Medium Mandatory Level Label S-1-16-8192
PS C:\Users\test.dev>
我将如何去抓取client_TargetText
和删除client_
它,让它变得公正TargetText
,然后$Param1
在下面的脚本中制作它?(client_
总是出现在我需要为 $Param1 抓取的文本中)
那么我将如何去抓取AnotherTargetText_110953_140521
以便可以$Param2
在下面的脚本中制作它?(在这些 AD 组中,所需的文本$Param2
始终以 为后缀)6digits_6digits
我的目标是以某种方式将此文本发送到我用于在用户桌面上创建服务器快捷方式的脚本中。
运行时每个用户的结果会有所不同,whoami
所以我认为唯一可以使用的通配符是client_
and 6digits_6digits
。任何帮助我找到这个答案的人都非常感谢,因为我正在尝试了解这将如何工作但无法弄清楚。
下面的脚本是成功解析这两条文本并将它们转换为$Param1
and后的预期结果$Param2
:
function set-shortcut {
param ( [string]$SourceLnk, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($SourceLnk)
$Shortcut.TargetPath = $DestinationPath
$Shortcut.Save()
}
try{
$Param1 = TargetText
$Param2 = AnotherTargetText_110953_140521
$SourcePath = \\server\data\designs\$Param1\$Param2\data_store"
set-shortcut "%USERPROFILE%\Desktop\data_store.lnk" "$SourcePath"
"This worked"
pause
}
catch
{
"This didn't work"
}
pause
如果这是使用 PowerShell 运行的:
""
)。$env:USERPROFILE
.我真的无法理解你想要完成的事情,所以我做了我认为你的意思。至于你的功能参数,我仍然迷路了。
幸运的是,
whoami
有一个/FO CSV
选项,我们可以使用它来使用ConvertFrom-Csv
. 在对象转换之后,我们可以使用一些正则表达式匹配来获得您在假设这正是名称的显示方式之后的内容。请注意 , 的双重赋值$Param1
,$Param2
因为它将结果分成这两个变量。此外,为了避免使用管道,我使用了.Where()\{}
运算符(是的,它被认为是运算符)来加快解析速度。我建议查看@Lee_Daily 提到的 cmdlet,以包括他提供的方法来获得您所追求的结果。
编辑: 您可以尝试将过滤分成两个变量以进行显式过滤。虽然不是最好的解决方案,但它应该可以工作: