2012-09-25 21 views

回答

2

我只是碰到了这一点,它看起来像一个bug。在try块外声明变量并不能解决范围问题。只要您将$ a的try块值重置为您在输入try块之前的值。所以如果你想在执行try {}之后访问$ a,那么你需要将它作为$ global:在try {}块内部进行访问。

1

对于我这种回报所有的过程一样简单get-process命令执行:

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

$a 
+0

这个答案暗示OP的变量赋值存在问题,他'可以'访问该变量,但这不是他期望的值。 – SpellingD

1

由于@Christian笔记,它应该很好地工作,你有它的方式。如果$x未被填充,则可能Get-X不会返回任何内容,或者发生错误。

您可以随时与顶级声明变量起来的模式去:

$a = <default value, or $null> 
try 
{ 
    $a = get-process 
} 
catch 
{ 
    write-error "Some error occurred" 
} 
$a