Май 31

Задача: сделать тонкий клиент для Windows Server. В наличии: материнская плата с процессором Р3 500МГц (втыкаемый в слот), 32 Мб SDRAM ОЗУ, видеокарта PCI TNT2, сетевая карта Realtek 8139 (также был испытан NetGear FA310TX), IDE CDROM. Требуется бесплатное решение. В ходе поиска были рассмотрены следующие варианты:

  1. Linux + rdesktop (требуется установка и конфигурирование Линукса. Линукс будет отнимать часть ресурсов компьютера. Также необходим жесткий диск).
  2. DOS и FreeDOS. Не нашел бесплатных утилит под них. Нужно подымать сеть + нужен жесткий диск.
  3. Есть проект wtware. Была как комерческая, так и lite версия продукта. На данный момент lite убрали с официального сайта. Минусы: нужно поднимать dchp и tftp сервер на сервере терминалов. В моем случае dhcp находится на другом сервере. Плюсы: из нашей конфигурации можно убрать cdrom.
  4. Free Remote Control. На этом варианте я и остановился. Сайт проекта http://www.spbgmu.spb.ru/frwt/. На момент написания статьи не работал форум, FAQ довольно скуден. Проект основан скорее всего на линуксе. Грузится очень быстро. Есть версии под cdrom, hdd (под freedos), образ pxe (прошивка микросхем, вставляемых в сетевую карту), образ nbi для загрузки через tftp-сервер. Все бесплатно и легально.

После нескольких неудачных попыток устаноки Free Remote Control под freedos отказался от этой затеи и решил загружаться с компакт-диска. Тонкий клиент с загрузкой по сети на базе Free Remote Control (образ на CDROM) Скачиваем архив с Free Remote Control . Распаковываем. Файл XX.XX.XX.XX.XX.XX.out переименовываем в term0.cfg Открываем с помощью блокнота. Комментарии на русском. Остановлюсь на некоторых моментах.

  • clienthostname = frwt имя хоста. Не должно повторяться
  • win2kIP = 192.168.0.1 Сетевой адрес сервера терминалов. Указываем IP машины с windows server
  • driver = vesa Драйвер нужен для ЭЛТ-мониторов, так как vesa не позволяет оперировать с частотой развертки. По очереди меняем, пока не добиваемся нужной картинки.
  • bpp = 16 Глубина цветности. У меня Windows Server 2003. Ставлю 16
  • user = enter_username Имя пользователя по умолчанию. Можно стереть или написать другое
  • domain = SERVER Имя домена по умолчанию. Пишем свой домен.

Закрываем, сохраняем. Копируем файл в папку FRWT 3.4.1\FRWTGEN\iso\FREERWT\boot В этой же папке открываем блокнотом isolinux.cfg .В конец файла добавляем через пробел frwt_cd .Закрываем, сохраняем. Идем в папку FRWT 3.4.1\FRWTGEN Запускаем файл frwt.bat .Получаем frwt_3.4.1.iso .Записываем образ на диск. Ставим диск в компьютер, получаем следующие картинки (это я получил на ВМ, чтобы лучше видно было).

Собственно сам компьютер


И успешный вход.

Грабли: Если вместо последней картинки — черный экран, значит либо меняем видеокарту, либо экспериментируем с драйверами в конфигурационном файле, который мы создавали до формирования iso-образа.

Время загрузки (на моей машине): 30 секунд.

P.S.: Для экспериментов рекомендую использовать cd-rw. Вдруг драйвер не пойдет, или старый монитор мерцает. Испорченных болванок итак много на планете. Экономим поликарбонат — улучшаем экологию.

Май 15

Если мы просто скопируем папку MDBDATA, то подключить ее к Recovery Storage Group может не получиться. Особенно если она повреждена или отсутствуют логи.  Поможет утилита Eseutil с ключом /p

Например, вводим в командной строке

eseutil /p x:\exchsrvr\mdbdata\priv.edb

Начнется процесс восстановления базы данных. Это может занять продолжительное время. От суток до нескольких дней в зависимости от размера базы данных. БД в 40 гигабайт восстанавливалась около суток.

После этого БД можно подключить к Recovery Storage Group.

Тут может произойти злая шутка. Если аварийный сервер назывался Server1, а новый — Server13, то подключить не получится. Но ничего страшного. Можно подсунуть к Exchange восстановленную БД с Server1. Просто переименуем восстановленную БД так, как Exchange желает.

