As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
EC2Solucionar/Problemas de implantação no local
Tópicos
- CodeDeploy erro de credenciais CommandPoller ausentes do plugin
- A implantação falha com a mensagem “Falha na validação da mensagem PKCS7 assinada”
- A implantação ou reimplantação dos mesmos arquivos nos mesmos locais de instância falha com um erro indicando que a implantação falhou porque um arquivo especificado já existe na localização
- Caminhos de arquivo longos causam erros do tipo “Nenhum arquivo ou diretório”
- Processos de execução longa podem fazer com que as implantações falhem
- Solução de problemas em um evento de AllowTraffic ciclo de vida com falha sem nenhum erro relatado nos registros de implantação
- Solução de problemas de falha ApplicationStop ou BeforeBlockTraffic evento do ciclo AfterBlockTraffic de vida da implantação
- Solução de problemas em um evento DownloadBundle de ciclo de vida de implantação com falha com UnknownError: não aberto para leitura
- Solução de problemas de erros relacionados a todos os eventos de ciclo de vida ignorados
- PowerShell Os scripts do Windows não usam a versão de 64 bits do Windows PowerShell por padrão
nota
As causas de muitas falhas de implantação podem ser identificadas por meio da revisão dos arquivos de log criados durante o processo de implantação. Para simplificar, recomendamos usar o Amazon CloudWatch Logs para monitorar centralmente os arquivos de log em vez de visualizá-los instância por instância. Para obter mais informações, consulte Exibir CodeDeploy registros no console de CloudWatch registros
dica
Para obter um runbook que automatiza muitas tarefas de solução de problemas relacionadas a implantações EC2 /On-Premises, consulte - na referência do runbook AWSSupportdo TroubleshootCodeDeploy AWS Systems Manager Automation.
CodeDeploy erro de credenciais CommandPoller ausentes do plugin
Se você receber um erro semelhante a InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please
check if this instance was started with an IAM instance profile
, a causa pode ser uma das seguintes:
-
A instância na qual você está implantando não tem um perfil de IAM instância associado a ela.
-
Seu perfil de IAM instância não tem as permissões corretas configuradas.
Um perfil de IAM instância concede ao CodeDeploy agente permissão para se comunicar CodeDeploy e baixar sua revisão do Amazon S3. Por EC2 exemplo, consulteGerenciamento de identidade e acesso para o AWS CodeDeploy. Para instâncias locais, consulte Working with On-Premises Instances.
A implantação falha com a mensagem “Falha na validação da mensagem PKCS7 assinada”
Essa mensagem de erro indica que a instância está executando uma versão do CodeDeploy agente que suporta somente o algoritmo de hash SHA -1. O suporte para o algoritmo de hash SHA -2 foi introduzido na versão 1.0.1.854 do CodeDeploy agente, lançada em novembro de 2015. A partir de 17 de outubro de 2016, as implantações falharão se uma versão do CodeDeploy agente anterior à 1.0.1.854 for instalada. Para obter mais informações, consulte AWS para mudar para o algoritmo de SHA256 hash para SSL certificados
A implantação ou reimplantação dos mesmos arquivos nos mesmos locais de instância falha com um erro indicando que a implantação falhou porque um arquivo especificado já existe na localização
Quando CodeDeploy tenta implantar um arquivo em uma instância, mas já existe um arquivo com o mesmo nome no local de destino especificado, a implantação nessa instância pode falhar. Você pode receber a mensagem de erro “A implantação falhou porque um arquivo especificado já existe neste local: location-name
.”. Isso ocorre porque, durante cada implantação, CodeDeploy primeiro exclui todos os arquivos da implantação anterior, que estão listados em um arquivo de log de limpeza. Se houver arquivos nas pastas de instalação de destino que não estejam listados nesse arquivo de limpeza, o CodeDeploy agente, por padrão, interpreta isso como um erro e falha na implantação.
nota
Nas instâncias do Amazon Linux e do Ubuntu Server, o arquivo de limpeza está localizado em/opt/codedeploy-agent/deployment-root/deployment-instructions/
. RHEL Em instâncias do Windows Server, o local é C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\
.
A maneira mais fácil de evitar esse erro é especificar uma opção diferente do comportamento padrão de reprovar a implantação. Para cada implantação, você pode optar por reprovar a implantação, substituir os arquivos não listados no arquivo de limpeza ou manter os arquivos que já estão na instância.
A opção de substituição é útil quando, por exemplo, você colocou manualmente um arquivo em uma instância após a última implantação, mas adicionou um arquivo com o mesmo nome à próxima revisão de aplicativo.
É possível escolher a opção de retenção para os arquivos colocados na instância que você deseja que façam parte da próxima implantação sem precisar adicioná-los ao pacote de revisão de aplicativo. A opção de retenção também é útil se os arquivos do aplicativo já estiverem em seu ambiente de produção e você quiser implantá-los usando CodeDeploy pela primeira vez. Para ter mais informações, consulte Criar uma implantação de EC2 /On-Premises Compute Platform (console) e Comportamento de reversão com conteúdo existente.
Solução de problemas de erros de implantação The deployment failed because a specified file already exists at
this location
Se você optar por não especificar uma opção para substituir ou reter o conteúdo CodeDeploy detectado nos locais de implantação de destino (ou se você não especificar nenhuma opção de implantação para lidar com o conteúdo existente em um comando programático), poderá optar por solucionar o erro.
As informações a seguir aplicam-se somente quando você opta por não reter ou substituir o conteúdo.
Se você tentar reimplantar arquivos com os mesmos nomes e locais, é mais provável que a reimplantação seja bem-sucedida se você especificar o nome do aplicativo e o grupo de implantação com o mesmo ID do grupo de implantação subjacente que você usou antes. CodeDeploy usa o ID do grupo de implantação subjacente para identificar os arquivos a serem removidos antes de uma reimplantação.
A implantação de novos arquivos ou a reimplantação dos mesmos arquivos nas mesmas localizações em instâncias pode falhar por estes motivos:
-
Você especificou um nome de aplicativo diferente para uma redistribuição da mesma revisão nas mesmas instâncias. A redistribuição falha porque, mesmo que o nome do grupo de implantação seja o mesmo, o uso de um nome de aplicativo diferente significa que um ID de grupo de implantação subjacente diferente está sendo usado.
-
Você excluiu e recriou um grupo de implantação para um aplicativo e depois tentou reimplantar a mesma revisão no grupo de implantação. A reimplantação falha porque, mesmo que o nome do grupo de implantação seja o mesmo, CodeDeploy faz referência a um ID de grupo de implantação subjacente diferente.
-
Você excluiu um aplicativo e um grupo de implantação em e CodeDeploy, em seguida, criou um novo aplicativo e grupo de implantação com os mesmos nomes dos que você excluiu. Depois disso, você tentou reimplantar uma revisão que havia sido implantada no grupo de implantação anterior no novo grupo de implantação com o mesmo nome. A reimplantação falha porque, embora os nomes do aplicativo e do grupo de implantação sejam os mesmos, CodeDeploy ainda fazem referência ao ID do grupo de implantação que você excluiu.
-
Você implantou uma revisão em um grupo de implantação e, em seguida, implantou a mesma revisão em outro grupo de implantação para as mesmas instâncias. A segunda implantação falha porque CodeDeploy faz referência a um ID de grupo de implantação subjacente diferente.
-
Você implantou uma revisão em um grupo de implantação e, em seguida, implantou outra revisão em outro grupo de implantação para as mesmas instâncias. Existe pelo menos um arquivo com o mesmo nome e no mesmo local em que o segundo grupo de implantação está tentando implantar. A segunda implantação falha porque CodeDeploy não remove o arquivo existente antes do início da segunda implantação. Ambas as implantações > fazem referência a um grupo de implantação diferente. IDs
-
Você implantou uma revisão em CodeDeploy, mas há pelo menos um arquivo com o mesmo nome e no mesmo local. A implantação falha porque, por padrão, CodeDeploy não remove o arquivo existente antes do início da implantação.
Para resolver essas situações, siga um destes procedimentos:
-
Remova os arquivos das localizações e instâncias em que eles foram implantados anteriormente e, em seguida, tente de novo a implantação.
-
No AppSpec arquivo da revisão, nos eventos do ciclo de vida da BeforeInstall implantação ApplicationStop ou nos eventos do ciclo de vida da implantação, especifique um script personalizado para excluir arquivos em qualquer local que corresponda aos arquivos que sua revisão está prestes a instalar.
-
Implante ou reimplante os arquivos em localizações ou instâncias que não faziam parte de implementações anteriores.
-
Antes de excluir um aplicativo ou um grupo de implantação, implante uma revisão que contenha um AppSpec arquivo que especifique que nenhum arquivo deve ser copiado para as instâncias. Para a implantação, especifique o nome do aplicativo e o nome do grupo de implantação que usam o mesmo aplicativo subjacente e o IDs mesmo grupo de implantação daqueles que você está prestes a excluir. (Você pode usar o get-deployment-groupcomando para recuperar o ID do grupo de implantação.) CodeDeployusa o ID e o AppSpec arquivo do grupo de implantação subjacentes para remover todos os arquivos instalados na implantação anterior bem-sucedida.
Caminhos de arquivo longos causam erros do tipo “Nenhum arquivo ou diretório”
Para implantações em instâncias do Windows, se você tiver um caminho de arquivo com mais de 260 caracteres na seção de arquivos do seu arquivo appspec.yml, talvez as implantações falhem com um erro semelhante ao seguinte:
No such file or directory @ dir_s_mkdir -
C:\
your-long-file-path
Esse erro ocorre porque, por padrão, o Windows não permite caminhos de arquivo maiores que 260 caracteres, conforme detalhado na documentação da Microsoft
Para as versões 1.4.0 ou posteriores do CodeDeploy agente, você pode ativar caminhos de arquivo longos de duas maneiras, dependendo do processo de instalação do agente:
Se o CodeDeploy agente ainda não tiver sido instalado:
-
Na máquina em que você planeja instalar o CodeDeploy agente, habilite a chave de registro do
LongPathsEnabled
Windows usando este comando:New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
-
Instale o CodeDeploy agente. Para obter mais informações, consulte Instale o CodeDeploy agente.
Se o CodeDeploy agente já tiver sido instalado:
-
Na máquina do CodeDeploy agente, habilite a chave de registro do
LongPathsEnabled
Windows usando este comando:New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
-
Reinicie o CodeDeploy agente para que a alteração da chave do registro entre em vigor. Para reiniciar o agente, use o seguinte comando:
powershell.exe -Command Restart-Service -Name codedeployagent
Processos de execução longa podem fazer com que as implantações falhem
Para implantações no Amazon Linux, Ubuntu Server e RHEL instâncias, se você tiver um script de implantação que inicie um processo de longa execução, CodeDeploy poderá passar muito tempo aguardando o evento do ciclo de vida da implantação e, em seguida, falhar na implantação. Isso ocorre porque, se o processo for executado por mais tempo do que se espera que os processos em primeiro e segundo plano nesse evento durem, CodeDeploy interrompam e falhem, a implantação, mesmo que o processo ainda esteja sendo executado conforme o esperado.
Por exemplo, uma revisão de aplicativo contém dois arquivos em sua raiz, after-install.sh
e sleep.sh
. Seu AppSpec arquivo contém as seguintes instruções:
version: 0.0 os: linux files: - source: ./sleep.sh destination: /tmp hooks: AfterInstall: - location: after-install.sh timeout: 60
O after-install.sh
arquivo é executado durante o evento do ciclo de vida do AfterInstall aplicativo. Seu conteúdo é o seguinte:
#!/bin/bash /tmp/sleep.sh
O arquivo sleep.sh
contém o seguinte, que suspende a execução do programa por três minutos (180 segundos), simulando alguns processos de execução longa:
#!/bin/bash sleep 180
Quando after-install.sh
ligasleep.sh
, sleep.sh
inicia e funciona por três minutos (180 segundos), ou seja, dois minutos (120 segundos) após o tempo CodeDeploy esperado sleep.sh
(e, por relação,after-install.sh
) parar de funcionar. Após o tempo limite de um minuto (60 segundos), CodeDeploy interrompe e falha a implantação no evento do ciclo de vida do AfterInstall aplicativo, mesmo que sleep.sh
continue funcionando conforme o esperado. O seguinte erro é exibido:
Script at specified location: after-install.sh failed to complete in 60
seconds
.
Você não pode simplesmente adicionar um E comercial (&
) em after-install.sh
para executar sleep.sh
em segundo plano.
#!/bin/bash # Do not do this. /tmp/sleep.sh &
Isso pode deixar a implantação em um estado pendente por até o período padrão de tempo limite do evento do ciclo de vida da implantação de uma hora, após o qual CodeDeploy interrompe e falha a implantação no evento do ciclo de vida do AfterInstall aplicativo, como antes.
Emafter-install.sh
, chame da sleep.sh
seguinte forma, o que permite CodeDeploy continuar após o início da execução do processo:
#!/bin/bash /tmp/sleep.sh > /dev/null 2> /dev/null < /dev/null &
Na chamada anterior, sleep.sh
é o nome do processo que você deseja começar a executar em segundo plano, redirecionando stdout, stderr e stdin para /dev/null
.
Solução de problemas em um evento de AllowTraffic ciclo de vida com falha sem nenhum erro relatado nos registros de implantação
Em alguns casos, uma implantação azul/verde falha durante o evento do AllowTraffic ciclo de vida, mas os registros de implantação não indicam a causa da falha.
Essa falha geralmente é devido a verificações de integridade que são configuradas incorretamente no Elastic Load Balancing para o Classic Load Balancer, Application Load Balancer ou Network Load Balancer usado para gerenciar o tráfego do grupo de implantação.
Para resolver o problema, revise e corrija quaisquer erros na configuração de verificação de integridade do load balancer.
Para Classic Load Balancers, consulte Configurar Health Checks no Guia do usuário para Classic Load Balancers e ConfigureHealthCheckna versão 2012-06-01 do Elastic Load API Balancing Reference.
Para Application Load Balancer, consulte Verificações de integridade de grupos de destino no Manual do usuário de Application Load Balancers.
Para Network Load Balancer, consulte Verificações de integridade de grupos de destino no Manual do usuário de Network Load Balancers.
Solução de problemas de falha ApplicationStop ou BeforeBlockTraffic evento do ciclo AfterBlockTraffic de vida da implantação
Durante uma implantação, o CodeDeploy agente executa os scripts especificados para ApplicationStop BeforeBlockTraffic, e AfterBlockTraffic no AppSpec arquivo da implantação anterior bem-sucedida. (Todos os outros scripts são executados a partir do AppSpec arquivo na implantação atual.) Se um desses scripts contiver um erro e não for executado com sucesso, a implantação poderá falhar.
Os possíveis motivos dessas falhas incluem:
-
O CodeDeploy agente encontra o
arquivo no local correto, mas o local listado nodeployment-group-id
_last_successful_install
arquivo não existe.deployment-group-id
_last_successful_installNo Amazon Linux, no Ubuntu Server e nas RHEL instâncias, esse arquivo deve existir em
/opt/codedeploy-agent/deployment-root/deployment-instructions
.Em instâncias do Windows Server, esse arquivo deve ser armazenado na pasta
C:\ProgramData\Amazon\CodeDeploy\deployment-instructions
. -
No local listado no
arquivo, o AppSpec arquivo é inválido ou os scripts não são executados com êxito.deployment-group-id
_last_successful_install -
O script contém um erro que não pode ser corrigido e, portanto, nunca é executado com êxito.
Use o CodeDeploy console para investigar por que uma implantação pode ter falhado durante qualquer um desses eventos. Na página de detalhes da implantação, escolha View events (Exibir eventos). Na página de detalhes da instância, na AfterBlockTrafficlinha ApplicationStopBeforeBlockTraffic, ou, escolha Exibir registros. Ou use o AWS CLI para chamar o get-deployment-instancecomando.
Se a causa da falha for um script da última implantação bem-sucedida que nunca foi executado com êxito, crie uma implantação e especifique que as AfterBlockTraffic falhas ApplicationStop BeforeBlockTraffic, e devem ser ignoradas. Há duas maneiras de fazer isso:
-
Use o CodeDeploy console para criar uma implantação. Na página Criar implantação, em Falha no evento ApplicationStop do ciclo de vida, escolha Não falhar na implantação em uma instância se esse evento do ciclo de vida na instância falhar.
-
Use o AWS CLI para chamar o create-deployment comando e incluir a
--ignore-application-stop-failures
opção.
Quando você implantar a revisão de aplicativo novamente, a implantação continuará mesmo se algum desses três eventos de ciclo de vida falhar. Se a nova revisão incluir scripts fixos para esses eventos de ciclo de vida, as implementações futuras poderão ser bem-sucedidas sem a aplicação dessa correção.
Solução de problemas em um evento DownloadBundle de ciclo de vida de implantação com falha com UnknownError: não aberto para leitura
Se você estiver tentando implantar uma revisão do aplicativo a partir do Amazon S3 e a implantação falhar durante o evento do ciclo de vida da DownloadBundle implantação com o erro: UnknownError: not opened
for reading
-
Houve um erro interno do serviço do Amazon S3. Implante novamente a revisão de aplicativo.
-
O perfil da IAM instância na sua EC2 instância não tem permissões para acessar a revisão do aplicativo no Amazon S3. Para obter informações sobre políticas de bucket do Amazon S3, consulte Envie uma revisão CodeDeploy para o Amazon S3 (EC2/Somente implantações locais) e Pré-requisitos de implantação.
-
As instâncias nas quais você implanta estão associadas a uma AWS região (por exemplo, Oeste dos EUA (Oregon)), mas o bucket do Amazon S3 que contém a revisão do aplicativo está associado a AWS outra região (por exemplo, Leste dos EUA (Norte da Virgínia)). Certifique-se de que a revisão do aplicativo esteja em um bucket do Amazon S3 associado à mesma AWS região das instâncias.
Na página de detalhes do evento da implantação, na linha Download bundle (Fazer download do pacote), escolha View logs (Exibir logs). Ou use o AWS CLI para chamar o get-deployment-instancecomando. Se esse erro tiver ocorrido, deverá haver um erro na saída com o código UnknownError
e a mensagem not opened for reading
.
Para determinar o motivo desse erro:
-
Habilite o registro em log em pelo menos uma das instâncias e depois implante novamente a revisão de aplicativo.
-
Examine o arquivo de log para encontrar o erro. Mensagens de erro comuns para esse problema incluem a frase "acesso negado".
-
Depois de examinar os arquivos de log, recomendamos que você desabilite o registro em log para reduzir o tamanho do arquivo de log e a quantidade de informações confidenciais que poderão aparecer na saída em texto sem formatação na instância no futuro.
Para obter informações sobre como encontrar o arquivo de registro de conexões e ativar e desativar o registro de conexões, consulte :log_aws_wire:
a referência de configuração do CodeDeploy agente.
Solução de problemas de erros relacionados a todos os eventos de ciclo de vida ignorados
Se todos os eventos do ciclo de vida de uma implantação local EC2 ou de uma implantação local forem ignorados, você poderá receber um erro semelhante a. The overall deployment failed because too many
individual instances failed deployment, too few healthy instances are available for
deployment, or some instances in your deployment group are experiencing problems. (Error
code: HEALTH_CONSTRAINTS)
Aqui estão algumas causas e soluções possíveis:
-
O CodeDeploy agente pode não estar instalado ou em execução na instância. Para determinar se o CodeDeploy agente está em execução:
-
Para o servidor Amazon Linux RHEL ou Ubuntu, execute o seguinte:
systemctl status codedeploy-agent
-
Para o Windows, execute o seguinte:
powershell.exe -Command Get-Service -Name CodeDeployagent
Se o CodeDeploy agente não estiver instalado ou em execução, consulteVerifique se o CodeDeploy agente está em execução.
Talvez sua instância não consiga acessar o endpoint público CodeDeploy ou o Amazon S3 usando a porta 443. Faça uma das coisas a seguir:
-
Atribua um endereço IP público à instância e use a respectiva tabela de rotas para permitir o acesso à Internet. Certifique-se de que o grupo de segurança associado à instância permita acesso de saída pela porta 443 ()HTTPS. Para obter mais informações, consulte Protocolo de comunicação e porta para o CodeDeploy agente.
-
Se uma instância for provisionada em uma sub-rede privada, use um NAT gateway em vez de um gateway de internet na tabela de rotas. Para obter mais informações, consulte NATGateways.
-
-
A função de serviço de CodeDeploy pode não ter as permissões necessárias. Para configurar uma função de serviço do CodeDeploy, consulte Etapa 2: criar uma função de serviço para CodeDeploy.
-
Se você usa um HTTP proxy, verifique se ele está especificado na
:proxy_uri:
configuração do arquivo de configuração do CodeDeploy agente. Para obter mais informações, consulte CodeDeploy referência de configuração do agente. -
A assinatura de data e hora da sua instância de implantação pode não corresponder à assinatura de data e hora da sua solicitação de implantação. Procure um erro semelhante ao
Cannot reach InstanceService: Aws::CodeDeployCommand::Errors::InvalidSignatureException - Signature expired
do seu arquivo de log do CodeDeploy agente. Se você vir esse erro, siga as etapas em Solução de problemas de erros de implantação “InvalidSignatureException — Assinatura expirada: [hora] agora é anterior a [hora]”. Para obter mais informações, consulte Exibir dados de log para implantações CodeDeploy EC2/locais. -
O CodeDeploy agente pode parar de funcionar porque a instância está com pouca memória ou espaço no disco rígido. Tente reduzir o número de implantações arquivadas na sua instância atualizando a
max_revisions
configuração na configuração do CodeDeploy agente. Se você fizer isso para uma EC2 instância e o problema persistir, considere usar uma instância maior. Por exemplo, se o tipo de instância fort2.small
, tente usart2.medium
. Para obter mais informações, consulte Arquivos instalados pelo CodeDeploy agente , CodeDeploy referência de configuração do agente e Tipos de instância. -
A instância na qual você está implantando pode não ter um perfil de IAM instância anexado ou pode ter um perfil de IAM instância anexado que não tenha as permissões necessárias.
-
Se um perfil de IAM instância não estiver anexado à sua instância, crie um com as permissões necessárias e, em seguida, anexe-o.
-
Se um perfil de IAM instância já estiver anexado à sua instância, verifique se ele tem as permissões necessárias.
Depois de confirmar que o perfil de instância anexado está configurado com as permissões necessárias, reinicie a instância. Para obter mais informações, consulte Etapa 4: Crie um perfil de IAM instância para suas EC2 instâncias da Amazon IAMFunções da Amazon EC2 no Guia do EC2 usuário da Amazon.
-
PowerShell Os scripts do Windows não usam a versão de 64 bits do Windows PowerShell por padrão
Se um PowerShell script do Windows executado como parte de uma implantação depender da funcionalidade de 64 bits (por exemplo, porque consome mais memória do que um aplicativo de 32 bits permite ou chama bibliotecas que são oferecidas somente em uma versão de 64 bits), o script pode falhar ou não ser executado conforme o esperado. Isso ocorre porque, por padrão, CodeDeploy usa a versão de 32 bits do Windows PowerShell para executar PowerShell scripts do Windows que fazem parte de uma revisão do aplicativo.
Adicione um código como o seguinte ao início de qualquer script que precise ser executado com a versão de 64 bits do Windows PowerShell:
# Are you running in 32-bit mode? # (\SysWOW64\ = 32-bit mode) if ($PSHOME -like "*SysWOW64*") { Write-Warning "Restarting this script under 64-bit Windows PowerShell." # Restart this script under 64-bit Windows PowerShell. # (\SysNative\ redirects to \System32\ for 64-bit mode) & (Join-Path ($PSHOME -replace "SysWOW64", "SysNative") powershell.exe) -File ` (Join-Path $PSScriptRoot $MyInvocation.MyCommand) @args # Exit 32-bit script. Exit $LastExitCode } # Was restart successful? Write-Warning "Hello from $PSHOME" Write-Warning " (\SysWOW64\ = 32-bit mode, \System32\ = 64-bit mode)" Write-Warning "Original arguments (if any): $args" # Your 64-bit script code follows here... # ...
Embora as informações do caminho do arquivo nesse código possam parecer contra-intuitivas, o Windows de 32 bits PowerShell usa um caminho como:
c:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
O Windows de 64 bits PowerShell usa um caminho como:
c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe