如何使用 Powershell 从 Windows 7 启动 Windows XP Virtual PC 应用程序?

如何使用 Powershell 从 Windows 7 启动 Windows XP Virtual PC 应用程序?

这是我从 Windows 7 启动的应用程序的快捷方式目标,该应用程序在 Windows XP 模式下启动一个程序。

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

我似乎无法让 PS Start-process 命令适用于该目标。

我使用的代码:

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

这是我收到的错误:

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

有人在 Windows 7 中通过 Powershell 执行过 Windows XP 模式应用程序吗?

答案1

这应该可以帮你做到:

$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;

第一个技巧:%systemroot% 在 PS 中不起作用,因此我们分配一个变量 ($sysRoot) 来在 PS 中获取该环境变量。

下一个技巧是意识到 RunDLL32 只提供了一个参数,并且该参数有多个参数。因此,我们需要使用引号将参数的所有部分括在一个参数中。但我们需要保留该参数中现有的引号,因此我们使用 对其进行转义`

希望有帮助...

相关内容