我有以下函数将文件版本字符串与实际文件进行比较,如果文件较低则返回1:
function FileVersionDetectionCheck() {
param([string]$file)
$fileversion = (get-item $file).VersionInfo.ProductVersion
$fileversionobject = [System.Version]$fileversion
$targetversion = [System.Version]::Parse("11.0.9700")
Write-Output "File Version:" $fileversionobject
Write-Output "Target Version:" $targetversion
if($fileversionobject -ge $targetversion) {
return 0
}
else {
return 1
}
}
FileVersionDetectionCheck("C:\program files\internet explorer\iexplore.exe")
此代码工作正常。但是,如果我添加第二个字符串参数...
function FileVersionDetectionCheck() {
param([string]$file,[string]$version)
$fileversion = (get-item $file).VersionInfo.ProductVersion
$fileversionobject = [System.Version]$fileversion
#$targetversion = [System.Version]::Parse("11.0.9700")
$targetversion = [System.Version]$version
Write-Output "File Version:" $fileversionobject
Write-Output "Target Version:" $targetversion
if($fileversionobject -ge $targetversion) {
return 0
}
else {
return 1
}
}
FileVersionDetectionCheck("C:\program files\internet explorer\iexplore.exe",
"11.0.9700")
它出错:
get-item:找不到路径'C:\ program files \ internet explorer \ iexplore.exe 11.0.9700',因为它不存在。
似乎是将两个参数作为单个字符串读取。
据我所知,这是将多个参数传递给函数的有效方法。我做错了什么或者这可能是个错误吗?
答案 0 :(得分:2)
Powershell函数与其他语言的方法不同。从函数名function FileVersionDetectionCheck()
中删除括号,然后在调用函数时不要使用逗号或括号。例如
myFunction firstParam secondParam
使用上面的代码,它看起来就像这样。
FileVersionDetectionCheck "C:\program files\internet explorer\iexplore.exe" "11.0.9700"
答案 1 :(得分:0)
再加上Jason的回答,这是两个参数的样子
function FileVersionDetectionCheck
{
param([string]$file,[string]$version)
$fileversion = (get-item $file).VersionInfo.ProductVersion
$fileversionobject = [System.Version]$fileversion
#$targetversion = [System.Version]::Parse("11.0.9700")
$targetversion = [System.Version]$version
Write-Output "File Version:" $fileversionobject
Write-Output "Target Version:" $targetversion
if($fileversionobject -ge $targetversion) {
return 0
}else {
return 1
}
}
FileVersionDetectionCheck -file "C:\program files\internet explorer\iexplore.exe" -version "11.0.9700")