[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] [已解决]用正则式简化Powershell多项匹配

本帖最后由 aries215 于 2023-3-21 01:06 编辑

这行命令用于Windows无人值守unattend.xml 删除多个预装Appx,限制一行、不超259字符!
  1. 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实现的话,这么写有没有问题呢:
  1. cmd /q /c "Dism /Online /Get-ProvisionedAppxPackages | findstr /v /i "VCLibs Notepad Paint" | Dism /Online /Remove-ProvisionedAppxPackage"
复制代码
感谢!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

高版本powershell 的-notlike好像可以直接使用集合,windows powershell是不行的

-notlike是基于整体的,整体的正则也没短几个字符,只考虑部分的话就能短不少

cmd命令好像也是部分的,不考虑整体应该能用

TOP

本帖最后由 WHY 于 2023-3-20 22:31 编辑

在PowerShell 中,-like -notlike -include -exclude 这些运算符(Operator)使用PowerShell通配符匹配,
只有 -replace 和 -match、-notmatch 、-split 支持PowerShell正则表达式。
如果要简化脚本,可以这样:
  1. ?{$_.name -notmatch 'VCLibs|Notepad|Paint'}
复制代码
1

评分人数

TOP

回复 3# WHY
很好!感谢热心帮忙!

TOP

回复 2# Five66
学到了,感谢热心!

TOP

返回列表