在几乎所有情况下,将 SMTP 服务添加到 Windows 操作系统似乎都非常简单:打开 Windows 功能界面,然后选中“简单网络管理协议”选项。重新启动后,应该会有一个名为“SNMP 服务”的新本地服务可用。
我在 Windows 10 Pro 64 位中按照这些步骤操作,但我发现找不到“SNMP 服务”。有一个“SNMP Trap”服务,但显然这不是我要找的。似乎 SNMP 代理设置(例如社区名称)只能在“SNMP 服务”的属性中修改。
在搜索过程中,我发现了一个用于安装 SNMP 服务的 Powershell 命令:
Install-WindowsFeature RSAT-SNMP
但是,结果是一条错误消息(即使以管理员身份运行):
Install-WindowsFeature : The target of the specified cmdlet cannot be a Windows client-based operating system.
“基于客户端的操作系统”一词表明 SNMP 服务仅适用于 Windows Server 操作系统,但 Windows 7/8 并非如此。所以我很好奇 Windows 10 是否也发生了变化。
答案1
你的问题实际上解决了两个问题:
- 您无法使用 Windows Server 本机 PowerShell 命令,它们不适用于除 Windows Server 架构之外的任何架构。运行
gcm -module DISM
以获取您的计算机支持的命令列表。 - SNMP 服务确实存在于 Windows 10 中:Windows 10 中的 SNMP
答案2
Windows 10 Build 1809 确实存在一个错误,它不显示 SNMP 服务,这是该问题的修复方法:
- 使用管理员凭据打开 Powershell
- 发出以下命令
- Get-WindowsCapability -Online -Name“SNMP*”-->将显示不存在
- Add-WindowsCapability -Online -Name“SNMP.Client~~~~0.0.1.0”
- 获取 WindowsCapability -Online -名称“SNMP*”
- Get-WindowsCapability -Online -Name“SNMP*”-->将显示已安装
该功能仍然没有显示在打开或关闭 Windows 功能窗口中,但是服务已安装,您可以从 services.msc 查看和配置,我已验证该服务是否按预期工作。
答案3
如果你没看到SNMP 服务在可用服务列表中,但只有SNMP 陷阱,则需要添加服务,可以按照以下步骤进行添加:
- 右键单击 Windows“开始”按钮并选择控制面板。
- 选择程式在控制面板中,然后在 程序和特点, 选择打开或关闭 Windows 功能。
- 寻找简单网络管理协议 (SNMP)在功能列表中,选中旁边的复选框,然后单击好的。
安装服务支持后,配置服务的过程与配置在 Windows 7 系统上配置 SNMP。
答案4
@Jay Pickett 提供了一个答案,其中包含了让我走上正轨的解决方法的实质。我实际上在微软技术网- 请参阅用户“Amnon H”的回复。由于我在 StackExchange 上有一个帐户,因此我更愿意在这里发表我的看法,而不是在 MS 服务器上发表。
以下是我的完整 PowerShell 脚本:
# If powershell prevents you from running this file,
# saying that execution is disabled on this system,
#
# Option 1:
# start a cmd window with administrator privileges,
# type PowerShell followed by an Enter,
# and at the PowerShell prompt, issue this command:
# Set-ExecutionPolicy Unrestricted
# Note that this decreases your security somewhat :-/
# Then, you should be able to run this script simply by
# C:\> PowerShell .\snmp.ps1
# or
# PS C:\> .\snmp.ps1
#
# Option 2:
# Just copy the lines below to clipboard and paste into the
# interactive PowerShell interpreter.
if (!(Test-Path 'REGISTRY::HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate'))
{
echo "creating key HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate"
Set-Location -Path 'REGISTRY::HKLM\Software\Policies\Microsoft\Windows\'
Get-Item -Path 'REGISTRY::HKLM\Software\Policies\Microsoft\Windows\' | New-Item -Name 'WindowsUpdate' -Force
}
if (!(Test-Path 'REGISTRY::HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU'))
{
echo "creating key HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU"
Set-Location -Path 'REGISTRY::HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\'
Get-Item -Path 'REGISTRY::HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\' | New-Item -Name 'AU' –Force
}
Get-WindowsCapability -Online -Name "SNMP*"
Set-ItemProperty "REGISTRY::HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU" UseWUserver -value 0
Get-Service wuauserv | Restart-Service
Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"
Set-ItemProperty "REGISTRY::HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU" UseWUserver -value 1
Get-WindowsCapability -Online -Name "SNMP*"
即,该脚本首先准备一些 Windows 注册表项(“文件夹”),这些项是形成实际最佳点的 DISM cmdlet 所需要的。