Esta é uma pergunta e uma resposta ao mesmo tempo que desejo compartilhar com a comunidade porque a pesquisa do Google "New-NlbCluster: Access denied" não trouxe nenhum resultado.
Problema:
A partir de 15 de abril de 2017, o comando New-NlbCluster do powershell começou a fornecer uma mensagem de erro: "New-NlbCluster: Access denied" em nosso ambiente de teste de laboratório que testa a instalação e configuração de software que inclui também a criação de um novo NLB grupo. O comando não funcionou com a conta do administrador local. A criação de novo cluster NLB funcionou bem usando a GUI interativa (balanceamento de carga de rede).
Aqui está o comando exato (mas ligeiramente mascarado) que falhou:
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-r-p.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
Em 8 de abril de 2017, ainda funcionou. Possivelmente alguma atualização do Windows acionou o erro (havia 7 atualizações do windows entre). O mesmo erro ocorreu em todos os nossos sistemas de teste (total de 4 deles), incluindo as versões do Windows 2008 R2 e Windows 2012 R2. Todos os computadores pertencem ao mesmo domínio de laboratório.
Eu também testei em uma máquina virtual autônoma que não pertence a um domínio e o comando funcionou, mesmo com as atualizações mais recentes do Windows. Nosso domínio de laboratório não deve ter nenhuma alteração de política, por isso, pergunto-me o que poderia causar isso.
Eu solucionei o problema por um bom tempo. Eu defini o log de segurança para a atividade do WMI, mas o log de segurança apenas exibiu mensagens de sucesso para todas as operações. No entanto, o rastreamento de depuração de atividade do WMI (consulte link ) para exibir o erro: Inicie o IWbemServices :: ExecMethod - root \ MicrosoftNLB: NlbsNic :: UpdateClusterConfigurationEx 0x80041003 No entanto, isso não revelou detalhes que causaram a violação de acesso. De c: \ Arquivos de programas (x86) \ Microsoft SDKs \ Windows \ v7.1 \ Include \ WbemCli.h vemos que WBEM_E_ACCESS_DENIED = 0x80041003
Solução alternativa:
Alterei o script para executar o comando como conta de usuário SYSTEM e isso ajudou. (Executar o comando na conta SYSTEM pode ser feito, por exemplo, definindo uma tarefa agendada do Windows, mas eu criei um serviço temporário para executar o comando).
O que me maravilha ainda mais é que escrevi um programa C ++ para criar o cluster NLB (usando o WMI). Esse programa C ++ sofreu o mesmo erro de acesso negado mesmo no computador autônomo, mas a mesma solução alternativa ajudou, por exemplo, ao executar na conta SYSTEM, o cluster NLB foi criado com êxito.
Tags powershell wmi nlb