Pagina 1 di 1

[Risolto] session-setup avvia ancora PowerShell a 32 bit

Pubblicato: 4 agosto 2017 - 10:57
di swbsf
Buongiorno,
Lo ammetto, è un argomento piuttosto complicato, quindi mi rivolgo a voi per vedere se qualcuno ha qualche suggerimento :)

Il mio script PowerShell:

Codice: Seleziona tutto

$ErrorActionPreference="SilentlyContinue"
Stop-Transcript | out-null
$ErrorActionPreference="Continue"
Start-Transcript -path c:\tmp\Win10.log -append

if ([Environment]::Is64BitProcess) {
        echo "64 bit powershell" }
Else { echo "32 bit powershell" }
Stop-Transcript
La fine di impostazione della sessione :

Codice: Seleziona tutto

        cmd="c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\\tmp\\Win10.ps1"
        run(cmd,timeout=7200)
E i registri mi dicono:

Codice: Seleziona tutto


    **********************
    Début de la transcription Windows Powershell
    Heure de début : 20170804094010
    Nom d'utilisateur : DESKTOP-IJCDS8M\bobby
    Utilisateur runAs : DESKTOP-IJCDS8M\bobby
    Ordinateur : DESKTOP-IJCDS8M (Microsoft Windows NT 10.0.15063.0)
    Application hôte : c:\Windows\System32\WindowsPowershell\v1.0\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\tmp\Win10.ps1
    ID de processus : 3080
    PSVersion: 5.1.15063.502
    PSEdition: Desktop
    PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.15063.502
    BuildVersion: 10.0.15063.502
    CLRVersion: 4.0.30319.42000
    WSManStackVersion: 3.0
    PSRemotingProtocolVersion: 2.3
    SerializationVersion: 1.1.0.1
    **********************
    Transcription démarrée, le fichier de sortie est c:\tmp\Win10.log
    32 bit powershell
Incredibile, vero? Il nome dell'applicazione, con il percorso completo, è corretto, eppure avvia la versione a 32 bit. Ma la versione a 32 bit non ha nemmeno la metà dei comandi di cui ho bisogno. Grazie, Microsoft.

Re: session-setup avvia sempre PowerShell in modalità a 32 bit

Pubblicato: 4 agosto 2017 - 11:02
di swbsf
Il cappio si stringe!

Codice: Seleziona tutto

    >>> run(u'c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -Command "[Environment]::Is64BitProcess"')
    <RunOuput returncode :0>
    u'False\r\n'

Re: session-setup avvia sempre PowerShell in modalità a 32 bit

Pubblicato: 4 agosto 2017 - 11:20
di swbsf
Okay, quindi farò le domande e le risposte. ;)
La risposta è stata trovata qui: https://stackoverflow.com/a/23395020/3829020
Che furbacchione questo Windows!
Per farla breve, se cerchi il processo in System32, questa directory è virtualizzata per processi a 32 bit (in questo caso, Python), quindi finisci sempre con una versione a 32 bit di PowerShell. Pertanto, devi cercarlo in %SystemRoot%\SysNative.
Meno male.

Re: [Risolto] session-setup avvia ancora PowerShell a 32 bit

Pubblicato: 4 agosto 2017 - 16:07
di agauvrit
Ottima soluzione!

Anche noi abbiamo avuto lo stesso problema quando cercavamo di richiamare dism.exe su un pacchetto; bisogna controllare l'alias di Sysnative per assicurarsi di richiamare quello corretto.

Alexandre