¿Cómo iniciar una aplicación de PC virtual de Windows XP utilizando Powershell desde Windows 7?

imagenes

Este es un destino de acceso directo de una aplicación que lanzo desde Windows 7 que inicia un programa en el modo Windows XP.

% SystemRoot% \ system32 \ rundll32.exe% SystemRoot% \ system32 \ VMCPropertyHandler.dll, LaunchVMSal "Windows XP Mode" "|| fc9407e9" "wIntegrate"

Parece que no puedo conseguir que el comando PS Start-process funcione para ese objetivo.

Código que utilizo:

Start-Process% SystemRoot% \ system32 \ rundll32.exe% SystemRoot% \ system32 \ VMCPropertyHandler.dll, LaunchVMSal "Windows XP Mode" "|| fc9407e9" "wIntegrate"

Aquí está el error que recibo:

Proceso de inicio: no se puede encontrar un parámetro posicional que acepte el argumento 'Modo Windows XP'.
En C: \ Users \ username.domain \ Desktop \ rebootpick.ps1: 13 char: 14
+ Proceso de inicio <<<<  % SystemRoot% \ system32 \ rundll32.exe% SystemRoot% \ system32 \ VMCPropertyHandler.dll, LaunchVMSal "Windows XP Mode" "|| fc9407e9" "wIntegrate"
    + CategoryInfo: InvalidArgument: (:) [Start-Process], ParameterBindingException
    + FullyQualifiedErrorId: PositionalParameterNotFound, Microsoft.PowerShell.Commands.StartProcessCommand

¿Alguien ha tenido suerte al ejecutar las aplicaciones del Modo Windows XP desde Powershell desde Windows 7?


Tenemos varias respuestas

La mejor respuesta:

Esto debería hacerlo por ti:

$ sysRoot = get-content env: systemroot;
Proceso de inicio $ sysRoot \ system32 \ rundll32.exe -ArgumentList "$ sysRoot \ system32 \ VMCPropertyHandler.dll, LaunchVMSal` "Windows XP Mode`" `" || fc9407e9` "` "wIntegrate`" ";
Remove-Variable sysRoot;

Primer truco:% systemroot% no funciona en PS, por lo que asignamos una variable ($ sysRoot) para obtener esa variable de entorno en PS.

El siguiente truco es darse cuenta de que solo se proporciona un argumento a RunDLL32, y ese argumento tiene argumentos. Por lo tanto, debemos encerrar todas las partes del argumento en un solo argumento usando comillas. Pero necesitamos mantener las citas existentes en ese argumento, por lo que escapamos de ellas con `.

Espero que ayude…


Otra respuesta


Fuente

Leave a Reply