Нажмем Найти и выберем БД с названием Server13.

Копируем наши файлы с БД Server1 в папку Recovery Storage Group и переименовываем их так, как хочет Exchange. Далее указано, где посмотреть названия.

Монтируем хранилище.

Нажимаем Yes на возможное предупреждение.

Хранилище подмонтировано. Переносим почту из БД в Recovery Storage Group в новую БД.

Для начала нужно узнать MailboxGuid каждого пользователя в аварийной БД. Они все сбросятся в лог Exmerge. Читаем ниже.

Воспользуемся утилитой Exmerge в папке Exchange/bin/

Так как мы работаем с базой данных аварийного сервера Exchange,  ни один из почтовых ящиков невозможно будет перенести, пока в БД в Recovery Storage Group и в БД Exchange на новом сервере не совпадет атрибут msExchMailboxGuid.

На предыдущей картинке я уже адаптировал данный атрибут для трех почтовых ящиков. Для всех остальных будут ошибки в логе. Допустим, нам нужно перенести еще один почтовый ящик. Ищем его CN в логе ExMerge.log в папке /Exchange/bin

Копируем первую выделенную строку в блокнот. И разбиваем ее согласно примеру.

Можно также воспользоваться конвертером http://www.arricc.net/exchange-guid-converter.php

Грабли: в данной строке есть ascii-символы (выделенные точками), нужны их шестнадцатеричные коды. В шестнадцатеричной системе исчисления могут быть числа 1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F. Все другие — ascii. Их преобразуем с помощью таблицы (см.ниже). Если цифра стоит одна, как в нашем примере 1 и 9, то это тоже ascii-символ.

На контроллере домена через утилиту adsiedit редактируем свойство пользователя в лесе Domain — OU

 

Если возникают уведомления о превышении количества символов в строке или о неправильности введенной строки, значит Вы неверно отредактировали исходную строку в Exmerge.log. Если все нормально — никаких уведомлений не появляется.

Возвращаемся к серверу Exchange. Делаем экспорт почтового ящика  из аварийной БД в новую.

Перезапускаем Exmerge, повторяем предыдущие шаги (до просмотра лога Exmerge).

Выбираем папку на компьютере, куда будет экспортирован ящик.

Нажимаем Далее и (после экспорта) Готово.

Запускаем Exchange SystemManager. Заходим в Recovery Storage Group — Mailboxes. Выбираем интересующего пользователя правой кнопкой. Делаем Exchange Task.

Выбираем метод восстановления. Перенос или Копия. Я всегда выбираю Копию. Мало ли что может случится в процессе переноса.

Готово =) Мы перенесли ящик из аварийной базы в новую базу, даже если сведения о имени сервера были утрачены и инфо о старом сервере была вычищена из  Active Directory.

Май 15

Случился выход из строя сервера. Точнее, сервер просто зависал. Нет возможности сделать бекап утилитой ntbackup. Железо безнадежно устарело для временного замещения. Нет возможности сделать перенос сервера на новое железо штатными средствами Exchange. Остается только скопировать поврежденную базу данных через другой компьютер из папки Exchange.

Предупреждение: Все нижеописанные действия Вы делаете на свой страх и риск!!! Если есть возможность обратиться к профессионалам — сделайте это, даже за деньги. В противном случае Вы можете что либо не так сделать и Ваша корпоративная почта будет навсегда утеряна.

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

Рекомендации: запишите настройки сетевых карт на сервере, имя сервера, настройки Exchange.

Грабли: никогда не включайте ротацию(удаление) логов!!!  В логах содержатся все цепочки почтовых сообщений. Логи удаляются только после бекапа утилитой ntbackup.

Грабли: копируйте всю папку MDBDATA. Ценные файлы в ней с расширением .stm, .edb, .log, .chk. Если резервного копирования утилитой ntbackup не делалось продолжительное время. то на сервере можно обнаружить множество файлов .log. Их нужно скопировать все!

Грабли: делайте все возможное, чтобы избежать переноса аварийного сервера. Ищите идентичное железо. После того, как сбойный сервер заработает, переносите его уже в нормальном режиме штатными средствами на новое железо.

