dimayakovlev.ru


Как проверить существование псевдонима в PowerShell

Если требуется добавить новый псевдоним для собственной функции или уже имеющегося командлета в PowerShell, полезно проверить, не существует ли он.

Для начала, если кто-то не знает, что такое псевдоним в PowerShell, следует ознакомиться с определением, котором даётся в официальном руководстве PowerShell от Microsoft.

Псевдоним — это альтернативное имя или сокращенное имя командлета или элемента команды, например функции, скрипта, файла или исполняемого файла. Команду можно выполнять с помощью псевдонима вместо имени исполняемого файла.

Например, псевдоним cd это сокращённое имя командлета Set-Location, а псевдоним rm это сокращённое имя командлета Remove-Item. При наборе команд в консоли PowerShell использованием сокращённых имён стандартных командлетов может сэкономить время.

Для того, чтобы посмотреть все доступные псевдонимы, используется командлет Get-Alias, вызванный без параметров.

Не обязательно просматривать список и искать в нём имена псевдонимов, чтобы удостовериться в том, что желаемое имя псевдонима не занято. Это можно сделать при помощи командлета Test-Path.

Например, если требуется добавить псевдоним gdbny для собственной функции Get-DaysBeforeNewYear, при условии, что выбранное имя псевдонима свободно, это можно сделать так.

If (-Not (Test-Path -Path Alias:gdbny)) {
  Set-Alias -Name gdbny -Value Get-DaysBeforeNewYear
} Else {
  Write-Host "Alias gdbny already exist"
}

Благодаря такой проверке существования псевдонима, в случае если псевдоним создан без применения параметра только для чтения, как в примере, предотвращается его переназначение.

Альтернативным вариантом проверки существования псевдонима является командлет Get-Alias. Следующий код проверит существование псевдонима и выведет соответствующее сообщение.

If (Get-Alias -Name gdbny -ErrorAction SilentlyContinue) {
  Write-Host "Alias gdbny exist"
} Else {
  Write-Host "Alias gdbny doe not exist"
}

Для удаления уже существующего псевдонима можно использовать такой код.

If (Test-Path -Path Alias:gdbny) {
  Remove-Item -Path Alias:gdbny
}

Рассмотренные примеры показывают, как легко можно добавить, удалить или переназначить псевдонимы в PowerShell. Поэтому, не смотря на то, что использование псевдонимов может ускорить работу в консоли PowerShell, не стоит использовать псевдонимы в коде своих функций или командлетов. В них будет безопаснее и надёжнее обращаться к полным именам командлетов и функций.