script run por open from ejecutar diferencias desde commands comandos cambiar bat abrir powershell cmd

run - powershell vs cmd diferencias



¿Cómo iniciar 64-bit powershell desde 32-cm cmd.exe? (2)

Sé que es una pregunta extraña, pero estoy encerrado en un proveedor externo que lanza un cmd.exe de 32 bits en un servidor en clúster Windows Server 2008 R2 de 64 bits. Desde aquí quiero iniciar una ventana de PowerShell de 64 bits y ejecutar un script.

Aquí está mi prueba:

powershell.exe "Get-Module -ListAvailable| Where-Object {$_.name -eq ''FailoverClusters''}"

Si ejecuto esto desde un cmd.exe de 32 bits, no me devuelven nada. Si ejecuto desde un cmd.exe de 64 bits, obtengo:

ModuleType Name ExportedCommands ---------- ---- ---------------- Manifest FailoverClusters {}

¿Alguna idea sobre lo que puedo hacer para invocar un script powershell de 64 bits desde un shell cmd de 32 bits?


syswow64 le permite ejecutar ejecutables del sistema de 32 bits a partir del código de 64 bits. sysnative le permite ejecutar ejecutables del sistema de 64 bits a partir del código de 32 bits.

Entonces, necesitas ejecutar:

% SystemRoot% / sysnative / WindowsPowerShell / v1.0 / powershell.exe


Este script verificará qué versión de powershell está ejecutando y se relanzará a 64 bits si está ejecutando en 32 bits. Cuando se produce el relanzamiento también pasará en cualquier parámetro utilizado en la llamada original.

############################################################################# #If Powershell is running the 32-bit version on a 64-bit machine, we #need to force powershell to run in 64-bit mode . ############################################################################# if ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64") { write-warning "Y''arg Matey, we''re off to 64-bit land....." if ($myInvocation.Line) { &"$env:WINDIR/sysnative/windowspowershell/v1.0/powershell.exe" -NonInteractive -NoProfile $myInvocation.Line }else{ &"$env:WINDIR/sysnative/windowspowershell/v1.0/powershell.exe" -NonInteractive -NoProfile -file "$($myInvocation.InvocationName)" $args } exit $lastexitcode } write-host "Main script body" ############################################################################# #End #############################################################################