regex Powershell -将变量插入另一个变量

pobjuy32  于 2023-05-01  发布在  Shell
关注(0)|答案(1)|浏览(81)

使用sc sdshow <servicename>,我可以查询该服务的当前ACL。例如:
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;RPWPCR;;;S-1-5-21-1188791649-1212328039-3264839704-1028)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
我将上面的返回值设置为变量$acl。使用不同的脚本,我可以查询用户sid,然后创建一个新的ACE,设置为变量$ace:
(A;;RPWPCR;;;S-1-5-21-1188791649-1212328039-3264839704-1027)
然而,我知道需要做的是将这个新的ACE插入ACL中,就在D:在一开始,我需要通过PowerShell来完成这一点。我知道在字符串的开头或结尾添加它很容易,但我无法弄清楚如何在D之后添加它:

mrwjdhj3

mrwjdhj31#

很可能有一种正确的方法来完成您要做的事情,但为了回答您的问题,您可以使用以下替换模式将$ace插入到D:之后:

$acl = 'D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWP....'
$ace = '(A;;RPWPCR;;;S-1-5-21-1188791649-1212328039-3264839704-1027)'
$acl -creplace '(?<=^D:)', $ace

甚至不需要正则表达式,你可以使用.Insert方法:

$acl.Insert(2, $ace)

相关问题