Грабли: при разворачивании нового сервера используйте Windows Server версии 2003. Именно с этой версии появилась возможность теневого копирования Exchange без его остановки. Установка Exchange также производится без запинок. Перед установкой дождитеcь всех обновлений на Windows Server. Разворачивайте Exchange 2003 на жестких дисках объемом не менее 500 гигабайт. Желательно, чтобы жесткие диски были в RAID-массиве через аппаратный контроллер. Либо разворачивайте Exchange на виртуальный сервер. Это увеличит время восстановления в разы (путем подключения бекапа виртуального сервера к любой виртуальной машине),а также Вы получите гибкое управление виртуальным сервером.

Грабли: установка Exchange 2003 должна произойти без единой ошибки. Если ошибки были, удаляем установку. Ищем конфликты и по новой устанавливаем. На 2000 сервере ошибок была целая туча. Вплоть до того,что мне пришлось лезть в папку с установщиком Exchange и смотреть, какие файлы он дополнительно устанавливает. Как оказалось, net.framework 2.0, который лежал в установщике, был с ошибками и не устанавливался. Пришлось «подсунуть» Exchange другой установщик net.framework. После этого установка прошла без ошибок. Но я не рекомендую использовать Windows Server 2000 для развертывания Exchange 2003.

Грабли: после установки Exchange 2003 установите все сервис паки на Exchange. Это SP1, SP2. SP2 позволит Вам расширить размер базы данных до 70 гигабайт через редактирование реестра.

Грабли: через утилиту adsiedit, установленную на контроллере домена (устанавливается отдельно и входит в пакет Support Tools на установочном диске с Windows Server, также можно скачать из интернета с официального сайта microsoft), необходимо удалить Exchange из Active Directory. Делайте это только в случае, если 1.Вы не можете осуществить перенос сервера, 2. осуществить установку Exchange с ключом /disasterrecovery или 3.(крайний случай) Вы не можете удалить Exchange штатными средствами с аварийного сервера. Если в Active Directory есть упоминание о старом Exchange сервере, новый Вы не развернете.

Грабли: при удалении Exchange стирается вся информация о сервере, почтовых ящиках пользователей в Active Directory. Необходимо переписать все почтовые ящики, алиасы на них.

Мар 25

Доводы в сторону MS Exchange:

  1. Доступ через Outlook, OWA (через интернет-браузер), альтернативные клиенты (начиная с Exchange 2007). В exchange 2003 возможен доступ через версии Mozilla Zunderbird версии ниже 4, но доступна только папка «Входящие».
  2. Легкость настройки Outlook.
  3. Интеграция с Active Directory. Пользователь за любым ПК может получить доступ к почте со своего аккаунта, не прибегая к перенастройке почтового клиента (Outlook).
  4. Хранение всей почты, адресных книг (Outlook), календарей (Outlook)  на сервере.

Минусы MS Exchange:

  1. Любая утилитка, расширяющая возможности Exchange, стоит кучу денег.
  2. Нужно покупать лицензию (примерно 700 долларов). И докупать лицензии на каждый ящик (около 70 долларов).
  3. Требует наличия актуальной версии Windows и соответствующего ей железа.
  4. Корректная поддержка и совместимость гарантируется только для клиентов Outlook (идут вместе с платным MS Office).
  5. Очень тяжелая установка и настройка. Особенно на старом ПО (2003 Exchange). В результате ошибочной настройки можно легко отправить свой ip в глобальный бан-лист, из которого его потом практически не вычистить.
  6. Вытащить почту и адреса из поврежденной БД можно только сторонним ПО с ценами от 300 долларов и до 800.
  7. Почта вытаскивается через .pst файлы. Подкинуть другому пользователю, например, свою почту не получится.

 

Доводы в сторону hMailServer:

  1. Простая установка за считанные минуты.
  2. Возможность использования альтернативных БД для хранения почты (MySQL, Perl)
  3. Простота добавления аккаунтов и псевдонимов.
  4. Гибкость.
  5. Можно проверять почту внешним антивирусом и спам-фильтром.
  6. Легкий бекап (для стандартной БД по умолчанию только 1024 Мб).
  7. Встроенные утилиты само-диагностики, бекапа и рассылки.
  8. Возможность создания локальной почты. Без выхода в Интернет.
  9. Почта хранится в .eml файлах и к ним можно получить доступ с любого почтового клиента.

Минусы hMailServer:

  1. Привязка к ПК.
  2. Подходит для небольших организаций с небольшим обменом трафика.
  3. Лучше сделать на всякий случай дополнительный резервный почтовый сервер.
  4. Для производительности целесообразнее настроить хранение почты на локальном ПК
