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

3

Este é um alvo de atalho de um aplicativo que inicio 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"

Parece que não consigo que o comando PS Start-Process funcione para esse alvo.

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 alguma sorte em executar aplicativos do Windows XP Mode do Powershell do Windows 7?

    
por payling 23.01.2012 / 21:07

1 resposta

5

Isso deve ser feito 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 aquela variável de ambiente no PS.

O próximo truque é perceber que há apenas um argumento fornecido para RunDLL32, e esse argumento tem argumentos. Portanto, precisamos incluir todas as partes do argumento em um argumento usando aspas. Mas nós precisamos manter as citações existentes nesse argumento, então nós as escapamos com '.

Espero que ajude ...

    
por 23.01.2012 / 23:07