标题: [问题求助] [已解决]用正则式简化Powershell多项匹配 [打印本页]
作者: aries215 时间: 2023-3-20 10:58 标题: [已解决]用正则式简化Powershell多项匹配
本帖最后由 aries215 于 2024-8-28 19:39 编辑
unattend.xml 默认情况下是禁止PowerShell脚本运行的,所以只能先运行批处理!
这行命令用于Windows无人值守unattend.xml 删除多个预装Appx,限制一行、不超259字符!- Powershell -c "Get-AppxProvisionedPackage -online | where-object {$_.name -notlike "*.VCLibs*" -and $_.name -notlike "*Notepad*" -and $_.name -notlike "*Paint*"} | Remove-AppxProvisionedPackage -online"
复制代码
where-object 后面排除多个名称应该怎么用正则式简化?该用notlike、notmatch 还是 exclude 高效?
补充:不用PowerShell实现的话,这么写有没有问题呢:- cmd /q /c "Dism /Online /Get-ProvisionedAppxPackages | findstr /v /i "VCLibs Notepad Paint" | Dism /Online /Remove-ProvisionedAppxPackage"
复制代码
感谢!
作者: Five66 时间: 2023-3-20 18:48
高版本powershell 的-notlike好像可以直接使用集合,windows powershell是不行的
-notlike是基于整体的,整体的正则也没短几个字符,只考虑部分的话就能短不少
cmd命令好像也是部分的,不考虑整体应该能用
作者: WHY 时间: 2023-3-20 21:58
本帖最后由 WHY 于 2023-3-20 22:31 编辑
在PowerShell 中,-like -notlike -include -exclude 这些运算符(Operator)使用PowerShell通配符匹配,
只有 -replace 和 -match、-notmatch 、-split 支持PowerShell正则表达式。
如果要简化脚本,可以这样:- ?{$_.name -notmatch 'VCLibs|Notepad|Paint'}
复制代码
作者: aries215 时间: 2023-3-21 00:31
回复 3# WHY
很好!感谢热心帮忙!
作者: aries215 时间: 2023-3-21 00:31
回复 2# Five66
学到了,感谢热心!
作者: aries215 时间: 2024-8-28 19:39
unattend.xml 默认情况下是禁止PowerShell脚本运行的,所以只能先运行批处理!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |