Windows PowerShell - что это такое?
- Windows PowerShell (далее WPS) - это продвинутая командная строка, подобная UNIX shell, но с поддержкой .NET, COM и WMI.
- Команды, которые вы вызываете в WPS, называются commandlets (в русской документации они называются командлеты, я же далее буду называть их команды)
- Команды поддерживают конвейеры (pipelines), т.е. могут передавать результат своей работы другим командам в рамках одной строки вызова
Где взять?
В Windows 2008 поставляется в дистрибутиве, но требует отдельной установки через добавление роли. Для других ОС нужно скачать дистрибутив с сайта Microsoft. Поддерживаемые ОС:
- Windows XP with Service Pack 2
- Windows Server 2003 with Service Pack 1
- Windows Vista
WPS является .NET приложением и требует наличия .NET 2.0 в системе. WPS может работать в двух режимах – интерактивном и скриптовом. Мы будем рассматривать работу в интерактивном режиме.
Первые команды
Откройте консоль WPS и наберите следующие команды (WPS регистронезависим):
get-process - вы получите список всех процессов в системеget-service ms* – вы получите список всех сервисов, имена которых начинаются с msget- и нажмите клавишу tab – вы воспользовались функцией автозавершения (нажимая клавишу несколько раз, вы перебираете возможные варианты команд)Get-Eventlog – эта команда требует ввода параметров, ответьте на приглашениеLogName: и введите Application – будет выведен системный журнал событий Application
Структура команд
Команда WPS состоит из трех элементов – глагола, существительного и списка параметров (опционально). Глагол и существительное разделены дефисом, например:
get-process
Список параметров передается через пробел, например:
Get-childitem c:\ (будет выведено содержимое корневого каталога)
Если параметр содержит пробел, его надо заключать в кавычки:
Get-childitem “c:\Program Files”
Параметры можно передавать по имени или по порядку. В случае передачи по порядку, он должен соответствовать порядку параметров в документации, иначе будет ошибка. Например:
Get-ChildItem C:\mydata *.docGet-ChildItem -Path C:\mydata -Filter *.docGet-ChildItem -Filter *.doc -Path C:\mydataGet-ChildItem *.doc C:\mydata - эта строка даст ошибку
Параметр без значения называется свитчем, и по смыслу является функцией:
Get-ChildItem с:\mydata\docs –recurse
Автозавершение также работает с параметрами. Попробуйте это на примере get-childitem +tab. Также при задании параметров поддерживаются стандартные символы заместители (*, ?, интервалы [a-v] и т.п.) , например:
Get-process ?i*
Псевдонимы (aliases)
Для сокращения ввода и просто для удобства работы при вызове можно применять псевдонимы. Есть встроенные псевдонимы, например ps вместо get-process или gci вместо get-childitem. Полный список псевдонимов можно увидеть через get-alias.
Можно создавать свои псевдонимы. Это делается командами Set-Alias или New-Alias, но они будут доступны только в текущей сессии работы WPS. Псевдоним можно создать для любой внешней программы, например для Блокнота это выглядит так:
Set-Alias npd notepad.exe
WPS может вычислять выражения. Наберите в строке 2+5 и посмотрите результат).
Посмотреть все команды можно с помощью Get-command. Например, вывод всех команд, начинающихся с get:
Get-command get-*
Справка выводится по команде Get-help. Например, помощь по get-process:
Get-help get-process или get-process -?
Полная справка по команде дается с ключом full
Get-help get-process –full
Конвейеры
WPS поддерживает объектно-ориентрованные конвейеры, которые позволяют передавать результат работы одной команды в другую. Для создания конвейера используется вертикальная черта |. В конвейер передается типизированный .Net объект.
Например, вывод только имени и размера doc файлов размером больше 20Кб, отсортированных по размеру, можно выполнить такой командой:
Get-ChildItem c:\mydata –r -filter *.doc| Where-Object { $_.Length -gt 20000 }| Select-Object Name, Length| Sort-Object Length| Format-List
Остановить процесс можно так, на примере iexplore:
Get-Process iexplore | Stop-Process
Форматирование вывода осуществляется с помощью следующих команд:
- Format-Wide вывод в две колонки
- Format-List детальный список
- Format-Table таблица
Например, выполните следующие команды и сравните вывод:
Get-process | Format-WideGet-process | Format-ListGet-process | Format-Table
Вывод отдельных полей в таблице можно задать так:
Get-Process | Format-Table -p id,processname,handles
Подавление вывода:
Get-Process | Out-Null
Вывод на принтер
Get-Process | Out-Printer
Вывод на конкретный принтер
Get-Process | Out-Printer "Printer 1"
Вывод в файл
Get-Process | Out-file "c:\a\1.txt"
Вывод в файл отформатированной таблицы
Get-Process | Format-Table id, processname, cpu, ws | Out-file "c:\a\1.txt"
Фильтр where для задания условий
Get-Process | Where-Object {$_.ws -gt 1000000 }
Модель навигации
В WPS реализована универсальная модель навигации по различным объектам по образцу навигации по диску. Например, чтобы перейти в реестр, надо выполнить такую команду:
cd hklm:\
Дальше можно воспользоваться командой dir для просмотра.
Наберите команду Get-PSdrive и вы получите список всех логических дисков WPS. Команда Get-PSProvider покажет всех установленных провайдеров для логических дисков. WPS 1.0 содержит следующие диски:
- Файловая система (A, B, C и т.д.)
- реестр (HKCU, HKLM)
- переменные среды (env)
- хранилище сертификатов (cert)
- функции PowerShell (function)
- переменные PowerShell (variable)
- псевдонимы PowerShell (alias)
Команды для навигации по дискам:
Get-ChildItem (псевдонимы dir, ls) - просмотр папки
Get-Content (type, cat) - прочитать элемент
New-Item (ni) - создать элемент
Get-Location (pwd) - просмотр текущего местоположения
Set-Location (cd) - смена расположения
Работа с путями
Одна точка (.) означает текущий каталог, две точки (..) – родительский.
Команда test-path проверяет существование пути.
Команда resolve-path работает с символами заместителями в адресе и выводит все подходящие пути, например:
Resolve-path c:\a* - выведет все каталоги, начинающиеся с буквы a.
Можно задать новый диск, для какого-нибудь сложного пути, чтобы легче его вызывать. Например:
New-PSDrive -Name Mydocs -PSProvider FileSystem –Root "c:\Sample\Docs\"
И затем обращаться к нему так:
Dir mydocs:
Этот новый диск будет виден только в текущей сессии WPS , при этом он остается недоступен другим приложениям.
Консоль
Встроенная консоль небогата возможностями. Основные - клавиши Tab для автозавершения и F7 для вывода истории команд. Параметры окна консоли можно настроить в меню Свойства.
Режим работы консоли – командный или интерпретатора. Командный режим основной, в режим интерпретатора консоль переходит, когда мы вводим параметры команды по шагам, отвечая на выводимые приглашения.
Работа с файловыми системами
Get-PSDrive – посмотреть все диски WPSGet-PSDrive -psprovider filesystem – посмотреть только диски файловой системыGet-WmiObject Win32_logicaldisk | Select-Object deviceid,size, freespace – посмотреть букву диска, размер и свободное пространство на всех дисках (здесь используется обращение к WMI классу Win32_logicaldisk)Get-ChildItem c:\ – просмотр каталога (то же что dir)Get-ChildItem c:\windows -filter "*.dll" – просмотр каталога с фильтромGet-ChildItem c:\windows –recurse - просмотр с вложенными каталогамиGet-ChildItem c:\windows | Measure-Object -Property length -min -max -average –sum – подсчет статистики по каталогуCopy-Item c:\documents\file1.pdf c:\a\f1.pdf – копирование файлаMove-Item с:\documents\f1.pdf c:\a\f1.pdf – перемещение файлаRename-Item f1.pdf f2.pdf – переименование файлаRemove-Item c:\a\f1.pdf – удаление файлаGet-Item с:\a\f1.pdf - просмотр свойств файла
Работа с документами
Get-Content c:\a\f1.csv - чтение файлаGet-Content c:\a\f1.csv | Measure-Object - вывод количества строк в файлеGet-Process | Out-File c:\a\processes1.txt – вывод результата работы команды в файлGet-Service | ConvertTo-Html name,status –title "Servicelist" -body "List of services" |Set-Content с:\servicelist.htm – вывод результата работы команды в html файл
Работа с реестром
Set-Location hklm:\software – перейти в ветку реестраGet-ChildItem hklm:\software – просмотр ветки реестраNew-Item –path hklm:\software -name test – создать новую ветку в реестреCopy-Item hklm:\software\test hklm:\software\test_old - скопировать ветку реестраRemove-Item "hklm:\software\test" –Recurse – удалить ветку реестра с вложениями
Автостарт
Get-Wmiobject Win32_StartupCommand – просмотр списка команд в автостарте windows
Общие папки
Get-WmiObject Win32_Share – просмотр списка общих папок
Работа с процессами
Get-Process – просмотр списка процессовgps | Format-Table -GroupBy Name – вызов списка процессов с помощью псевдонима и с форматированием выводаGet-Process –id 4011 – просмотр конкретного процессаStart-Process powershell.exe -Credential (Get-Credential) – запуск процессаStop-Process -name iexplore – остановка процессаGet-Process | where { $_.WS -gt 10MB } | stop-process – остановка процесса с условием
Работа с сервисами
Get-Service | Where-Object {$_.status –eq "running"} – просмотр запущенных сервисовGet-Service | Where-Object {$_.status –eq "stopped"} – просмотр остановленных сервисовGet-Service | sort Status | Format-Table -GroupBy Status – форматированный вывод списка сервисовget-service iisadmin | % { $_.DependentServices } – вывод зависимых сервисовStart-Service IISADMIN – старт сервисаStop-Service IISADMIN –force – старт сервиса вместе с зависимымиSet-Service IISADMIN -startuptype "manual" – задание режима запуска сервиса
Установка нового сервиса
New-Service -Name "NewAppServer"-binaryPathName c:\soft\appserver.exe-Description "New App Server”-DisplayName "New Application Server"Start-Service NewAppServer
Работа с железом
Get-WmiObject Win32_ComputersystemGet-WmiObject Win32_OperatingSystemGet-WmiObject Win32_OperatingSystem | select serialnumberGet-WmiObject win32_BiosGet-WmiObject Win32_BootConfigurationGet-WmiObject Win32_WindowsProductActivationGet-WmiObject Win32_OSRecoveryConfigurationGet-WmiObject win32_processorGet-WmiObject Win32_MemoryDeviceGet-WmiObject Win32_VideoControllerGet-WmiObject Win32_SoundDeviceGet-WmiObject Win32_DiskdriveGet-WmiObject Win32_TapedriveGet-WmiObject Win32_CDRomdriveGet-WmiObject Win32_NetworkAdapterGet-WmiObject Win32_USBControllerGet-WmiObject Win32_KeyboardGet-WmiObject Win32_PointingDeviceGet-WmiObject Win32_PrinterGet-WmiObject Win32_Printjob
Работа с Event Log
Get-EventLog –list – просмотр списка журналовGet-EventLog Application – просмотр журналаGet-EventLog Application -newest 30 – просмотр новых записей в журнале
Работа с учетными записями
Get-WmiObject Win32_Account - все записиGet-WmiObject Win32_UserAccount - только пользователиGet-WmiObject Win32_Group – только группы
Работа с ACL
Get-Acl hklm:/software/test – просмотр ACL для ветки реестраGet-Acl c:\a – просмотр ACL для папкиGet-Acl c:\a\f1.txt – просмотр ACL для файла
Комментариев нет:
Отправить комментарий