首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用打印机端口-Like "*WSD*“查询所有机器

使用打印机端口-Like "*WSD*“查询所有机器
EN

Stack Overflow用户
提问于 2018-08-15 20:01:05
回答 2查看 603关注 0票数 0

我域中的一些计算机安装了不正确的PortName打印机。我有一个域上所有机器的列表,并且我可以列出端口名类似于WSD的机器上的所有打印机。

代码语言:javascript
复制
Get-Printer -ComputerName $Computer | Where PortName -like "*WSD*"

但是,我希望在我的计算机列表中的每台计算机上运行这个命令,然后创建一个CSV或文本文件,其中包含有端口名称不正确的打印机的每台计算机的列表。

到目前为止,这就是我所拥有的:

代码语言:javascript
复制
$ComputerList = Get-Content "c:\Temp\Computers.CSV"  

    foreach ($Computer in $ComputerList) {

        $WSD = Get-Printer -ComputerName $Computer | Where PortName -like "*WSD*" }

我不太知道如何完成这个脚本来完成我想要的。如果我有什么不清楚的地方请告诉我。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-15 21:00:08

首先,您应该使用.csvImport-Csv导入数据,这样就不会遇到头文件的问题。

第二,你走在正确的轨道上,但也许可以这样做:

代码语言:javascript
复制
$ComputerList = Import-Csv -Path "c:\Temp\Computers.CSV"
$WSD = @()

foreach ($Computer in $ComputerList.<EnterHeaderNameHere>)
{
  if (Get-Printer -ComputerName $Computer | Where-Object {$_.Portname -like "*WSD*"})
    {
      $WSD += $Computer
    }
}

这将检查查询的结果是否返回命中,如果返回,则会将ComputerName附加到数组$WSD

然后,如果需要,可以使用Out-FileExport-Csv将数组转发到文件。

例如:

代码语言:javascript
复制
$WSD | Out-File -Path "c:\Temp\WSD.txt"
票数 0
EN

Stack Overflow用户

发布于 2018-08-16 01:15:41

就像他说的,进口CSV很棒。由于get-打印机接受逗号分隔的列表(用字符串<string[]>后面的方括号表示帮助),您可能会过于简化。

代码语言:javascript
复制
$ComputerList = import-csv "c:\Temp\Computers.CSV"  
$WSD = Get-Printer -ComputerName $Computerlist.name | Where {$_.PortName -like "*WSD*" }

变量后面的.name只有在csv的那个列被命名为"name“时才会吐出计算机名,这样您就可以修改列表以生成标题"name”。或者修改您的代码,并将其从.name更改为任何字段的实际名称。

在这种情况下预测循环的优点是可以将命令作为作业运行。然后,当所有作业完成后,您可以将数据导出到$wsd中。但这完全是另一回事。

如果你想把它放在一个文件里,要么把

代码语言:javascript
复制
$wsd | out-file c:\temp\computerlist.txt -append

或者将变量wsd从脚本中移除,然后将主命令输送到out文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51865631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档