Remove-Variable - 无法找到具有名称的变量

Remove-Variable - Cannot find a variable with the name

我有一个 powershell 脚本,其中包含以下 hashtable

[HashTable]$folder_and_prefix = @{}

在我的脚本中的某个点之后我不再需要那个 hashtable,我尝试这样做:

Remove-Variable $folder_and_prefix

但我收到以下错误:

Remove-Variable : Cannot find a variable with the name 'System.Collections.Hashtable'

是否可以删除我不再需要的 hastable?

这是一个常见的错误。 Remove-Variable 使用变量的 名称 (a [String]),并通过引用变量本身(带有美元符号 $)传递 。删除美元符号,这就是您所需要的:

Remove-Variable folder_and_prefix

此外,它需要一个名称数组,所以你可以这样做:

$var1 = 5
$var2 = 'Hello'
$var3 = @{}

Remove-Variable var1,var2,var3

它接受通配符:

Remove-Variable var*

Set-VariableGet-VariableClear-Variable 也接受通配符(New-Variable 除外)。

如其他人所述,在引用变量本身时不要使用美元符号 ($)。此外,我总是使用如下条件语句检查变量是否存在(在尝试删除它之前):

if (Test-Path variable:myVar) {Remove-Variable myVar}  #Delete only if local variable exists.
[int]$myVar = 5;

您还可以检查您的变量在特定范围内是否存在,例如,对于全局范围:

if (Test-Path variable:global:myVar) {Remove-Variable myVar –Scope Global} 

您甚至可以检查环境变量,如下所示:

if (Test-Path env:ComputerName) {"do something with $env:ComputerName."}

HTH