答案 0 :(得分:11)
Start-Process $Env:WINDIR\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
答案 1 :(得分:6)
我建议Caleb's answer。但就个人而言,我在PowerShell profile中有一个函数,它在启动时加载并在运行x86
时启动一个新的PowerShell x86 shell,因为这是非常常见的。
Function x86{
Start-Process $($env:SystemRoot + "\syswow64\WindowsPowerShell\v1.0\powershell.exe")
}
注意:$env:windir
和$env:SystemRoot
在此等效。也许不总是
答案 2 :(得分:1)
为了快速解决问题,我认为此解决方案可以帮助您
start 'C:\Users\(Your-username here)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell\Windows PowerShell (x86).lnk'
请注意,这只是一个快速修复。
以下代码将动态切换Powershell以在64位模式下运行
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"
答案 3 :(得分:1)
您将需要x86 Powershell可执行文件的完整路径。如果从命令提示符(CMD.EXE
)启动它,则使用
start "" "%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"
如果您是从PowerShell会话启动它,则使用
start "" "$env:SystemRoot\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"
或
Start-Process -FilePath "$env:SystemRoot\SysWOW64\WindowsPowerShell\v1.0\powershell.exe"
答案 4 :(得分:1)
当我最后一次运行32位版本的PowerShell时,它是针对某些特定的东西(我没有需要访问的64位DLL版本,参考:View All Certificates On Smart Card)。在这种情况下,我只是使用-RunAs32
New-Job
开关将所需代码作为后台作业执行。我最终使用的完整代码可以在引用的问题中找到,但一般概念是:
$RunAs32Bit = {
Do some stuff that requires 32-bit
}
#Run the code in 32bit mode if PowerShell isn't already running in 32bit mode
If($env:PROCESSOR_ARCHITECTURE -ne "x86"){
Write-Warning "Non-32bit architecture detected, collecting certificate information in separate 32bit process."
$Job = Start-Job $RunAs32Bit -RunAs32
$SCStore = $Job | Wait-Job | Receive-Job
}Else{
$SCStore = $RunAs32Bit.Invoke()
}
答案 5 :(得分:0)
下载PSExec
然后,在PowerShell中运行:PATH_TO_PSEXEC\psexec.exe -i powershell
答案 6 :(得分:0)
下面给出了两种情况下的核心结构,包括参数的传递
import win32gui
import win32api
import win32con
hld = win32gui.FindWindow (None, "UNTITLED") # Returns the handle of the window titled UNTITLED
if hld>0:
win32gui.SetForegroundWindow(hld)
win32api.keybd_event(0x46, 0, ) # F