Оператор PowerShell If может быть написан так же, как и любой язык, похожий на C:
if ($true) {Write-Host "True Yo" }
Тем не менее, вы не указали точно, в чем суть ваших проблем, так что это несколько обобщенно:
Создание пользовательского объекта:
$dep = New-Object psobject -Property @{DeploymentReceiverVersion = "5.000.11"; AppName = "OxenTails" }
Сравнение может создать потенциальную проблему:
$dep.DeploymentReceiverVersion.GetType()
Версия представляет собой строку, поэтому сравнение сравнивает строки:
$dep.DeploymentReceiverVersion -lt "5.000.12"
дает ожидаемый результат, но
$dep.DeploymentReceiverVersion -lt "5.000.101"
нет.
Однако это может сработать для сравнения каждого набора чисел:
$parts = $dep.DeploymentReceiverVersion.Split('.')
if ([int]$parts[0] -lt 6 -and [int]$parts[1] -lt 001 -and [int]$parts[2] -lt 101) {
#Do Stuff!
}
ДополнительноКак указывает @TheMadTechnician, существует тип System.Version [Version]
. Он может использоваться с одним из методов перегрузки:
[Version]::new(parts[0],parts[1], parts[2]) -lt [Version]::new(5,46,54)
, который немного более читабелен.