Мар 25

Падение сервера с Exchange 2003 превратилось в настоящую головную боль.

  1. Советы по эксплуатации уже работающих серверов
  2. Никогда!!! НИКОГДА!!! Не включайте циркуляцию логов. Пусть их много, но без них база данных не подмонтируется корректно.
  3. Делайте постоянно backup. Только после бекапа Exchange перепишет все логи в файл базы данных и удалит их.
  4. Не превышайте размер в 16 Гб, если у вас Exchange Standard.
  5. До самого последнего пробуйте запустить сервер без форматирования/переустановки.

Советы при постоянных проблемах с сервером.

  1. Срочно предупредите всех, чтобы скопировали важную информацию: вложения в письмах, ценные письма, адреса из адресной книги.
  2. Составьте список всех почтовых ящиков в организации и псевдонимов к ним.
  3. Сделайте backup Exchange с помощью утилиты NTBackup.
  4. Посмотрите Вашу версию Exchange.

Советы при падении сервера и невозможности восстановления:

  1. Скопируйте файлы *.EDB и *.STM из директории Exchange. Обычно это папка MTADATA. Если есть логи, копируйте все без исключения. (А лучше целиком папку Exchange). Без логов БД вряд ли подмонтируется к новой инсталляции Exchange.
  2. При выборе новой инсталляции сначала удалите из Active Directory все почтовые ящики и воспользуйтесь штатной утилитой удаления  Exchange.
  3. Делайте новую инсталляцию Exchange только на ОС Windows Server 2003. Данная версия обладает возможностью теневого копирования, в отличие от 2000 Server. Это снимет головную боль при бекапе почтового сервера.
  4. Для новой инсталляции может понадобиться чистка Active Directory от следов Exchange. Чистится она с помощью специальных утилит.
  5. При выборе переустановки, ничего не удаляйте из Active Directory. Попробуйте запустить утилиту установки Exchange  с ключом /disasterrecovery
