如何使用Powershell函数在当前会话中设置持久变量

问题描述 投票:0回答:2

我刚刚开始使用 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

它不返回任何值,而是返回一个空行。

那么如何在函数内部设置一个变量,该变量在执行该函数后仍保留在当前会话中?

function powershell variables
2个回答
1
投票

在函数中使用

$Global:variable
代替
$variable


0
投票

如上面的脚本,您可以使用模式:

("ABC", "DEF", "GHI", "JKL") |
%{
    Set-Variable -Name "$($_)" -Value 1 -Scope Global 
} 

脚本在控制台中完成后:

write $ABC
write $DEF
write $GHI
write $JKL

享受

帕维尔

© www.soinside.com 2019 - 2024. All rights reserved.