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