Página 1 de 1

[Resuelto] La configuración de sesión aún inicia PowerShell en 32 bits

Publicado: 4 de agosto de 2017 - 10:57
por swbsf
Buen día,
Reconozco que es bastante complicado, por lo que recurro a usted para ver si alguien tiene alguna idea :)

Mi script de PowerShell:

Código: Seleccionar todo

$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
El fin de configuración de sesión :

Código: Seleccionar todo

        cmd="c:\\Windows\\System32\\WindowsPowershell\\v1.0\\powershell.exe -NoProfile -NonInteractive -ExecutionPolicy Bypass -File c:\\tmp\\Win10.ps1"
        run(cmd,timeout=7200)
Y los registros me dicen:

Código: Seleccionar todo


    **********************
    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
Increíble, ¿verdad? El nombre de la aplicación, con la ruta completa, es correcto, y aun así inicia la versión de 32 bits. Pero esta no tiene ni la mitad de los comandos que necesito. Gracias, Microsoft.

Re: la configuración de sesión siempre inicia PowerShell en modo de 32 bits

Publicado: 4 de agosto de 2017 - 11:02 a. m.
por swbsf
¡El nudo se aprieta!

Código: Seleccionar todo

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

Re: la configuración de sesión siempre inicia PowerShell en modo de 32 bits

Publicado: 4 de agosto de 2017 - 11:20
por swbsf
Bien, entonces haré las preguntas y respuestas. ;)
La respuesta se encontró aquí: https://stackoverflow.com/a/23395020/3829020
¡Qué astuto Windows!
En resumen, si buscas el proceso en System32, este directorio está virtualizado para procesos de 32 bits (en este caso, Python), por lo que siempre terminas con PowerShell de 32 bits. Por lo tanto, tienes que buscarlo en %SystemRoot%\SysNative.
Uf.

Re: [Resuelto] La configuración de sesión aún inicia PowerShell en 32 bits

Publicado: 4 de agosto de 2017 - 16:07
por agauvrit
¡Excelente solución!

Tuvimos el mismo problema al intentar llamar a dism.exe en un paquete; hay que revisar el alias de Sysnative para asegurarse de que se está llamando al correcto.

Alexandre