我正在嘗試運行 cmdlet“Get-Printer”并將其應用于多臺計算機,但我收到一條錯誤訊息 我嘗試使用雙引號并收到相同的錯誤訊息。
“Get-Printer:無法處理引數‘ComputerName’上的引數轉換。無法將值轉換為 System.String 型別。”
Get-Printer -ComputerName 'server01', 'server02'|select-object -Property Name, PortName |Select-String -Pattern 127.0.0.1
是不是因為 get-printer cmdlet 一次只能應用于一臺服務器?我是否必須采用不同的方法才能將其應用于多個服務器?
uj5u.com熱心網友回復:
ComputerName是字串而不是陣列。請參閱Get-Printer的檔案。
但是,您可以|在開頭使用另一個管道 ( ),然后使用以%( 的簡寫ForEach-Object)開頭的塊,以便一次一個地將字串提供給 cmdlet。它看起來像這樣:
'server01', 'server02' |
%{Get-Printer -ComputerName $_} |
Select-Object -Property Name, PortName |
Select-String -Pattern 127.0.0.1
不過,這還有第二個問題。Select-String還需要一個字串,但您傳遞給它的是一個包含Nameand的物件PortName。Select-String您可以不使用,而是將其通過管道傳輸到以?(簡寫)為前綴的塊,Where-Object并檢查是否PortName包含 127.0.0.1。
添加這看起來像:
'server01', 'server02' |
%{Get-Printer -ComputerName $_} |
Select-Object -Property Name, PortName |
?{$_.PortName.Contains("127.0.0.1")}
如果你愿意,你也可以縮短Select-Object為 just Select,但我會把它留給你。
uj5u.com熱心網友回復:
Get-Printer 的幫助顯示引數 -ComputerName 接受字串型別的輸入,但不接受字串陣列。因此您只能指定一個計算機名稱。 https://docs.microsoft.com/en-us/powershell/module/printmanagement/get-printer?view=windowsserver2019-ps
但是,您可以做的是先定義計算機名稱陣列,然后使用 foreach。
$computers = "server01","server02"
foreach($computer in $computers)
{
Get-Printer -ComputerName $computer |select-object -Property Name, PortName | Select-String -Pattern 127.0.0.1
}
或者像 Jesse 上面建議的那樣,一個單線看起來像這樣:
"server01","server02" | ForEach-Object {Get-Printer -ComputerName $_} | Select-Object -Property Name, PortName | Select-String -Pattern 127.0.0.1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/372237.html