Мар 5
Alias           ac           Add-Content                                        
Alias           asnp         Add-PSSnapIn                                       
Alias           clc          Clear-Content                                      
Alias           clhy         Clear-History                                      
Alias           clear        Clear-Host                                         
Alias           cls          Clear-Host                                         
Alias           cli          Clear-Item                                         
Alias           clp          Clear-ItemProperty                                 
Alias           clv          Clear-Variable                                     
Alias           diff         Compare-Object                                     
Alias           compare      Compare-Object                                     
Alias           cvpa         Convert-Path                                       
Alias           copy         Copy-Item                                          
Alias           cp           Copy-Item                                          
Alias           cpi          Copy-Item                                          
Alias           cpp          Copy-ItemProperty                                  
Alias           dbp          Disable-PSBreakpoint                               
Alias           ebp          Enable-PSBreakpoint                                
Alias           etsn         Enter-PSSession                                    
Alias           exsn         Exit-PSSession                                     
Alias           epal         Export-Alias                                       
Alias           epcsv        Export-Csv                                         
Alias           epsn         Export-PSSession                                   
Alias           %            ForEach-Object                                     
Alias           foreach      ForEach-Object                                     
Alias           fc           Format-Custom                                      
Alias           fl           Format-List                                        
Alias           ft           Format-Table                                       
Alias           fw           Format-Wide                                        
Alias           gal          Get-Alias                                          
Alias           ls           Get-ChildItem                                      
Alias           gci          Get-ChildItem                                      
Alias           dir          Get-ChildItem                                      
Alias           gcm          Get-Command                                        
Alias           gc           Get-Content                                        
Alias           cat          Get-Content                                        
Alias           type         Get-Content                                        
Alias           ghy          Get-History                                        
Alias           h            Get-History                                        
Alias           history      Get-History                                        
Alias           gi           Get-Item                                           
Alias           gp           Get-ItemProperty                                   
Alias           gjb          Get-Job                                            
Alias           gl           Get-Location                                       
Alias           pwd          Get-Location                                       
Alias           gm           Get-Member                                         
Alias           gmo          Get-Module                                         
Alias           ps           Get-Process                                        
Alias           gps          Get-Process                                        
Alias           gbp          Get-PSBreakpoint                                   
Alias           gcs          Get-PSCallStack                                    
Alias           gdr          Get-PSDrive                                        
Alias           gsn          Get-PSSession                                      
Alias           gsnp         Get-PSSnapIn                                       
Alias           gsv          Get-Service                                        
Alias           gu           Get-Unique                                         
Alias           gv           Get-Variable                                       
Alias           gwmi         Get-WmiObject                                      
Alias           group        Group-Object                                       
Alias           man          help                                               
Alias           ipal         Import-Alias                                       
Alias           ipcsv        Import-Csv                                         
Alias           ipmo         Import-Module                                      
Alias           ipsn         Import-PSSession                                   
Alias           icm          Invoke-Command                                     
Alias           iex          Invoke-Expression                                  
Alias           r            Invoke-History                                     
Alias           ihy          Invoke-History                                     
Alias           ii           Invoke-Item                                        
Alias           iwmi         Invoke-WMIMethod                                   
Alias           measure      Measure-Object                                     
Alias           md           mkdir                                              
Alias           mv           Move-Item                                          
Alias           move         Move-Item                                          
Alias           mi           Move-Item                                          
Alias           mp           Move-ItemProperty                                  
Alias           nal                                                 New-Alias                                          
Alias           ni                                                  New-Item                                           
Alias           nmo                                                 New-Module                                         
Alias           ndr                                                 New-PSDrive                                        
Alias           mount                                               New-PSDrive                                        
Alias           nsn                                                 New-PSSession                                      
Alias           nv                                                  New-Variable                                       
Alias           ogv                                                 Out-GridView                                       
Alias           oh                                                  Out-Host                                           
Alias           lp                                                  Out-Printer                                        
Alias           popd                                                Pop-Location                                       
Alias           ise                                                 powershell_ise.exe                                 
Alias           pushd                                               Push-Location                                      
Alias           rcjb                                                Receive-Job                                        
Alias           rmdir                                               Remove-Item                                        
Alias           rm                                                  Remove-Item                                        
Alias           ri                                                  Remove-Item                                        
Alias           rd                                                  Remove-Item                                        
Alias           erase                                               Remove-Item                                        
Alias           del                                                 Remove-Item                                        
Alias           rp                                                  Remove-ItemProperty                                
Alias           rjb                                                 Remove-Job                                         
Alias           rmo                                                 Remove-Module                                      
Alias           rbp                                                 Remove-PSBreakpoint                                
Alias           rdr                                                 Remove-PSDrive                                     
Alias           rsn                                                 Remove-PSSession                                   
Alias           rsnp                                                Remove-PSSnapin                                    
Alias           rv                                                  Remove-Variable                                    
Alias           rwmi                                                Remove-WMIObject                                   
Alias           rni                                                 Rename-Item                                        
Alias           ren                                                 Rename-Item                                        
Alias           rnp                                                 Rename-ItemProperty                                
Alias           rvpa                                                Resolve-Path                                       
Alias           select                                              Select-Object                                      
Alias           sal                                                 Set-Alias                                          
Alias           sc                                                  Set-Content                                        
Alias           si                                                  Set-Item                                           
Alias           sp                                                  Set-ItemProperty                                   
Alias           sl                                                  Set-Location                                       
Alias           cd                                                  Set-Location                                       
Alias           chdir                                               Set-Location                                       
Alias           sbp                                                 Set-PSBreakpoint                                   
Alias           set                                                 Set-Variable                                       
Alias           sv                                                  Set-Variable                                       
Alias           swmi                                                Set-WMIInstance                                    
Alias           sort                                                Sort-Object                                        
Alias           sajb                                                Start-Job                                          
Alias           start                                               Start-Process                                      
Alias           saps                                                Start-Process                                      
Alias           sasv                                                Start-Service                                      
Alias           sleep                                               Start-Sleep                                        
Alias           spjb                                                Stop-Job                                           
Alias           kill                                                Stop-Process                                       
Alias           spps                                                Stop-Process                                       
Alias           spsv                                                Stop-Service                                       
Alias           tee                                                 Tee-Object                                         
Alias           wjb                                                 Wait-Job                                           
Alias           where                                               Where-Object                                       
Alias           ?                                                   Where-Object                                       
Alias           write                                               Write-Output                                       
Alias           echo                                                Write-Output
Мар 5

Вывести все диски

Get-Psdrive

Переход по файловой системе

Set-Location c:  = cd c:

Содержимое каталога

