找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16061|回复: 5

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

[复制链接]
发表于 2023-3-20 10:58:01 | 显示全部楼层 |阅读模式
本帖最后由 aries215 于 2024-8-28 19:39 编辑

unattend.xml 默认情况下是禁止PowerShell脚本运行的,所以只能先运行批处理!



这行命令用于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"
复制代码
感谢!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2023-3-20 18:48:55 | 显示全部楼层
高版本powershell 的-notlike好像可以直接使用集合,windows powershell是不行的

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

cmd命令好像也是部分的,不考虑整体应该能用
发表于 2023-3-20 21:58:34 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
aries215 + 1 感谢热心帮

查看全部评分

 楼主| 发表于 2023-3-21 00:31:08 | 显示全部楼层
回复 3# WHY
很好!感谢热心帮忙!
 楼主| 发表于 2023-3-21 00:31:30 | 显示全部楼层
回复 2# Five66
学到了,感谢热心!
 楼主| 发表于 2024-8-28 19:39:47 | 显示全部楼层
unattend.xml 默认情况下是禁止PowerShell脚本运行的,所以只能先运行批处理!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 06:27 , Processed in 0.016050 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表