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