Como iniciar um aplicativo Windows XP Virtual PC usando Powershell do Windows 7?

Como iniciar um aplicativo Windows XP Virtual PC usando Powershell do Windows 7?

Este é um atalho de um aplicativo iniciado no Windows 7 que inicia um programa no modo Windows XP.

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

Não consigo fazer com que o comando PS Start-process funcione para esse destino.

Código que uso:

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

Aqui está o erro que recebo:

Start-Process : A positional parameter cannot be found that accepts argument 'Windows XP Mode'.
At C:\Users\username.domain\Desktop\rebootpick.ps1:13 char:14
+ Start-Process <<<<  %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

Alguém teve sorte ao executar aplicativos do modo Windows XP do Powershell no Windows 7?

Responder1

Isso deve servir para você:

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

Primeiro truque: %systemroot% não funciona no PS, então atribuímos uma variável ($sysRoot) para obter essa variável de ambiente no PS.

O próximo truque é perceber que há apenas um argumento fornecido para RunDLL32, e esse argumento possui argumentos. Portanto, precisamos colocar todas as partes do argumento em um argumento usando aspas. Mas precisamos manter as aspas existentes nesse argumento, então escapamos delas com `.

Espero que ajude...

informação relacionada