2016-12-15 49 views
0

我在一家公司實習,我們需要重新定義我們客戶端的打印機IP模式。我相當綠色PowerShell和我使用PowerShell ISE中,當我使用:2012年Powershell PrintServer搜索某些子網的打印機端口

Get-PrinterPort 

我得到的完整列表,如預期。然而,如果我找子網組192.168.228內的任何打印機端口*,我已經使用了以下內容:

$IPAddress = Get-WmiObject -Class Win32_TCPIPPrinterPort | Where-Object ({$_.Name.Split('.').index[-1]} -eq '228') 
    $IPAddress = Get-WmiObject -Class Win32_TCPIPPrinterPort | Where-Object ({$_.Name.Split('.')} -match '192.168.228*') 
    $IPAddress = Get-WmiObject -Class Win32_TCPIPPrinterPort | Where-Object ({$_.Name.Split('.').index[-1]} -match '228') 

什麼都不會顯示。我曾嘗試-match,-icontains,-contains,樣和其他幾個人的許多變化,將搜索部分IP地址

$IPAddress = Get-WmiObject -Class Win32_TCPIPPrinterPort | Where-Object ({$_.Name.Split('.')} -match '*228') 

我也修改腳本:

Get-WmiObject -Class Win32_TCPIPPrinterPort -OutVariable allIPs 
    foreach ($splitIP in $allIPs -split '.'){ 
    $splitIP = $allIPs -split '.' 
    sort $splitIP[2] -Unique -OutVariable uniqueSubnetIP 
    } 
    $uniqueSubnetIP 

This is the output I get from the above code

最後,我想通過每一個子網IP的過濾,然後找到最後一個字節是架構之外的那些和自動化的過程,以把他們的範圍是這樣的:

< 192.268.***.50 || > 192.168.***.60 

任何幫助你可以提供的是真正讚賞;我花了好幾天的時間試圖弄清楚這一點。

+0

我剛剛意識到第一部分我沒有給出顯示任何東西的命令,所以它確實如我所說的那樣做;我只是沒有告訴它讓我知道它做了什麼。 – brehma

+0

所以..這個問題不再相關?如果是這樣,你可以關閉它 - 它接近編輯選項。 – gravity

+0

只有第一部分不再相關,下半部分仍然相關。 – brehma

回答

0

首先,我不認爲$printerport.name是可靠的檢測子網;改爲使用$printerport.hostaddress

Get-WMIObject -Class Win32_TCPIPPrinterPort | Where-Object {($_.HostAddress -split '\.')[2] -eq 228}似乎會返回所需子網中的打印機端口對象 - 對於不同的子網,只需將228更改爲適當的值即可。

-split運算符采用正則表達式,所以.必須轉義,\.。該操作將產生一個由四個項目組成的數組,表示端口IP地址的八位位組。第三個八位字節在@()[2];您可以通過將[2]更改爲[0],[1][3]來類似地測試其他八位字節。

+0

我剛剛試過你的建議,我不敢相信我已經花了這麼多的時間在這樣一個簡單的解決方案!這正如我所需要的那樣工作。後續問題...如果我想通過將第三個八位字節設置爲$ subnetOct並使用該變量通過20個以上的子網並在第四個八位字節執行> || <類比來實現搜索自動化,那麼您認爲怎麼樣?是最好的解決方案嗎? – brehma

+0

這是一個非常廣泛的後續問題。有很多方法可以做到這一點;問題將會最適合您的處理,只有您可以決定。 我最可能這樣做的方式是將第三個八位字節分配給一個數組(例如'$ thirds = @(228,241,243,250)'),然後遍歷數組在foreach塊中處理(例如,'foreach($ octet in $ thirds){...}',在原始響應中用'$ octet'代替'228')。 –

+0

如果您發現答案可以解決您的原始問題,請接受它。 –