转换PowerShell对象以在条件下使用它

转换PowerShell对象以在条件下使用它,powershell,Powershell,有了这个,我可以得到我的PowerShell版本,我如何将它转换为在if-else条件下作为整数使用呢?我认为您可以更好地使用类型为[version]的版本。这样,您就可以很容易地进行比较和/或单独使用其属性Major,Minor,等等 $version = Get-Module SharePointPnPPowerShellOnline -ListAvailable | Select-Object Version | Format-Table -HideTableHeaders | Out-S

有了这个,我可以得到我的PowerShell版本,我如何将它转换为在if-else条件下作为整数使用呢?

我认为您可以更好地使用类型为
[version]
的版本。这样,您就可以很容易地进行比较和/或单独使用其属性
Major
Minor
,等等

$version = Get-Module SharePointPnPPowerShellOnline -ListAvailable | Select-Object Version | Format-Table -HideTableHeaders | Out-String
Write-Output $version

编辑

如上所述,上面没有检查返回值
$null
(未安装)。
如果安装了同一模块的多个版本,它也不会检查cmdlet是否可以返回版本数组

要克服这种情况,您可以:

$version = [Version](Get-Module -Name SharePointPnPPowerShellOnline -ListAvailable).Version

if ($version -ge [Version]'3.23.2007.1') {
    # do something
}
else {
    # do something else
}

为了安全起见,请考虑<代码>获取模块名称SypPosipPNPultHeSeleNeal-ListValue<代码>可以是<代码> $null < /C>(如果没有安装模块),或者是一个数组(如果安装了更多的版本,或者安装在<代码> ALLUSER < /COD>和<代码> CurrentUser < /代码>安装范围)…
$module  = 'SharePointPnPPowerShellOnline'
$version = [Version](Get-Module -Name $module -ListAvailable).Version | 
                     Sort-Object | Select-Object -Last 1

if ($version) {
    Write-Host "Module is installed. Current version $($version.ToString())"
    if ($version -ge [Version]'3.23.2007.1') {
        # do something (or not because the wanted version or higher is already installed)
    }
    else {
        # do something else, like installing newer module
    }
}
else { 
    Write-Warning "Module '$module' is not installed"
    # do something, like installing the module
}