New-NlbCluster访问被拒绝

这是一个问题和答案,因为谷歌search“New-NlbCluster:访问被拒绝”没有带来任何结果,我想分享到社区的同时。

问题:

从2017年4月15日开始,powershell命令行开关New-NlbCluster开始在我们的实验室testing环境中给出一个错误消息:“New-NlbCluster:Access denied”,testing软件的安装和configuration,还包括创build一个新的NLB集群。 该命令也不适用于本地pipe理员帐户。 使用交互式GUI(networking负载平衡)可以很好地创build新的NLB群集。

这里是确切的命令(但有点被掩盖)失败:

Import-Module NetworkLoadBalancingClusters try { New-NlbCluster -ErrorAction:Stop -InterfaceName "Xxxxx" -ClusterPrimaryIP "172.17.2.74" -SubnetMask "255.255.255.0" -HostName XX-XX-XX-R1 -ClusterName "xx-xx-xx-rp.xxxxxxxxxx.xx.xxx.com" -OperationMode multicast } catch { echo $_.Exception | format-list -force } ErrorInformation : System.Management.ManagementBaseObject ErrorCode : AccessDenied Message : Access denied Data : {} InnerException : TargetSite : Void ThrowWithExtendedInfo(System.Management.ManagementStatus) StackTrace : at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) at System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, InvokeMethodOptions options) at Microsoft.NetworkLoadBalancingClusters.PowerShell.WMIHelper.SynchUpdateClusterConfigurationEx(String host, String adaptor, ManagementB aseObject inParams) at Microsoft.NetworkLoadBalancingClusters.PowerShell.NewNlbCluster.NlbProcessRecord() at Microsoft.NetworkLoadBalancingClusters.PowerShell.NlbPSCmdlet.ProcessRecord() at System.Management.Automation.CommandProcessor.ProcessRecord() HelpLink : Source : System.Management HResult : -2146233087 

2017年4月8日,它仍然工作。 可能是一些Windows更新触发了错误(之间有7个窗口更新)。 我们所有的testing系统(共4个)都出现了相同的错误,包括Windows 2008 R2和Windows 2012 R2版本。 所有计算机属于同一个实验室域。

我也在一个独立的虚拟机中testing了它,这个虚拟机不属于一个域,而且这个命令也可以工作,即使是最新的Windows更新。 我们的实验室域名不应该有任何政策变化,所以我不知道是什么原因造成的。

我解决了这个问题很长一段时间。 我为WMI活动定义了安全日志logging,但安全日志只显示所有操作的成功消息。 但是,WMI活动debugging跟踪(请参阅https://blogs.technet.microsoft.com/askperf/2008/03/04/wmi-debug-logging/ )能够显示错误:启动IWbemServices :: ExecMethod – root \ MicrosoftNLB:NlbsNic :: UpdateClusterConfigurationEx 0x80041003但是,这并没有透露任何细节导致访问冲突。 从c:\ Program Files文件(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Include \ WbemCli.h我们看到WBEM_E_ACCESS_DENIED = 0x80041003

解决方法:

我改变脚本运行命令作为SYSTEM用户帐户,而这有所帮助。 (在SYSTEM帐户下运行命令可以通过定义Windows Scheduled Task来完成,但是我创build了一个临时服务来运行该命令)。

更令人惊奇的是,我写了一个用于创buildNLB集群的C ++程序(通过使用WMI)。 这个C ++程序即使在独立的计算机上也遭遇了同样的访问被拒绝的错误,但同样的解决方法也有所帮助,即通过在SYSTEM帐户下运行NLB集群被成功创build。