在PowerShell中循环后是否可以使用变量?

时间:2014-06-19 07:18:06

标签: powershell

我想知道在条件之后是否可能有变量,例如通常一段时间的句子就像那样:

$i = 5 while ($i -le 5) {Write-Host $i; $i++}

但是因为我的脚本中有很多变量,我认为可以在代码末尾编写变量,所以我可以首先阅读脚本的逻辑而不是变量,类似的东西:

while ($i -le 5) {Write-Host $i; $i++}  
$i = 10
$Variable2 = 5
...
$Variable100 = 25

2 个答案:

答案 0 :(得分:2)

Powershell按顺序从上到下执行脚本中的行,除非循环,条件或函数调用使执行跳转到其他位置。

所以,不,你使用它后不能初始化变量,这是没有意义的。

这里的解决方案是将所有逻辑移到一个或多个函数中,然后在脚本结束时初始化变量并调用函数。这大致符合你的要求。

答案 1 :(得分:1)

如果您要问的话,您不需要在PowerShell中明确声明变量。以前未定义的变量会在第一次使用时自动定义并使用默认值进行初始化。

但是,根据变量的使用方式,您可能会无意中在不同的范围内获得具有相同名称的不同变量:

PS C:\> function Foo { $i; $i = 23; $i }
PS C:\> Foo
23
PS C:\> $i = 42
PS C:\> $i
42
PS C:\> Foo
42
23
PS C:\> $i
42
PS C:\> function Bar { $i; $global:i = 23; $i }
PS C:\> Bar
42
23
PS C:\> $i
23

此外,如果您希望变量以特定值开头,则需要在使用它之前对其进行初始化。如果您有许多初始化,可以将它们放入单独的PowerShell脚本中,并将dot-source放在“worker”脚本中的第二个脚本中:

. 'C:\path\to\config.ps1'