何かがこの言語で本当に奇妙です。私は関数を実行し、その結果値を条件として使用しようとしています。これは私のコードです: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
'OSArchitecture'は、OSアーキテクチャに応じて、文字列' '32ビット ''または' '64ビット' 'を返します。そのため、条件をそれに合わせなければなりません。 –