我刚刚开始使用 Powershell 编写函数,这让我想到我可以创建一个函数来设置我经常使用的许多变量,而不必每次都启动我已经习惯的完整查询的所有单行代码。时间。我可以在我的 PS 配置文件中设置这些变量,但这会导致数据随着时间的推移而变得越来越不最新,有时我会一次将同一会话保持打开数天。
示例:
而不是去:
PS C:\>Get-ADComputer -Filter {whatever -like "*this*that*"} | ForEach-Object {more code} | and so on
我可以走了:
PS C:\>$servers | ForEach-Object {more code} | and so on
但是,这里的每个人可能都知道,当我执行一个设置了变量的函数时,一旦该函数结束,其中设置的变量就会从控制台的内存中删除。我知道我可以点源我的函数,但在某些情况下,尽管在执行完之后我的会话中确实存在一个变量
PS C:\>. Do-Something
它不返回任何值,而是返回一个空行。
那么如何在函数内部设置一个变量,该变量在执行该函数后仍保留在当前会话中?
在函数中使用
$Global:variable
代替 $variable
。
如上面的脚本,您可以使用模式:
("ABC", "DEF", "GHI", "JKL") |
%{
Set-Variable -Name "$($_)" -Value 1 -Scope Global
}
脚本在控制台中完成后:
write $ABC
write $DEF
write $GHI
write $JKL
享受
帕维尔