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
Вывести все диски
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
Передача данных одного командлета на вход другого осуществляется через символ | .
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 { командлет}
Команда в WPS носит название командлет.
Просмотр сервисов.
Get-Service
Просмотр процессов.
Get-Process
Просмотр дисков.
Get-Psdrive
Просмотр текущей директории.
Get-Childitem = ls = dir
Передать результат другому командлету (получить сервисы и осортировать = получить сервисы в отсортированном виде).
Get-Service | Sort-Object
Просмотр всех журналов
Get-Eventlog -List
Честно сказать, даже не знаю с чего начать. Так как впервые у системных администраторов новый, удобный и гибкий инструмент администрирования операционных систем 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 делать не буду, только выдержки, полезные команды, свои скрипты или доработанные авторские (с ссылкой на исходный) .