从Powershell中的输出中删除文本

时间:2014-11-05 04:07:29

标签: powershell printers

我正在尝试删除从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
    } 

3 个答案:

答案 0 :(得分: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}

答案 1 :(得分:0)

在ForEach内部,像这样指定shareName属性。

ForEach ($shareName in $text) { 

 $shareName.sharename

}

答案 2 :(得分:0)

如果你有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*"}}