這種語言的東西真的很奇怪。我試圖執行一個函數並使用它的結果值作爲條件。這是我的代碼:在PowerShell中調用函數的條件
function Get-Platform()
{
# Determine current Windows architecture (32/64 bit)
if ([System.Environment]::GetEnvironmentVariable("ProgramFiles(x86)") -ne $null)
{
echo "x64"
return "x64"
}
else
{
echo "x86"
return "x86"
}
}
if (Get-Platform -eq "x64")
{
echo "64 bit platform"
}
if (Get-Platform -eq "x86")
{
echo "32 bit platform"
}
預期輸出是這樣的:
x64
64 bit platform
但實際產量是這樣的:
64 bit platform
32 bit platform
這是怎麼回事?這怎麼解決?我無法在網絡上找到使用if
條件中的函數的任何示例。在Powershell中可能嗎?我在Windows 7上沒有特別的設置,所以我擁有PS版本。
謝謝您的完整解釋。在函數名稱周圍使用圓括號確實可以調用函數,所以這看起來像是解決這些問題的通用方法。比使用其他變量名稱更簡單。 函數中的回顯(由Write-Host替代爲功能)僅用於跟蹤目的。這是一個測試用例腳本。雖然我現在看到以下輸出:「x64」,「64位平臺」,「x64」。 WMI調用似乎返回一個本地化的字符串,對我來說它是「64位」。其他支票在其他地方看起來很廣泛。 – ygoe 2013-04-11 07:38:21
根據操作系統架構的不同,OSArchitecture會返回一個字符串「32位」或「64位」,因此您必須調整條件。 – 2013-04-11 11:19:49