Информация к новости
  • Автор: remo
  • Дата: 2 сентябрь 2012 20:09
2 сентябрь 2012 20:09
Работа с алиасами в Powershell

Категория: Windows 7 Seven / Администрирование / Просмотров: 3338 / Комментариев: 0

В PowerShell есть замечательный функционал под наименованием Alias (псевдоним или алиас), по сути своей псевдоним является коротким аналогом названия командлета что позволяет выполнять две важнейшие задачи:

  • Наследование от предков – для поддержки работоспособности и синтаксиса старых команд copy, dir и пр..
  • Комфорт при работе – дает возможность сокращать написание команд и задавать новые псевдонимы. В ряде случаев это бывает удобно.
Чувствую что неубедил….  smile
Давайте посмотрим как это работает. Для начала введите последовательно команды:
Get-ChildItem c:\
Dir c:\
ls c:\

Результат во всех трех случаях одинаковый. Это означает что все введенные команды несмотря на разные названия имеют один и тот же функционал т.е. по сути dir и ls это ссылки на командлет Get-ChildItem

Разрешение имен псевдонимов

Перед тем как идти дальше давайте ознакомимся с тем что у нас вшито в стандартный функционал. Введите команду для получения списка псевдонимов Get-Alias или ls Alias:. Результат будет одинаковый.

Введенная команда выдаст вам все определенные в системе псевдонимы. Что бы не копаться в длинном списке псевдонимов вводим последовательно команды:

Get-Alias ls
Get-Alias dir

Те же результаты вы получите при просмотре значений псевдонимов можно воспользоваться служебным диском Alias:

$alias:Dir
Get-ChildItem
$alias:ls
Get-ChildItem

Как видите они указывают на один и тот же командлет Get-ChildItem.

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

get-item -path alias: | where-object {$_.Definition -eq "Get-Childitem"}

Поначалу я не мог отвыкнуть от того что в powershell команда sc является псевдонимомSet-Content и долгое время дергался когда стандартная sc.exe запущенная из powershell завершалась непонятно чем  wink

Создание собственных псевдонимов

Любой пользователь может создавать нужные ему псевдонимы. Это может понадобится для ускорения запуска или сокращению длинных повторяющихся команд.

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

Set-Alias имя_псевдонима значение
Set-Alias -name имя_псевдонима -value значение

Или воспользоваться его “коллегой” командой New-Alias которая только создает новый псевдоним.

new-alias -name имя_псевдонима -value значение -description "описание псевдонима" -option ReadOnly

Дальнейшее его изменение производится командой Set-Alias.

Для полного комплекта приведу значения для параметра -option

  • None – значение по умолчанию его указывать не требуется.
  • ReadOnly – псевдоним не может быть изменен, изменение доступно только при использовании параметра -Force.
  • Constant –  псевдоним не может быть изменен, даже при использовании -Force.
  • Private – псевдоним доступен только в пределах области, заданной в -Scope (определение области видимости, по умолчанию Local). Во всех остальных областях он недоступен.

Как сценарий можно предположить что вам необходимо запустить notepad.exe для редактирования скрипта script_01.ps1 находящегося в текущей папке

  1. Создаем новый псевдоним командой
    Set-Alias edit notepad.exe
  2. Вводим команду
    edit .\script_01.ps1
Внимание: В случае если вы изменяете существующий псевдоним созданный с опциейReadOnly то вам необходимо воспользоваться ключом -Force.
В результате открывается окно Notepad-а с нужным вам скриптом (он идет как параметр запуска редактора).
Кстати, для редактирования скриптов можно использовать встроенный алиас ise который при вызове откроет powershell_ise.exe.
Посмотреть созданную ассоциацию связанную с псевдонимом можно методом описанным выше:
Get-Alias edit
$alias:edit

Если команд несколько то они оборачиваются функцией. Например, один из псевдонимов которые я использую состоит из нескольких команд объединенных в функцию:

function get-hubserver {
get-exchangeserver | where {$_.ishubtransportserver -eq "true"}
}
Set-Alias get-hub get-hubserver

Удаление псевдонимов

Как ни странно это говорить но псевдонимы являются вполне осязаемыми для удаления объектами. Спасибо разработчикам Powershell за унификацию методов…

Remove-Item alias:edit

Что дальше?

Методика простая и действенная, но вынужден слегка огорчить тем что определения превдонимов при закрытии консоли не сохраняются и требуется их как то “подтягивать” при каждом старте консоли.

Вариантов которые можно предложить всего три:

  • Ввод вручную: Устанавливать руками с помощью команды Set-Alias. Не наш метод…
  • При загрузке профиля: Существует возможность  поместить команды Set-Alias … в профиль powershell. Профиль – это файл с расширением .ps1, скрипт, выполняемый оболочкой при ее запуске. Этот файл не создается автоматически, только вручную силами пользователя. Подробнее об этом механизме я напишу позже.
    Для того что бы создать профиль для текущего пользователя необходимо выполнить ряд команд.
    Создаем файл профиля.

     

    New-Item $profile -ItemType File -Force

    Открываем его на редактирование в блокноте.

    notepad.exe $profile

    Вписываем строку и сохраняем файл.

    Set-Alias edit powershell_ise.exe
  • Импорт и Экспорт: Экспортирует в файл существующие псевдонимы.
    Несмотря на название методика очень простая, но практических сценариев использования ее я пока что не вижу, разве только что поместить команду импорта в файл профиля powershell.Экспортировать существующие псевдонимы можно командой результатом работы которой будет файл со всеми существующими определениями псевдонимов.

     

    Export-Alias C:\Backup\Aliases.txt

    Обратный импорт выполняется командой.

    Import-Alias C:\Backup\Aliases.txt -Force

источник


Нашли ошибку в тексте? Выделите фрагмент текста и отправьте нажатием Ctrl + Enter
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:*
Комментарий:
b
i
u
s
|
left
center
right
|
emo
url
leech
color
|
hide
quote
translit
Вопрос:
Допишите недостающие буквы в слове: Росc_я (слово в ответе писать целиком)
Ответ:*
Введите код: *
2011-2014 WikiWin.info
Microsoft Windows © и логотип Windows © являются зарегистрированными товарными знаками компании Microsoft Corporation © в США а так же в других странах.
Администрация сайта не несет ответственность за содержание и достоверность информации.
В случае, если Вы обнаружили свою статью, и считаете что Ваши авторские права нарушены ее размещением - немедленно свяжитесь с нами,
администрация сайта обязуется удалить материалы при первом требовании!
Для связи з администрацией ([email protected])