一些应用场景,需要做操作系统版本的前置判断,如下powershell代码我调试OK,适用PC、Server
# 定义函数以获取注册表值
function Get-RegistryValue {
param (
[string]$Path,
[string]$Name
)
try {
return (Get-ItemProperty -Path $Path -Name $Name -ErrorAction Stop).$Name
}
catch {
return $null
}
}
# 获取 InstallationType
$installationType = Get-RegistryValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name "InstallationType"
if ($installationType -eq "Client") {
$buildNumber = [int](Get-RegistryValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name "CurrentBuildNumber")
$osVersion = if ($buildNumber -ge 19041 -and $buildNumber -le 19045) { "Windows 10" } elseif ($buildNumber -ge 22000) { "Windows 11" } else { "未知版本" }
$displayVersion = Get-RegistryValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name "DisplayVersion"
Write-Output "OSType: $installationType"
Write-Output "OSVersion: $osVersion"
Write-Output "DisplayVersion: $displayVersion"
Write-Output "CurrentBuildNumber: $buildNumber"
}elseif ($installationType -eq "Server") {
$productName = Get-RegistryValue -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" -Name "ProductName"
Write-Output "OSType: $installationType"
Write-Output "ProductName: $productName"
}
注意事项:
powershell中,elseif、else前后不要换行,否则可能会有异常。
例如:
把下面这2行
}
elseif ($installationType -eq "Server") {
写成
}elseif ($installationType -eq "Server") {
把下面这2行
}
else {
写成
}else {
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。