我已经创建了一个用于更新程序的PowerShell脚本,但如果版本号在http://come-join.us/update/test.txt上比在Test.txt文件中更大,我只想下载它。
如何比较这些字符串?
$FileName = "$PSScriptRoot\SysinternalsSuite.zip"
Get-Content $PSScriptRoot\Test.txt
(New-Object Net.WebClient).DownloadFile('https://www.dropbox.com/s/12uecxcxq2rt0s4/um.zip?dl=1',"$FileName ");
(new-object -com shell.application).namespace("$PSScriptRoot").CopyHere((new-object -com shell.application).namespace("$FileName").Items(),16)
if (Test-Path $FileName) {
Remove-Item $FileName
}
答案 0 :(得分:2)
我建议使用[version]
类型加速器进行比较。例如:
$LocalVersion = [version](Get-Content $PSScriptRoot\test.txt)
$RemoteVersion = [version](Invoke-RestMethod http://come-join.us/update/test.txt)
If ($LocalVersion -lt $RemoteVersion) {
$true
}
版本加速器将版本字符串转换为System.Version .NET类对象:
~\Documents> $RemoteVersion
Major Minor Build Revision
----- ----- ----- --------
1 0 1 -1
然后您可以使用所有标准比较运算符进行比较。