Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risolvi i problemi relativi alla distribuzione EC2 /On-Premises
Argomenti
CodeDeploy errore relativo alle credenziali mancanti del plugin CommandPoller
La distribuzione non riesce con il messaggio «Convalida del messaggio PKCS7 firmato non riuscita»
I percorsi di file lunghi causano errori del tipo «Nessun file o directory di questo tipo»
I processi di lunga durata possono compromettere la riuscita delle distribuzioni
Risoluzione dei problemi relativi a tutti gli eventi del ciclo di vita ignorati
Nota
Le cause di molti guasti di distribuzione possono essere identificate rivedendo i file di log creati durante il processo di distribuzione. Per semplicità, consigliamo di utilizzare Amazon CloudWatch Logs per monitorare centralmente i file di registro anziché visualizzarli istanza per istanza. Per informazioni, consulta View CodeDeploy Logs in CloudWatch Logs Console
CodeDeploy errore relativo alle credenziali mancanti del plugin CommandPoller
Se si verifica un errore simile a InstanceAgent::Plugins::CodeDeployPlugin::CommandPoller: Missing credentials - please
check if this instance was started with an IAM instance profile
, il motivo potrebbe essere uno dei seguenti:
-
All'istanza su cui si esegue la distribuzione non è associato un profilo di IAM istanza.
-
Il profilo dell'IAMistanza non dispone delle autorizzazioni corrette configurate.
Un profilo di IAM istanza concede all' CodeDeploy agente l'autorizzazione a comunicare con Amazon S3 CodeDeploy e a scaricare la revisione da Amazon S3. Per alcuni EC2 esempi, consulta. Gestione delle identità e degli accessi per l' AWS CodeDeploy Per le istanze locali, consulta Working with On-Premises Instances.
La distribuzione non riesce con il messaggio «Convalida del messaggio PKCS7 firmato non riuscita»
Questo messaggio di errore indica che l'istanza sta eseguendo una versione dell' CodeDeploy agente che supporta solo l'algoritmo hash SHA -1. Il supporto per l'algoritmo hash SHA -2 è stato introdotto nella versione 1.0.1.854 dell' CodeDeploy agente, rilasciata a novembre 2015. A partire dal 17 ottobre 2016, le distribuzioni non riescono se viene installata una versione dell'agente precedente alla CodeDeploy 1.0.1.854. Per ulteriori informazioni, vedere AWS Passare all'algoritmo SHA256 hash per i SSL certificati,NOTICE: Ritiro degli agenti CodeDeploy
La distribuzione o la ridistribuzione degli stessi file alle stesse posizioni delle istanze avrà esito negativo e mostrerà l'errore "La distribuzione non è riuscita a causa di un file specificato già esistente in questa posizione"
Quando si CodeDeploy tenta di distribuire un file su un'istanza ma un file con lo stesso nome esiste già nella posizione di destinazione specificata, la distribuzione su quell'istanza potrebbe non riuscire. È possibile che venga visualizzato il messaggio di errore «La distribuzione non è riuscita perché un file specificato esiste già in questa posizione: location-name
.» Questo perché, durante ogni distribuzione, elimina CodeDeploy innanzitutto tutti i file della distribuzione precedente, elencati in un file di registro di pulizia. Se nelle cartelle di installazione di destinazione sono presenti file che non sono elencati in questo file di pulizia, l' CodeDeploy agente per impostazione predefinita lo interpreta come un errore e non riesce a eseguire la distribuzione.
Nota
Nelle istanze di Amazon Linux e Ubuntu Server, il file di pulizia si trova in. RHEL /opt/codedeploy-agent/deployment-root/deployment-instructions/
Nelle istanze di Windows Server, la posizione è. C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\
Il modo più semplice per evitare questo errore è specificare un'opzione diversa dal comportamento predefinito per l'esito negativo della distribuzione. Per ciascuna distribuzione, è possibile scegliere se far sì che la distribuzione abbia esito negativo, sovrascrivere i file non inclusi nel file di pulizia o conservare i file già presenti nell'istanza.
L'opzione di sovrascrittura è utile, ad esempio, se collochi manualmente un file in un'istanza dopo l'ultima distribuzione e poi aggiungi un file con lo stesso nome nella successiva revisione dell'applicazione.
Potresti scegliere l'opzione di conservazione per i file nell'istanza che desideri inserire nella successiva distribuzione senza doverli aggiungere al pacchetto della revisione dell'applicazione. L'opzione retention è utile anche se i file dell'applicazione si trovano già nell'ambiente di produzione e si desidera distribuirli utilizzando CodeDeploy per la prima volta. Per ulteriori informazioni, consulta Crea una distribuzione EC2 /On-Premises Compute Platform (console) e Comportamento di rollback con il contenuto esistente.
Risolvere i problemi di distribuzione The deployment failed because a specified file already exists at
this location
Se scegliete di non specificare un'opzione per sovrascrivere o conservare il contenuto CodeDeploy rilevato nelle ubicazioni di distribuzione di destinazione (o se non specificate alcuna opzione di distribuzione per la gestione del contenuto esistente in un comando programmatico), potete scegliere di risolvere l'errore.
Le informazioni seguenti si applicano solo se scegli di non conservare o sovrascrivere i contenuti.
Se si tenta di ridistribuire file con gli stessi nomi e posizioni, è più probabile che la ridistribuzione abbia successo se si specifica il nome dell'applicazione e il gruppo di distribuzione con lo stesso ID del gruppo di distribuzione sottostante utilizzato in precedenza. CodeDeploy utilizza l'ID del gruppo di distribuzione sottostante per identificare i file da rimuovere prima di una ridistribuzione.
La distribuzione di nuovi file o la ridistribuzione degli stessi file nelle stesse posizioni sulle istanze può avere esito negativo per questi motivi:
-
Hai specificato un nome dell'applicazione diverso per una ridistribuzione della stessa revisione alle stesse istanze. La ridistribuzione ha esito negativo perché, anche se il nome del gruppo di distribuzione è lo stesso, l'uso di un nome dell'applicazione diverso comporta l'utilizzo di un ID gruppo di distribuzione sottostante differente.
-
Hai eliminato e ricreato un gruppo di distribuzione per un'applicazione e poi hai tentato di ridistribuire la stessa revisione al gruppo di distribuzione. La ridistribuzione non riesce perché, anche se il nome del gruppo di distribuzione è lo stesso, CodeDeploy fa riferimento a un ID del gruppo di distribuzione sottostante diverso.
-
Hai eliminato un'applicazione e un gruppo di distribuzione in CodeDeploy, quindi hai creato una nuova applicazione e un gruppo di distribuzione con gli stessi nomi di quelli eliminati. Dopodiché hai tentato di ridistribuire al nuovo gruppo di distribuzione una revisione che era stata distribuita al gruppo di distribuzione precedente con lo stesso nome. La ridistribuzione non riesce perché, anche se i nomi dell'applicazione e del gruppo di distribuzione sono gli stessi, fa CodeDeploy comunque riferimento all'ID del gruppo di distribuzione eliminato.
-
Hai distribuito una revisione a un gruppo di distribuzione e poi hai distribuito la stessa revisione a un altro gruppo di distribuzione per le stesse istanze. La seconda distribuzione non riesce perché CodeDeploy fa riferimento a un ID del gruppo di distribuzione sottostante diverso.
-
Hai distribuito una revisione a un gruppo di distribuzione e poi hai distribuito un'altra revisione a un altro gruppo di distribuzione per le stesse istanze. Vi è almeno un file con lo stesso nome e nella stessa posizione che il secondo gruppo di distribuzione cerca di distribuire. La seconda distribuzione non riesce perché CodeDeploy non rimuove il file esistente prima dell'inizio della seconda distribuzione. Entrambe le distribuzioni > fanno riferimento a gruppi di distribuzione diversi. IDs
-
Hai distribuito una revisione in CodeDeploy, ma esiste almeno un file con lo stesso nome e nella stessa posizione. La distribuzione non riesce perché, per impostazione predefinita, CodeDeploy non rimuove il file esistente prima dell'inizio della distribuzione.
Per risolvere queste situazioni, procedi in uno dei seguenti modi:
-
Rimuovi i file dalle posizioni e dalle istanze in cui erano stati distribuiti in precedenza e prova a eseguire nuovamente la distribuzione.
-
Nel AppSpec file della revisione, negli eventi del ciclo di vita della BeforeInstall distribuzione ApplicationStop o della distribuzione, specifica uno script personalizzato per eliminare i file in tutte le posizioni che corrispondono ai file che la revisione sta per installare.
-
Distribuisci o ridistribuisci i file a posizioni o istanze che non erano parte di distribuzioni precedenti.
-
Prima di eliminare un'applicazione o un gruppo di distribuzione, distribuite una revisione che contenga un AppSpec file che specifichi l'assenza di file da copiare nelle istanze. Per la distribuzione, specifica il nome dell'applicazione e il nome del gruppo di distribuzione che utilizzano la stessa applicazione e lo stesso gruppo di distribuzione sottostanti di IDs quelli che stai per eliminare. (È possibile utilizzare il get-deployment-groupcomando per recuperare l'ID del gruppo di distribuzione.) CodeDeployutilizza l'ID e il AppSpec file del gruppo di distribuzione sottostanti per rimuovere tutti i file installati nella precedente distribuzione riuscita.
I percorsi di file lunghi causano errori del tipo «Nessun file o directory di questo tipo»
Per le distribuzioni su istanze di Windows, se nella sezione file del file appspec.yml è presente un percorso di oltre 260 caratteri, è possibile che le distribuzioni non riescano con un errore simile al seguente:
No such file or directory @ dir_s_mkdir -
C:\
your-long-file-path
Per le versioni CodeDeploy dell'agente 1.4.0 o successive, è possibile abilitare i percorsi di file lunghi in due modi, a seconda del processo di installazione dell'agente:
Se l' CodeDeploy agente non è ancora stato installato:
-
Sul computer in cui intendi installare l' CodeDeploy agente, abilita la chiave di registro di
LongPathsEnabled
Windows utilizzando questo comando:New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
-
Installa l' CodeDeploy agente. Per ulteriori informazioni, consulta Installa l' CodeDeploy agente.
Se l' CodeDeploy agente è già stato installato:
-
Sul computer dell' CodeDeploy agente, abilita la chiave di registro di
LongPathsEnabled
Windows utilizzando questo comando:New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
-
Riavviare l' CodeDeploy agente per rendere effettiva la modifica della chiave di registro. Per riavviare l'agente, utilizzate questo comando:
powershell.exe -Command Restart-Service -Name codedeployagent
I processi di lunga durata possono compromettere la riuscita delle distribuzioni
Per le distribuzioni su Amazon Linux, Ubuntu Server e RHEL istanze, se disponi di uno script di distribuzione che avvia un processo di lunga durata, CodeDeploy potresti attendere a lungo l'evento del ciclo di vita della distribuzione e poi fallire la distribuzione. Questo perché se il processo dura più a lungo di quello previsto per i processi in primo piano e in background in quell'evento, CodeDeploy interrompe e fallisce la distribuzione, anche se il processo è ancora in esecuzione come previsto.
Ad esempio, una revisione dell'applicazione contiene due file nella propria radice, after-install.sh
e sleep.sh
. Il AppSpec file contiene le seguenti istruzioni:
version: 0.0 os: linux files: - source: ./sleep.sh destination: /tmp hooks: AfterInstall: - location: after-install.sh timeout: 60
Il after-install.sh
file viene eseguito durante l'evento del ciclo di vita AfterInstall dell'applicazione. Di seguito sono descritti i contenuti:
#!/bin/bash /tmp/sleep.sh
Il file sleep.sh
include il contenuto seguente, che sospende l'esecuzione del programma per tre minuti (180 secondi), simulando un processo di lunga durata:
#!/bin/bash sleep 180
In caso di after-install.sh
chiamatasleep.sh
, viene sleep.sh
avviato ed eseguito per tre minuti (180 secondi), ovvero due minuti (120 secondi) dopo l'orario CodeDeploy previsto sleep.sh
(e, per relazione,after-install.sh
) l'interruzione dell'esecuzione. Dopo il timeout di un minuto (60 secondi), CodeDeploy interrompe e fallisce la distribuzione all'evento del ciclo di vita AfterInstall dell'applicazione, anche se sleep.sh
continua a funzionare come previsto. Viene visualizzato l'errore seguente:
Script at specified location: after-install.sh failed to complete in 60
seconds
.
Non è sufficiente aggiungere una e commerciale (&
) in after-install.sh
per eseguire sleep.sh
in background.
#!/bin/bash # Do not do this. /tmp/sleep.sh &
In questo modo è possibile lasciare la distribuzione in sospeso fino al periodo di timeout predefinito di un'ora per l'evento del ciclo di vita dell'implementazione, dopodiché CodeDeploy interrompe e fallisce la distribuzione in occasione dell'evento del ciclo di vita dell'applicazione come in precedenza. AfterInstall
Inafter-install.sh
, chiama sleep.sh
come segue, il che consente CodeDeploy di continuare dopo l'avvio del processo:
#!/bin/bash /tmp/sleep.sh > /dev/null 2> /dev/null < /dev/null &
Nella chiamata precedente sleep.sh
è il nome del processo la cui esecuzione deve essere avviata in background, con il reindirizzamento di stdout, stderr e stdin a /dev/null
.
Risoluzione dei problemi relativi a un evento AllowTraffic del ciclo di vita non riuscito senza che sia stato riportato alcun errore nei log di distribuzione
In alcuni casi, una distribuzione blu/verde non riesce durante l'evento del AllowTraffic ciclo di vita, ma i registri di distribuzione non indicano la causa dell'errore.
Questo errore è in genere dovuto a controlli di integrità configurati in modo errato in Elastic Load Balancing for the Classic Load Balancer, Application Load Balancer o Network Load Balancer utilizzati per gestire il traffico per il gruppo di distribuzione.
Per risolvere il problema, esamina e correggi eventuali errori nella configurazione del controllo dello stato per il sistema di bilanciamento del carico.
Per i Classic Load Balancer, consulta Configure Health Checks nella User Guide for Classic Load Balancers e ConfigureHealthChecknella versione di riferimento di Elastic Load Balancing 2012-06-01. API
Per gli Application Load Balancer, consulta Health Checks for Your Target Groups nella User Guide for Application Load Balancers.
Per i Network Load Balancer, consulta Health Checks for Your Target Groups nella Network Load Balancer User Guide.
Risoluzione dei problemi relativi a un evento non riuscito o ApplicationStop AfterBlockTraffic relativo al BeforeBlockTraffic ciclo di vita dell'implementazione
Durante una distribuzione, l' CodeDeploy agente esegue gli script specificati per ApplicationStop e BeforeBlockTraffic contenuti AfterBlockTraffic nel AppSpec file della precedente distribuzione riuscita. (Tutti gli altri script vengono eseguiti dal AppSpec file nella distribuzione corrente.) Se uno di questi script contiene un errore e non viene eseguito correttamente, è possibile che la distribuzione non riesca.
Le possibili cause di questa situazione includono:
-
L' CodeDeploy agente trova il
file nella posizione corretta, ma la posizione elencata neldeployment-group-id
_last_successful_install
file non esiste.deployment-group-id
_last_successful_installSu Amazon Linux, Ubuntu Server e RHEL istanze, questo file deve esistere in
/opt/codedeploy-agent/deployment-root/deployment-instructions
.Nelle istanze di Windows Server, questo file deve essere archiviato nella
C:\ProgramData\Amazon\CodeDeploy\deployment-instructions
cartella. -
Nella posizione elencata nel
file, il AppSpec file non è valido o gli script non vengono eseguiti correttamente.deployment-group-id
_last_successful_install -
Lo script contiene un errore che non può essere corretto, pertanto non verrà mai eseguito correttamente.
Usa la CodeDeploy console per indagare sul motivo per cui una distribuzione potrebbe non essere riuscita durante uno di questi eventi. Nella pagina dei dettagli per la distribuzione scegliere View events (Visualizza eventi). Nella pagina dei dettagli dell'istanza, nella AfterBlockTrafficriga ApplicationStopBeforeBlockTraffic, o, scegli Visualizza registri. Oppure usa il AWS CLI per chiamare il get-deployment-instancecomando.
Se la causa dell'errore è uno script dell'ultima distribuzione riuscita che non viene mai eseguito correttamente, crea una distribuzione e specifica che gli AfterBlockTraffic errori ApplicationStop BeforeBlockTraffic, e devono essere ignorati. Ci sono due modi per effettuare questa operazione:
-
Usa la CodeDeploy console per creare una distribuzione. Nella pagina Crea distribuzione, in Errore dell'evento ApplicationStop del ciclo di vita, scegli Non interrompere la distribuzione su un'istanza se questo evento del ciclo di vita sull'istanza fallisce.
-
Usa AWS CLI per chiamare il create-deployment comando e includi l'opzione.
--ignore-application-stop-failures
Quando si distribuisce nuovamente la revisione dell'applicazione, la distribuzione continua anche se uno di questi tre eventi del ciclo di vita non va a buon fine. Se la nuova revisione include script fissi per quegli eventi del ciclo di vita, è possibile che le distribuzioni future riescano senza applicare questa correzione.
Risoluzione dei problemi relativi a un evento del ciclo di vita di DownloadBundle distribuzione non riuscito con UnknownError: not open-for reading
Se stai tentando di distribuire una revisione dell'applicazione da Amazon S3 e la distribuzione non riesce durante l'evento del ciclo di vita DownloadBundle della distribuzione con l'errore: UnknownError: not opened
for reading
-
Si è verificato un errore interno del servizio Amazon S3. Distribuisci nuovamente la revisione dell'applicazione.
-
Il profilo dell'IAMistanza sulla tua EC2 istanza non dispone delle autorizzazioni per accedere alla revisione dell'applicazione in Amazon S3. Per informazioni sulle policy dei bucket di Amazon S3, consulta e. Invia una revisione CodeDeploy ad Amazon S3 EC2 (/solo distribuzioni locali) Prerequisiti di distribuzione
-
Le istanze in cui esegui la distribuzione sono associate a una AWS regione (ad esempio, Stati Uniti occidentali (Oregon)), ma il bucket Amazon S3 che contiene la revisione dell'applicazione è associato a un'altra AWS regione (ad esempio, Stati Uniti orientali (Virginia settentrionale)). Assicurati che la revisione dell'applicazione si trovi in un bucket Amazon S3 associato alla AWS stessa regione delle istanze.
Nella pagina dei dettagli degli eventi per la distribuzione, nella riga Download bundle (Scarica bundle), scegliere View logs (Visualizza log). Oppure usa per chiamare il comando AWS CLI . get-deployment-instance Se si verifica, l'errore deve essere indicato nell'output con il codice di errore UnknownError
e il messaggio di errore not opened for reading
.
Per stabilire il motivo di questo errore:
-
Abilitare la registrazione in rete su almeno una delle istanze, quindi distribuire nuovamente la revisione dell'applicazione.
-
Esaminare il file di registrazione in rete per trovare l'errore. I messaggi di errore più comuni per questo problema includono la frase "access denied" (accesso negato).
-
Dopo avere esaminato i file di log, è consigliabile disabilitare la registrazione in rete per ridurre la dimensione del file di log e la quantità di informazioni sensibili che in futuro potrebbero comparire nell'output in testo normale nell'istanza.
Per informazioni su come trovare il file di registrazione dei cavi e abilitare e disabilitare il cablaggio, vedere :log_aws_wire:
nella guida di riferimento alla configurazione CodeDeploy dell'agente.
Risoluzione dei problemi relativi a tutti gli eventi del ciclo di vita ignorati
Se tutti gli eventi del ciclo di vita di una distribuzione EC2 o di una distribuzione locale vengono ignorati, è possibile che venga visualizzato un errore simile 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)
Di seguito sono elencate alcune possibili cause e soluzioni:
-
L' CodeDeploy agente potrebbe non essere installato o in esecuzione sull'istanza. Per determinare se l' CodeDeploy agente è in esecuzione:
-
Per il server Amazon Linux RHEL o Ubuntu, esegui quanto segue:
systemctl status codedeploy-agent
-
Per Windows, esegui:
powershell.exe -Command Get-Service -Name CodeDeployagent
Se l' CodeDeploy agente non è installato o non è in esecuzione, consultaVerifica che l' CodeDeploy agente sia in esecuzione.
L'istanza potrebbe non essere in grado di raggiungere l'endpoint pubblico CodeDeploy o Amazon S3 utilizzando la porta 443. Provare con una delle seguenti operazioni:
-
Assegna un indirizzo IP pubblico all'istanza e utilizza la tabella di routing per consentire l'accesso a Internet. Assicurati che il gruppo di sicurezza associato all'istanza consenta l'accesso in uscita tramite la porta 443 (). HTTPS Per ulteriori informazioni, consulta Protocollo di comunicazione e porta per l'agente CodeDeploy .
-
Se il provisioning di un'istanza viene effettuato in una sottorete privata, utilizzate un NAT gateway anziché un gateway Internet nella tabella delle rotte. Per ulteriori informazioni, consulta NAT Gateways.
-
-
È CodeDeploy possibile che il ruolo di servizio per non disponga delle autorizzazioni richieste. Per configurare un ruolo del servizio CodeDeploy, consulta Fase 2: Creare un ruolo di servizio per CodeDeploy.
-
Se utilizzate un HTTP proxy, assicuratevi che sia specificato nell'
:proxy_uri:
impostazione del file di configurazione dell' CodeDeploy agente. Per ulteriori informazioni, consulta CodeDeploy riferimento alla configurazione dell'agente. -
La data e l'ora dell'istanza di distribuzione potrebbero non corrispondere alla data e all'ora della richiesta di distribuzione. Cerca un errore simile a quello presente
Cannot reach InstanceService: Aws::CodeDeployCommand::Errors::InvalidSignatureException - Signature expired
nel file di registro CodeDeploy dell'agente. Se l'errore è presente, segui i passaggi descritti in Risoluzione degli errori di distribuzione «InvalidSignatureException — Firma scaduta: [ora] è precedente a [ora]». Per ulteriori informazioni, consulta Visualizzazione dei dati di registro per le distribuzioni CodeDeploy EC2/on-premise. -
L' CodeDeploy agente potrebbe smettere di funzionare perché un'istanza sta esaurendo la memoria o lo spazio su disco rigido. Prova a ridurre il numero di distribuzioni archiviate sulla tua istanza aggiornando l'
max_revisions
impostazione nella configurazione dell'agente. CodeDeploy Se esegui questa operazione per un'EC2istanza e il problema persiste, prendi in considerazione l'utilizzo di un'istanza più grande. Ad esempio, se il tipo di istanza èt2.small
, prova a usare un'stanzat2.medium
. Per ulteriori informazioni, consulta File installati dall'agente CodeDeploy CodeDeploy riferimento alla configurazione dell'agente, e Tipi di istanze. -
L'istanza su cui stai eseguendo la distribuzione potrebbe non avere un profilo di IAM istanza collegato oppure potrebbe avere un profilo di IAM istanza collegato che non dispone delle autorizzazioni richieste.
-
Se un profilo di IAM istanza non è collegato alla tua istanza, creane uno con le autorizzazioni richieste e poi allegalo.
-
Se un profilo di IAM istanza è già collegato all'istanza, assicurati che disponga delle autorizzazioni necessarie.
Dopo aver verificato che il profilo di istanza collegato è configurato con le autorizzazioni richieste, riavvia l'istanza. Per ulteriori informazioni, consulta Fase 4: crea un profilo di IAM istanza per le tue EC2 istanze Amazon la sezione IAMRuoli per Amazon EC2 nella Amazon EC2 User Guide.
-
Per impostazione predefinita, PowerShell gli script di Windows non riescono a utilizzare la versione a 64 bit PowerShell di Windows
Se uno PowerShell script di Windows eseguito come parte di una distribuzione si basa sulla funzionalità a 64 bit (ad esempio, perché consuma più memoria di quella consentita da un'applicazione a 32 bit o chiama librerie offerte solo in una versione a 64 bit), lo script potrebbe bloccarsi o non essere eseguito come previsto. Questo perché, per impostazione predefinita, CodeDeploy utilizza la versione a 32 bit di Windows PowerShell per eseguire PowerShell script Windows che fanno parte della revisione di un'applicazione.
Aggiungi codice come il seguente all'inizio di qualsiasi script che deve essere eseguito con la versione a 64 bit di 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... # ...
Sebbene le informazioni sul percorso dei file contenute in questo codice possano sembrare controintuitive, Windows a 32 bit PowerShell utilizza un percorso come:
c:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
Windows a 64 bit PowerShell utilizza un percorso come:
c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe