Objeto $MyInvocation.MyCommand é definido como nulo quando você executar o script usando o PowerShell 3.0 no Windows 8 ou no Windows Server 2012

Sintomas

Considere o seguinte cenário:

  • Você tem alguns scripts do PowerShell personalizados ou módulos que contêm uma referência para a instância de $MyInvocation internos.

  • Executar scripts ou módulos em um computador baseado em Windows 8 ou o Windows Server 2012 usando o Windows PowerShell 3.0.

  • Alguns objetos são passados por meio de um pipe.

Nesse cenário, o valor do objeto $MyInvocation.MyCommand é definido como nulo.

Por exemplo, o problema ocorre ao executar o script a seguir:

$Line= Get-Content $file$Line | foreach-Object { 
write-host "** MYCOMMAND [2] IS NULL?: " ($MyInvocation.MyCommand -eq $null) " --->" $_
}

Observação: Esse problema não ocorre quando você executar o script usando o Windows PowerShell 2.0.

Resolução

Para resolver esse problema, instale o pacote cumulativo de atualizações 2855336 ou instale o hotfix descrito neste artigo. Esse hotfix também está disponível no .

Informações sobre a atualização

Para obter mais informações sobre como obter o pacote cumulativo de atualizações 2855336, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:

Windows RT, o Windows 8 e o Windows Server 2012 rollup de atualização: julho de 2013




Um hotfix suportado está disponível agora na Microsoft. No entanto, destina-se a corrigir somente o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico.

Para resolver esse problema, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa dos números de telefone do Atendimento Microsoft e informações sobre custos de suporte, visite o seguinte site da Microsoft:

Observação: em alguns casos, as taxas cobradas para chamadas de suporte podem ser canceladas caso um profissional de Suporte da Microsoft determine que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados para questões de suporte adicionais e problemas que não se qualificam à atualização específica em questão.

Pré-requisitos:Para aplicar esse hotfix, você deve estar executando o Windows 8 ou o Windows Server 2012.

Informações do registro:Para usar o hotfix neste pacote, não é necessário efetuar quaisquer alterações no registro.

Requisitos de reinicialização:Você deve reiniciar o computador após aplicar esse hotfix.

Informações de substituição do hotfix:Esse hotfix não substitui um hotfix lançado anteriormente.

Informações sobre o arquivo:

A versão global deste hotfix instala arquivos que possuam os atributos listados nas tabelas a seguir. As datas e horas desses arquivos estão listadas no Tempo Universal Coordenado (UTC). As datas e horas desses arquivos em seu computador local são exibidas em sua hora local com a diferença de horário de verão (DST) atual. Além disso, as datas e as horas podem ser alteradas quando você realizar determinadas operações nos arquivos.





Informações sobre o arquivo do Windows 8 e o Windows Server 2012Importante: Os hotfixes do Windows 8 e os hotfixes do Windows Server 2012 estão incluídos nos pacotes para o mesmos. No entanto, apenas "Windows 8" é listado na página solicitação de Hotfix. Para solicitar o pacote de hotfix que se aplica a um ou ambos os sistemas operacionais, selecione o hotfix listado em "Windows 8" na página. Sempre consulte a seção "Aplica-se a" nos artigos para determinar o sistema operacional real que cada hotfix se aplica.

  • Os arquivos que se aplicam a um produto, etapa (RTM, SPn) e ramificação do serviço (LDR, GDR) específicos podem ser identificados examinando os números de versão do arquivo, conforme exibido na seguinte tabela:

  • As ramificações do serviço GDR contêm somente correções amplamente disponibilizadas para resolver problemas críticos que sejam bastante conhecidos. As ramificações do serviço LDR contém hotfixes, além de correções amplamente disponibilizadas.

  • Os arquivos MANIFEST (. manifest) e os arquivos MUM (. mum) instalados para cada ambiente são listados separadamente na seção "Informações adicionais sobre arquivos para Windows 8 e Windows Server 2012". MUM e arquivos de manifesto e os arquivos de catálogo (. cat) de segurança associadas são extremamente importantes para manter o estado dos componentes atualizados. Os arquivos do catálogo de segurança, para os quais os atributos não estejam listados, são assinados com uma assinatura digital da Microsoft.

Solução alternativa

Para contornar esse problema, não use um pipe para passar objetos. Por exemplo, você pode alterar o script de exemplo para o seguinte:

$Line= Get-Content $fileforeach( $L in $Line){ 
write-host "** MYCOMMAND [2] IS NULL?: " ($MyInvocation.MyCommand -eq $null) " --->"$L
}

Status

A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".

Mais informações

Para obter mais informações sobre a terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de Conhecimento da Microsoft:

descrição da terminologia padrão usada para descrever as atualizações de software

Informações sobre arquivo adicional para Windows 8 e o Windows Server 2012

Arquivos adicionais para todas as versões com suporte para o Windows 8 x86

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Estas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×