Первое знакомство с PowerShell

2011 March 05
by stillru
it

После всей мощи, которую представляет в руки администратора bash, powershell выглядит достаточно блёкло. Однако, нет худа без добра - у меня наконец-то добрались руки до изучения этой оболочки.

Ранее я пользовался связкой cgwin+bash-via-cmd. Сейчас я пробую использовать по максимуму windows программы.

Совсем без cgwin’a обойтись не получится, поэтому я использую самый минимум из этого пакета - OpenSSH, Core.

Итак, прошла установка, можно начинать подстраивать шелл под себя. Стандартным шеллом в Windows 2003 R2 являентся CMD. Данный шелл не имеет возможности удалённого управления. Нас это не устраивает. Однако, есть две альтернативы - CygWin и PowerShell.

На данный момент CygWIN не является нативным для Win-платформы. Так что будем использовать PowerShell+некоторые пакеты из CygWin.

PS [0]>

Добро пожаловать в Shell. То что вы видите перед собой сейчас - это приглашение нового интерактивного шелла Windows.

В чём разница между интерактивным шелом и не интерактивным?

Разница в мелочах, как водится :-)

Первый момент - это возможность автозавершения не только исполняемых файлов, но и команд шелла, загруженных функций, и даже аргументов необходимых функциям.

Второй момент - хранение переменных внутри запущенной сессии. То есть я могу написать в начале сессии $cred = Server\User1 и в дальнейшем вместо введения каждый раз пары Server\User1, просто вызывать переменную $cred и вводить пароль. А если я точно знаю, что в моих скриптах мне часто требуется использовать авторизацию, я могу эту переменную занести в профиль сессии.

Scripting

В первую голову, нам требуется разрешить выполнение скриптов на данной машине. Для этого устанавливаем переменную командой Set-ExecutionPolicy в состояние Unrstricted (Не контролируемое). Для особо заботящихся о безопасности - SelfSigned (Самоподписанные). Таким образом в первом случае будут запускаться все скрипты, во втором - только подписанные сертификатом, установленным на данном компьютере.

Далее настраиваем удалённый доступ:

Enable-PSRemote

Данная команда опять же выполняется от имени администратора.

Usecase

Теперь давайте рассмотрим возможности которые предоставляет PS для администратора. Это, например, возможность проверки состояния запущенного процесса. Тут нам поможет команда Get-Process.

if (-not (get-process notepad).responding) {kill -name notepad; notepad}

Данная строчка проверяет систему на “зависание” процесса notepad, и в случае если он завис, процесс убивается и запускается новый.

Вариантов использования - множество. В дальнейшем я буду писать другие примеры использования - в теге Tips&Tricks :-)

comments powered by Disqus

Порекомендовать в Facebook Порекомендовать в ВКонтакте Твитнуть Отправить в Одноклассники Отправить в Мой Мир