我的任务是创建一个脚本,在我的组织中从打印机中提取墨粉级别,并以.csv格式将其推出,用于excel报告。不幸的是,当我添加打印机标题时,我无法删除:
< a href="h_product=Q7493A&h_lang=en&h_cc=us&h_tool=prodhomes" onclick="target = new Date().valueOf().toString(); if (window.open) window.open('h_product=Q7493A&h_lang=en&h_cc=us&h_tool=prodhomes',target,'resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes,status=yes'); return false;" id="lnkOtherLink2">Product Support</a>
和
< a href="http://h20180.www2.hp.com/apps/Navh_product=CB480A&h_lang=en&h_cc=us&h_page=hpcom&hpagetype=s-001&h_client=s-a-e001-1" onclick="target = new Date().valueOf().toString(); if (window.open) window.open('http://h20180.www2.hp.com/apps/Navh_product=CB480A&h_lang=en&h_cc=us&h_page=hpcom&hpagetype=s-001&h_client=s-a-e001-1',target,'resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes,status=yes'); return false;" id="lnkOtherLink2">Product Support</a>
有没有办法使用powershell命令删除"<a"和/a>以及它们之间的数据?(添加空格并<删除空格,以便显示代码。
由于字符的特殊性,简单的替换功能将不起作用,而且删除特定的文本块似乎相当混乱。由于所有有问题的块都以"a"函数开始和结束,我认为必须有一种方法来做到这一点。反过来说,也许有一种方法可以避免这一切。
根据您最近的评论,-replace "<a(.*?)</a>"
应该做到这一点。
以下是示例用法:
$tmp = @'
Printer1, <a href="h_product=Q7493A&h_lang=en&h_cc=us&h_tool=prodhomes" onclick="target = new Date().valueOf().toString(); if (window.open) window.open('h_product=Q7493A&h_lang=en&h_cc=us&h_tool=prodhomes',target,'resizable=yes,scrollbars=yes,menubar=yes,location=yes,toolbar=yes,status=yes'); return false;" id="lnkOtherLink2">Product Support</a> Black Cartridge,91%, Cyan Cartridge,59%, Magenta Cartridge,44%, Yellow Cartridge,24%, Image Transfer Kit,75%, Image Fuser Kit,21%,
'@
$tmp -replace "<a(.*?)</a>", ""
注意regex贪婪限定符(?
),如果没有它,您将捕获从第一个<a>
标记开始到最后一个标记结束的所有内容,这可能不是您想要的(取决于整页内容)。
话虽如此,我不敢相信HP打印机没有API来以正确的方式检查墨粉水平。