在 PowerShell 中使用全局变量
- PowerShell 全局变量简介
- PowerShell 全局变量的好处
- 声明 PowerShell 全局变量
- 在 PowerShell 中将全局变量作为参数传递
-
在 PowerShell 中使用
Set-Variable
为全局变量设置值
![在 PowerShell 中使用全局变量](/img/PowerShell/feature-image---using-global-variables-in-powershell.webp)
变量是可以存储特定值以供以后处理或向用户显示其重要性的对象。Windows PowerShell 中有多种类型的变量。
我们将讨论 Windows PowerShell 全局变量并在 PowerShell 中实现它们。
PowerShell 全局变量简介
每个变量都有特定的范围。当我们在函数内部定义自定义变量时,它只能在该函数内部访问,而不能在外部访问。
示例代码:
function sampleFunction{
$firstvar =35;
Write-Host $firstvar;
}
Write-Output $firstvar
上面脚本的输出将是 null
,因为这是 PowerShell 中任何变量的默认值。在这种情况下,我们应该使用全局变量,因为脚本、函数和命令可以跨会话访问它,从而在整个程序和其他方法中访问变量。
PowerShell 全局变量的好处
- 全局变量存储字符串、整数、数组、对象、哈希表等所有值。
- 全局变量可以包含不同对象的集合。
- 为每个全局变量分配特定数量的内存。
- 每个全局变量必须以美元符号 (
$
) 开头。 - 在程序开始时声明一个全局变量是编程的最佳实践。
- 如果我们不给你的变量赋值,默认值为 null。
- 全局变量的名称可以包含数字、字母和下划线 (
_
) 符号的组合。如果我们想使用其他特殊字符,请用大括号将变量的全名括起来。
声明 PowerShell 全局变量
要声明 PowerShell 全局变量,请使用以下语法。
示例代码:
$global: myVariable = "apple"
如果我们选择不提供任何值,你可以显式分配一个 $null
值。
示例代码:
$global: myVariable2 = $null
我们必须提到 $global
让 PowerShell 知道这个变量应该在整个程序中可用。
以下代码显示局部变量和全局变量共享相同的名称。因此,局部变量将在函数内部优先,但局部变量在函数外部没有值,因此脚本使用全局变量。
示例代码:
$global:num1 = 55;
function calculateAge{
$num1 = 45;
Write-Host $num1 "inside the function";
}
Write-Host $num1 "outside the function";
calculateAge;
输出:
45 inside the function
55 outside the function
在 PowerShell 中将全局变量作为参数传递
我们还可以将全局变量作为参数传递给函数,并在函数内部设置其值。但是,当然,你必须将全局变量作为 REF
对象。
示例代码:
$global:finalVariable = $null;
function addValue ($num1, $num2, [REF]$ans){
$ans.Value = $num1 + $num2;
}
addValue 2 3 ([REF]$global:finalVariable);
Write-Host "The final value is:" $global:finalVariable;
输出:
The final value is: 5
在 PowerShell 中使用 Set-Variable
为全局变量设置值
将值设置为 Windows PowerShell 全局变量的最简单方法是使用 Set-Variable
cmdlet。
示例代码:
Set-Variable -Name "finalVariable" -Value "6" -Scope Global
Get-Variable -Name "finalVariable"
输出:
Name Value
---- -----
finalVariable 6
该脚本将显示 6
的值。请注意,我们必须将变量的范围称为全局
。
Set-Variable
命令还带有一个可选参数,我们可以使用它来确定全局变量的性质。
示例代码:
Set-Variable -Name "finalVariable" -Value "6" -Scope Global -Option Read-Only
上面的代码将生成一个全局变量并为其设置一个值,但它将是一个只读
全局变量。
示例代码:
Set-Variable -Name "finalVariable" -Value "6" -Scope Global -Option Constant
既然我们了解了全局变量,那么在你开始在程序中使用它们之前请注意。PowerShell 全局变量不适合生成变量或存储值,因为我们没有访问控制。
换句话说,很难跟踪全局变量的值,因为我们可以在程序中的任何地方更改它,并且测试它们非常困难,因为它们与代码紧密耦合。
这就是为什么有经验的程序员通常不使用全局变量的原因,因为它们可能会在大量程序中导致一些难以发现的错误。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn