2

我编写了一个 powershell 脚本,它为网络驱动程序编写注册表项以更改 DCB 设置。诸如打开和关闭 DCB、定义流量类别和带宽组之类的事情。将值写入注册表后,有时您无法通过 SNMP 远程查看更改。虽然这是不一致的。

我搜索了网络,看看是否有办法强制 SNMP 再次从注册表中获取其值。我们有一个脚本可以设置 SNMP 中的值,它会自动更改注册表。我试图采取相反的方式并在注册表中设置值并更新 MIB。我尝试在脚本中重置 SNMP 服务和网络设备,但没有成功。

修改注册表后,对名为“SNMPServiceResetEvent”的全局事件执行 SetEvent。(即,对该命名事件执行 CreateEvent,然后执行 SetEvent)。这应该会导致代理使用当前注册表值重新初始化。Jeff Kelley 微软/Windows CE 网络

我发现唯一听起来像我需要的是上面的引用,尽管进一步的研究表明他在谈论 C++ 或 C#。有没有办法按照他在powershell中的建议做?尽管我不确定它是否适合当前任务,但我找到了一个 New-Event 命令行开关。我试过的代码:

$snmpService = New-Event -sourceidentifier dcbScriptSnmpReset -sender     SNMPServiceResetEvent -messagedata "Reset SNMP to refresh Registry"

虽然没有 Set-Event 命令行开关,但我不知道如何继续。

任何帮助或线索将不胜感激。

谢谢,马库斯

4

1 回答 1

1

显然我误解了 SNMP 的工作原理,现在我可以通过启用和禁用网络适配器以及停止和启动 SNMP 服务来更新输入到注册表中的值:

Stop-Service $snmpService.Name
$adaptor = Get-WmiObject -Class Win32_NetworkAdapter | Where-Object {$_.DeviceID -eq     $deviceID }
$adaptor.Disable()
$adaptor.Enable()

Start-Service $snmpService.Name
于 2012-07-10T23:59:30.043 回答