首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >确定当前PowerShell进程是32位还是64位?

确定当前PowerShell进程是32位还是64位?
EN

Stack Overflow用户
提问于 2011-12-21 19:18:05
回答 5查看 79.1K关注 0票数 90

在x64位操作系统平台上运行PowerShell脚本时,如何在脚本中确定脚本运行在哪个版本的PowerShell (32位或64位)上?

背景

默认情况下,32位和64位版本的PowerShell都安装在64位平台上。当运行必须以特定体系结构为目标的PowerShell脚本时(例如,为了使用64位库,对SharePoint 2010使用64位的脚本),这可能会导致困难。

相关问题:

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-12-21 20:13:10

如果您的shell运行在.NET 4.0 (PowerShell 3.0)上:

代码语言:javascript
复制
PS> [Environment]::Is64BitProcess
True
票数 155
EN

Stack Overflow用户

发布于 2011-12-21 19:19:57

要在脚本中确定正在使用的PowerShell版本,可以使用以下助手函数( JaredPar's answer提供的相关问题):

代码语言:javascript
复制
# Is this a Wow64 powershell host
function Test-Wow64() {
    return (Test-Win32) -and (test-path env:\PROCESSOR_ARCHITEW6432)
}

# Is this a 64 bit process
function Test-Win64() {
    return [IntPtr]::size -eq 8
}

# Is this a 32 bit process
function Test-Win32() {
    return [IntPtr]::size -eq 4
}

上述函数利用了size of System.IntPtr是特定于平台的这一事实。它在32位机器上是4字节,在64位机器上是8字节。

请注意,值得注意的是,Powershell的32位和64位版本的位置有些误导。32位PowerShell在C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe上,64位PowerShell在C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe上,感谢这个article

票数 85
EN

Stack Overflow用户

发布于 2013-11-06 02:48:19

你也可以使用这个。我在PowerShell 2.0和4.0版本上对其进行了测试。

代码语言:javascript
复制
$Arch = (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"];
if ($Arch -eq 'x86') {
    Write-Host -Object 'Running 32-bit PowerShell';
}
elseif ($Arch -eq 'amd64') {
    Write-Host -Object 'Running 64-bit PowerShell';
}

$Arch的值将是x86amd64

编辑:

需要注意的是,Process.StartInfo.EnvironmentVariables总是返回当前进程的环境,无论您在哪个进程上执行它。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8588960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档