从 Powershell 中的输出中删除文本
Posted
技术标签:
【中文标题】从 Powershell 中的输出中删除文本【英文标题】:Removing text from output in Powershell 【发布时间】:2014-11-05 04:07:28 【问题描述】:我正在尝试删除从get-wmiobject
返回的部分文本,我要删除的文本是@ShareName=PRT47
,我只想要返回的打印机名称,如果你愿意,可以加上后缀。
我尝试了不同的方法,尝试获取字符数并删除它们,但我发现你也可以使用前面的 cmdlet 中的内容。
Remove Text
$text = Get-WmiObject -Class $class -Filter Network=True | Select ShareName | Where-Object $_ - like "*PRT*"
ForEach ($shareName in $text)
$newprinter = "\\$newserver\$shares"
rundll32 printui.dll,PrintUIEntry /in /n $newprinter
【问题讨论】:
【参考方案1】:您应该能够使用 -replace 来查找和替换带有空白条目的字符串。使用您的 @ShareName=PRT47
示例$text = $text -replace '(.*)=(.*)' $2
echo $text //Prints PRT47
另一种方法是使用拆分。下面的示例将在每个等号上拆分。
$text = $text -split '='
echo $text[0] //prints @ShareName
echo $text[1] //prints PRT47
【讨论】:
【参考方案2】:在 ForEach 中,像这样指定 shareName 属性。
ForEach ($shareName in $text)
$shareName.sharename
【讨论】:
【参考方案3】:如果您拥有 Powershell 3.0 或更高版本,还有另一种方法:
$text = (Get-WmiObject -Class $class -Filter Network=True).ShareName | Where-Object $_ -like "*PRT*"
或者,如果你只有 Powershell 2.0,更接近 Hysh_00 的建议:
$text = Get-WmiObject -Class $class -Filter Network=True | foreach $_.ShareName | Where-Object $_ -like "*PRT*"
【讨论】:
以上是关于从 Powershell 中的输出中删除文本的主要内容,如果未能解决你的问题,请参考以下文章
Powershell & Lotus Notes - 将 While 循环的输出从文本更改为 XML 输出
将输入变量从PowerShell表单传递到cmdlet参数会导致空白数据