2014-11-05 26 views
0

我想從get-wmiobject中刪除部分文本,我試圖刪除的文本是@{ShareName=PRT47},我只希望返回打印機名稱,所以後綴如果您願意。從Powershell中的輸出中刪除文本

我已經嘗試了不同的嘗試獲取字符數並刪除它們,但後來我發現您也可以使用正在處理的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找到與空白項替換字符串。使用@的示例{共享名= PRT47}

$text = $text -replace '(.*)=(.*)' ${2} 
echo $text //Prints PRT47} 

一種替代方法是使用分裂。下面的例子將在每個等號上分割。

$text = $text -split '=' 
echo $text[0] //prints @{ShareName 
echo $text[1] //prints PRT47} 
0

在ForEach中,指定shareName屬性,如下所示。

ForEach ($shareName in $text) { 

$shareName.sharename 

} 
0

這裏的另一種方式做到這一點,如果你有PowerShell的3.0或更高版本:

$text = (Get-WmiObject -Class $class -Filter Network=True).ShareName | Where-Object {$_ -like "*PRT*"} 

或者接近Hysh_00的建議,如果你只有PowerShell 2.0中:

$text = Get-WmiObject -Class $class -Filter Network=True | foreach {$_.ShareName | Where-Object {$_ -like "*PRT*"}}