2016-12-15 73 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

如果您发现答案可以解决您的原始问题,请接受它。 –