禁用通过Powershell启用的SNMP状态

时间:2013-06-14 15:18:31

标签: powershell-v2.0 snmp printers

我正在寻找使用PowerShell禁用打印机驱动程序的SNMP Status Enabled标志/复选框。该复选框可以在Windows 7的控制面板下找到 - >设备和打印机 - > - >打印机属性 - >端口 - >配置端口

要切换为禁用状态的复选框的图像: enter image description here

如果有PowerShell脚本的示例,我希望对它们进行审核。我无法在书籍或网络上找到涵盖此主题的资源。

4 个答案:

答案 0 :(得分:2)

以下作品但不完全优雅。它必须从提升的提示符运行。如果启用了它,它将遍历所有TCP / IP端口并禁用它们上的SNMP。您需要重新启动(shutdown -t 0 -r)才能应用设置。

    dir "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports" | gp "SNMP Enabled" | ?{$_."SNMP Enabled" -eq 1} | %{sp -Path $_.PSPath -Name "SNMP Enabled" -Value 0}

    shutdown -t 0 -r

您还可以查看printer cmdlets on server 2012或使用portmgr.vbs from MS.

答案 1 :(得分:1)

当我尝试回答时,我收到了关于尝试输入gp的错误。由于我只想为每台TCP / IP打印机关闭SNMP,我将命令缩短为

dir "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports" | %{sp -Path $_.PSPath -Name "SNMP Enabled" -Value 0}

然后重新启动。执行此操作后,所有连接的TCP / IP打印机都在端口配置中禁用SNMP。

答案 2 :(得分:1)

好帖子。

我只是想分享一下我运行上面的命令,以及重启,但它没有100%工作。我发现除了上一个命令和重启之外,还将 SNMP索引更改为0。所以我的ps命令看起来如下(我手动重启,所以我在命令中没有):

dir "HKLM:\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports" | %{sp -Path $_.PSPath -Name "SNMP Enabled" -Value 0}

dir“HKLM:\ SYSTEM \ CurrentControlSet \ Control \ Print \ Monitors \ Standard TCP / IP Port \ Ports”| %{sp -Path $ _。PSPath -Name“SNMP索引” - 值0}

答案 3 :(得分:0)

这篇文章只是增加了Michael,Bob和Kevin所做的出色工作,并将它们组合为一个。在进行更改之前,它还将保存现有设置的副本,以备日后需要还原时使用。

此外,无需重新启动服务器-重新启动后台打印程序服务就足够了:

Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports' | Out-File -FilePath 'PrinterPortSettings.txt'

Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports' | ForEach-Object -Process {
    Set-ItemProperty -Path $_.PSPath -Name 'SNMP Enabled' -Value 0
    Set-ItemProperty -Path $_.PSPath -Name 'SNMP Index' -Value 0
}

Get-Service -Name 'Spooler' | Restart-Service -Force