0

レジストリ値名にデータが存在するかどうかをテストする条件ステートメントを Powershell で記述しようとしています。次のパスを変数として宣言しました。 HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings

また、Get-ItemProperty コマンドレットを使用して、レジストリ名自体の変数を宣言しました (つまり、ProxyOverride )。私が使用している条件文を書くとき:

[string]::IsNullorEmpty($proxyoverridevariable)

条件付きステートメントを実行すると、レジストリ値 ProxyOverride が Null または Empty ではないことがわかっていても、常に報告されます。

これまでのところ、レジストリからProxyOverrideを削除すると、条件ステートメントが機能することがわかっています。データフィールドが空白の場合に機能させたい。

$regKey="HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

$proxyoverride = "localhost;127.0.0.1"

$proxyexception = Get-ItemProperty -path $regKey -name ProxyOverride -ErrorAction SilentlyContinue

if ([string]::IsNullorEmpty($proxyexception)) { Set-ItemProperty -Path $regKey -name ProxyOverride -value $proxyoverride }

else { write-host "Value not empty" }

助言がありますか?

4

1 に答える 1

1

価値があるからだと思います。空の場合、PowerShell は他のプロバイダー関連のプロパティ (PSPath など) などと共にそれを返します。そのため、IsNullorEmpty は常に False を報告します。値が存在しない場合、他のすべてのプロパティは返されず、期待される結果が得られます。

回避策は次のとおりです。値自体をクエリしてから、空か null かを確認します。

$proxyexception = (Get-ItemProperty -path $regKey -name ProxyOverride -ErrorAction SilentlyContinue).ProxyOverride
于 2013-09-12T15:19:57.930 に答える