New-NlbCluster Access negado

3

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.

    
por Jari Kulmala 24.04.2017 / 09:09

0 respostas