Remove-Variable - не удается найти переменную с именем

У меня есть скрипт PowerShell, который со следующими hashtable

[HashTable]$folder_and_prefix = @{}

После определенного момента в моем сценарии мне это больше не нужно hashtableЯ попытался сделать:

Remove-Variable $folder_and_prefix

но я получаю следующую ошибку:

Remove-Variable: не удается найти переменную с именем 'System.Collections.Hashtable'

Возможно ли убрать хабист, который мне больше не нужен?

1 ответ

Решение

Это распространенная ошибка. Remove-Variable принимает имя переменной ([String]) и путем ссылки на саму переменную (со знаком доллара) $) вы передаете значение. Уберите знак доллара, и это все, что вам нужно:

Remove-Variable folder_and_prefix

Далее, он принимает массив имен, так что вы можете сделать:

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

Remove-Variable var1,var2,var3

И он принимает подстановочные знаки:

Remove-Variable var*

И, наконец, это также верно для Set-Variable, Get-Variable, а также Clear-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

Другие вопросы по тегам