2

以下のコードがあります。ここで、try で定義された変数にアクセスしようとしていますが、アクセスできません。修正するにはどうすればよいですか。

  try{
       $X = get-X 
     }
  catch
     {
            Manage exception
     }

   write-host $X
4

5 に答える 5

4

私はちょうどこれに遭遇しました、そしてそれはバグのように見えます。try ブロックの外側で変数を宣言しても、スコープの問題は解決しません。try ブロックを離れるとすぐに $a の値は、try ブロックに入る前の値にリセットされます。したがって、try{} の実行後に $a にアクセスする場合は、try {} ブロック内で $global:a としてアクセスする必要があります。

于 2013-04-17T22:37:47.977 に答える
0

@Christianが指摘しているように、それはあなたが持っている方法でうまくいくはずです。が入力されていない場合$x、おそらくGet-X何も返されていないか、エラーが発生しています。

変数を一番上に宣言するパターンをいつでも使用できます。

$a = <default value, or $null>
try
{
   $a = get-process
}
catch
{
    write-error "Some error occurred"
}
$a
于 2012-09-25T16:52:10.750 に答える
0

get-process私にとって、これは単純なコマンドと同じようにすべてのプロセスを返します。

try
{
   $a = get-process
}
catch
{
    write-error "Some error occurred"
}

$a
于 2012-09-25T08:13:49.597 に答える