Get-Childitem  = ls = dir

Удалить

Remove-Item

Создать директорию

New-Item .\test -Type Directory

Переместить

Move-Item .\test.txt .\новая папка

Поместить результат в файл

Get-Process | Out-File C:\1.txt

Get-Process | Convertto-Html

Get-Process | Export-CSV

Get-Process | Export-CliXML

Мар 5

Передача данных одного командлета на вход другого осуществляется через символ | .

Get-Process | Sort-Object

Поместить команду в переменную и ее вызов

$a = Get-Process | Sort-Object

$a

Ветвящиеся конструкции

If (условие) {команда1 ; команда2}
Elseif (условие 2) {команда}
Else {команда1 ; команда2;команда3}

Синтаксис в условиях

-Eq               Равно
-Match       Сравнение по регулярному выражению
-Ne               Не равно
-Notmatch       Не совпадает с регулярным выражением
-Gt -Ge       Больше / Больше или равно
-Lt -Le       Меньше / Меньше или равно

Вывести сообщение

Write-Warning «err 111111«

Обработка в цикле (помогает, когда нужно обработать большой входящий поток текстовых данных построчно)

командлет | ForEach-Object { командлет}

 

Мар 5

Команда в WPS носит название командлет.

Просмотр сервисов.

Get-Service

Просмотр процессов.

Get-Process

Просмотр дисков.

Get-Psdrive

Просмотр текущей директории.

Get-Childitem  = ls = dir

Передать результат другому командлету (получить сервисы и осортировать = получить сервисы в отсортированном виде).

Get-Service | Sort-Object

Просмотр всех журналов

Get-Eventlog -List

 

Мар 5

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

Доступ практически ко всем параметрам ОС как локальной так и удаленной осуществляется через командную оболочку. Благодаря этому «матерые» администраторы Power Shell могут даже не устанавливать GUI, чтобы съэкономить ценные ресурсы сервера.

Раньше написание скриптов сводилось всего лишь к манипуляции GUI (графическим пользовательским интерфейсом) или управлением какой-нить маленькой утилитой, которая работала только в командной строке. Пару раз подводила, например, манипуляция с GUI утилиты Windows Backup. Всплывающее окно антивируса и все. Окно антивируса в фокусе, ожидание действия пользователя над зараженным файлом, блокировка файла в теневой копии, остановка скрипта в планировщике. Конечно, можно было найти другое решение проблемы, но не хотелось усложнять.

GUI не так удобна, как кажется. Управление сервером обычно осуществляется через оснастки mmc. Честно, когда встала задача блокировки запуска блокнота (даже переименованного) никакого другого решения как через оснастку не было. Причем пришлось облазить кучу англо-ресурсов в поиске решения. На хабре (не помню, где находится материал) задача была решена одним скриптом PowerShell. Да и в оснастках главное запомнить, как добраться до того или иного параметра. В WPS (Windows Power Shell), благодаря объектной модели, достаточно запросить параметры объекта одной командой.

Также можно управлять объектами COM. Для чего? Например, при установленном Exel или Word создать новый документ из командной строки, определить его структуру, добавить данные. Удобно же? Особенно, если стоит задача в создании 100 документов одинаковой структуры с порядковой нумерацией в названии и другими извратами. Или поместить результат работы скрипта в IE.

В Power Shell реализован механизм конвейерной обработки. Данные с выхода одной команды можно подать на вход другой. Можно программировать. Стандартные конструкции позволяют выполнить проверку условия и выполнить ту или иную команду в случае совпадения/несовпадения условия, можно запустить обработку команд в цикле, можно загнать длинную команду в одну переменную и манипулировать с этой переменной.

В Power Shell доступны псевдонимы. Конечно, лучше писать в синтаксисе WPS, но на первых порах это поможет, например, если Вы не знаете, как посмотреть директорию. ls или dir вместо Get-Childitem. Кстати, в WPS можно лазить по реестру как по диску с каталогами. Раньше тоже можно было так? Не спорю, но теперь можно изменять параметры реестра из командной оболочки.

Я бы сказал, все это круто и все это давно есть в *nix системах. Но хорошо, что и в Windows появился такой инструмент. За многими статьями обращайтесь на хабр. Так как практически многую информацию я получал оттуда. Copy-Paste делать не буду, только выдержки, полезные команды, свои скрипты или доработанные авторские (с ссылкой на исходный) .