Regex 循环、替换、拆分、正则表达式匹配的Powershell

Regex 循环、替换、拆分、正则表达式匹配的Powershell,regex,powershell,replace,split,Regex,Powershell,Replace,Split,正如您希望看到的,我的脚本尝试从pnpitil-e命令中提取oem*.inf值。我试图让每个oem.inf文件成为For循环中自己的变量。我的脚本有点乱,包含了所有替换和拆分,但这部分似乎得到了我需要的命令部分。我对$I中的数据有问题。看起来脚本有时会工作,有时不会。我希望pnputil-d oem99.inf用于在pnputil枚举中找到的每个oem。我在For循环中做错了什么?一定有更好的方法。。。你可以看出,我对这件事还是很陌生 再次感谢。 Brent利用PowerShell的强大功能,我

正如您希望看到的,我的脚本尝试从pnpitil-e命令中提取oem*.inf值。我试图让每个oem.inf文件成为For循环中自己的变量。我的脚本有点乱,包含了所有替换和拆分,但这部分似乎得到了我需要的命令部分。我对$I中的数据有问题。看起来脚本有时会工作,有时不会。我希望pnputil-d oem99.inf用于在pnputil枚举中找到的每个oem。我在For循环中做错了什么?一定有更好的方法。。。你可以看出,我对这件事还是很陌生

再次感谢。
Brent

利用PowerShell的强大功能,我们可以将pnputil的输出转换为一个对象数组,这样可以更轻松地解析您正在查找的数据,因为您似乎正在查找特定的数据

每个条目都是一组变量,变量之间有一个空行。使用它可以将此数据转换为自定义对象

$rawdata=pnputil-e |选择对象-跳过1 $rawdata=$rawdata-join`r`n-split`r`n`r`n $entries=$rawdata | ForEach对象{ $props=$\替换:,=|从StringData转换 新对象-TypeName PSCustomObject-属性$props } $rawdata最初包含来自pnputil-e的文本。我们使用“选择对象-跳过1”删除Microsoft PnP实用程序行。因为$rawdata是一个数组,所以这种方法需要一个长字符串so-join`r`n。紧接着,我们将它拆分为每个属性组的单独数组元素,并用-Re`n’r`n拆分在CMD输出中看到的空白行。 神奇之处在于StringData的ConvertFrom,它通过stings中的键值对创建哈希表。In needs=工作,因此我们将冒号转换为这样。对于创建的每个哈希表,我们将其转换为一个对象,并将其保存到变量$entries中$条目将始终是一个数组,因为可以安全地预期多个条目

转换后的示例条目:

类别:打印机 驾驶员日期和版本:2014年3月12日1.5.0.0 签名者名称:Microsoft Windows硬件兼容性发布者 发布名称:oem27.inf 驱动程序包提供商:理光 现在,我们可以使用PowerShell筛选出您想要的内容

$entries |其中对象{$\驱动程序包提供程序-匹配Ricoh}|选择对象-ExpandProperty发布名称 注意,这也可以返回一个数组,但对我来说只有一个条目。此文件的输出为oem27.inf


然后使用实际查找的信息,可以运行其他命令

看起来脚本有时会工作,有时不会。当它看起来不起作用时会发生什么?pnputil命令会返回一个错误,基本上是“无法删除”。哇,太好了!我希望我能投赞成票。多谢各位
$i=0;$pnp = pnputil -e;
$matched = [regex]::matches($pnp, ".......................................Lexmark International");
$split = $matched -split (".........inf");
$replace = $split -replace " Driver package provider :   Lexmark International","";
$replace1 = $replace -replace " ","`n";write-output $replace1;
foreach ($i in $replace1){;$pnpdel = pnputil -f -d $i;$pnpdel;};
Reg delete "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3\Lexmark Universal v2 XL" /f;
net stop spooler;net start spooler;start \\officechicprt5\111W-22E-CPRN-01