Топ 7 Powershell командлетов для новичков

Original author: Sitaram Pamarthi
Наверное, все слышали о PowerShell, но наверняка не всем довелось с ним работать. Для тех, кто только начинает прокладывать свой путь в дебри PowerShell, мы приводим перевод поста, вышедшего на портале 4sysops.com. В нем рассказано о 7 командах, которые помогут тем, кто только начал работать с PowerShell. За подробностями – добро пожаловать под кат.


GET-HELP

Самый первый и самый главный командлет PowerShell – вызов справки. С помощью командлета Get-Help можно проверить синтаксис, посмотреть примеры использования и детальное описание параметров любого PowerShell командлета. Этот командлет примечателен тем, что вы просто можете набрать Get-Help Services, чтобы получить список всех командлетов, которые подходят для работы со службами.
Пример:
PS C:\> Get-Help Service



Вы можете выбрать любой командлет из списка, выведенного по запросу выше, чтобы получить справку о нем. Например,
PS C:\> Get-Help -Name Get-Service


Вы получаете всю информацию о командлете Get-Service (будет рассмотрен ниже).


GET-CONTENT


Чтение содержимого файлов – наиболее частое требование для новичков, которые пытаются выучить PowerShell. Процедура чтения файлов с PowerShell упрощается. Даже неспециалист может читать содержимое файла, просто передав его в командлет Get-Content.
Пример.
PS C:\> Get-Content C:\scripts\Computers.txt
mytestpc1
techibee.com
dummynotresolvinghost.com
PS C:\>



Необходимо больше информации о командлете? Воспользуйтесь Get-Help:
PS C:\> Get-Help Get-Content -Detailed 


GET-SERVICE


Этот командлет перечисляет все службы, установленные на компьютере. Вы можете использовать его для получения информации о конкретной службе, совокупности служб или просто обо всех службах на компьютере.
Пример:
PS C:\> Get-Service wwansvc, spooler
Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
Stopped wwansvc WWAN AutoConfig
PS C:\>
 



Здесь мы запросили информацию о двух службах wwansvc и spooler
Выводится таблица со статусом службы, ее именем и отображаемым именем.
Мы можем видеть что служба spooler запущена, а wwansvc остановлена

STOP-SERVICE И START-SERVICE


Запуск и остановка служб – достаточно важный момент в работе администратора Windows. В PowerShell имеются встроенные командлеты, которые упрощают работу администратора, не требуя открытия консоли MMC. Используя эти командлеты Вы можете останавливать/запускать службы как на локальных, так и на удаленных компьютерах.
Примеры:
Запуск/остановка службы на локальном компьютере (на примере службы spooler):
PS C:\> Stop-Service -Name Spooler
PS C:\> Start-Service -Name Spooler


Запуск/остановка службы на удаленном компьютере (spooler):
PS C:\> $ServiceObj = Get-Service -ComputerName MyPC1 -Name spooler
PS C:\> Stop-Service -InputObj $ServiceObj
PS C:\> Start-Service -InputObj $ServiceObj


GET-PROCESS


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

PS C:\> Get-Process



Введите следующий командлет для получения подробной информации о запущенных процессах
PS C:\> Get-Process | Format-List * -Force



Получение информации о процессах, запущенных на удаленном компьютере:
PS C:\> Get-Process -ComputerName MYPC1 | Format-List * -Force



MYPC1 необходимо заменить на имя того компьютера, с которого вы хотите получить информацию о запущенных процессах.

STOP-PROCESS


Этот командлет остановливает процесс на локальном или удаленном компьютере. Он берет имя или ID процесса и завершает этот процесс. Это полезно в тех случаях, когда приложение не отвечает.
Пример:
Остановить процесс с ID 22608 на локальном компьютере:
PS C:\> Stop-Process -Id 22608

Остановить все процессы Excel на локальном компьютере:
PS C:\> Stop-Process -name excel



Совет: Хотя у командлета Stop-Process отсутствует параметр -ComputerName, Вы все равно можете использовать его для завершения удаленных процессов, используя предложенный ниже совет:
PS C:\> $Obj = Get-Process -Name excel -ComputerName MYPC1
PS C:\> Stop-Process -InputObject $Obj



Upd:
В посте приведен перевод статьи с портала 4sysops.com
Top 7 PowerShell commands for beginners

P.S. Смотрите также интересные посты на Хабре, посвященные работе с PowerShell
Аудит доступа к файлам
Аудит Active Directory (Часть 1 и 2)
Актуализируем учетные данные Active Directory
Аудит создания учетных записей в AD
Netwrix
0.00
Company
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 18

    –2
    Интересно я повершелом не пользовался очень давно, они уже консольку сделали нормальную, ну например как терминал на линуксе, или есть альтернативы?
      –2
      А вы им вообще пользовались? Что именно в нем ненормального?
        +3
        Да растянуть можно или нет окно например?
          –1
          Ширину окна можно в свойствах задать, так она стандартная. Есть какие то другие критерии ненормальности?
        +5
        Перевожу на русский — нет, «эмулятор терминала» от CMD так и остался.
          0
          С консолькой всех плохо. Как вариант есть ISE, но это уже будет почти IDE. С другой стороны его можно использовать как интерпретатор с IntelliSense.
            0
            Вообще, Powershell — это скриптовый рантайм, который может хостится в любом приложении. Консоль — только один из варинтов среди кучи редакторов от простенького Powersheel ISE до PowerGUI/PowerShellPlus/PrimalScript, Powershell web access, интеграция в Visual Studio и т.п. Интегрировать его в свое приложение — вопрос пары строк.
            +1
            PowerShell — достаточно полезный инструмент, на самом деле. В статье, на мой взгляд, нужно было обратиться к более привычным сценариям использования. К примеру, посчитать количество строк во всех *.cs файлах в поддиректориях проекта:
            (dir -filter "*.cs" -rec | get-content).length
            
            Или работа с математическими выражениями, когда нужно что-то быстро посчитать:
            $a = [math]::sin(3*[math]::Pi/2)+10; 100/$a
            
            .
              0
              >Получение информации о процессах, запущенных на удаленном компьютере:
              Данная команда:
              Invoke-Command -Computername computername -Credentials hostname\username -ScriptBlock {Get-Process calc.exe | Stop-Process} на порядок выгодней так как есть возможность повышения полномочий. К сожалению в вашем примере это не реализовано, хотя на мой взгляд это очень важно.
              Вот только при выполнении команд на удаленных хостах (Invoke-Command, Enter-PSsession) возникают проблемы с кодировкой кириллицы.
              И да, на удаленном машине должен быть включен WinRM.
              По Powershell есть отличная справка в ISE. Тем не менее спасибо за статью.
                +1
                В PowerShell совсем ничего не понимаю, но неужели чтобы вывести содержимое файла действительно нужно написать Get-Content — именно два слова, через дефис и с больших букв?
                На фоне линуксового cat это кажется немного дико.
                  –1
                  Как то так ;)
                  > function cat { Get-Content $args }
                  > cat C:\scripts\Computers.txt
                    +1
                    Есть множество alias'ов, в том числе линуксовых (ls, pwd, mv, man, cat, ...).
                    Полный список в длинноокне
                      –1
                      В повершелле по умолчанию есть алиас gc для get-content. Так что он еще короче, чем cat. А как звучат в линуксе аналоги для set-content, add-content, clear-content? «help *-content»? Есть ли в этих наименованиях система? В повершелле все просто — есть «nouns» (в данном случае — Content), есть «verbs» («Get»), как различные виды операций с объектом. Есть система именования скриптлетов, которые образуются как Verb-Noun. Есть гайдлайны, какие verbs и для каких целей использовать. Чтобы жить было удобней — есть алиасы (тот же «cat» для get-content). А какая система в линуксе?
                        +1
                        > А как звучат в линуксе аналоги для

                        Если я правильно понял то, что они все делают, то наверное как-то так:

                        > set-content,

                        echo «TEST TEST» > file.txt

                        > add-content,

                        echo «TEST TEST» >> file.txt

                        > clear-content?

                        echo "" > file.txt

                          0
                          Я понимаю, про что вы говорите. Но для работы этой системы verb-noun все равно нужно знать наизусть оба этих слова, т.е. запоминать (и набирать на клавиатуре!) более длинную команду, если не пользоваться упомянутыми выше алиасами.

                          Вообще, у меня давно складывается впечатление, что Microsoft по какой-то странной причине предпочитает более наглядные, описательные названия, зачастую неоправданно. Стоит только вспомнить появление папки «Program Files» в Windows 95. Зачем было использовать такое длинное, неудобное в наборе название, которое, к тому же, было несовместимо с тогда еще распространенным DOS'ом? Разве только чтобы всем наглядно продемонстрировать, что новая ОС поддерживает имена папок длиной более 8 символов да еще и с пробелами.

                          Такая описательность в названиях функций и папок, конечно, наглядна: из названия Get-Content ясно гораздо больше, чем из названия cat, а Program Files звучит более понятно, чем /usr/bin. Но для повседневной работы такое, по-моему, совершенно неоправданно, особенно при наборе всего этого вручную в консоли.
                        +1
                        Самый лучший оператор powershell это конвейер |. Если бы не он, то повершелл был бы всего лишь очередным командным недоязыком. А список сервисов-процессов, кому он, в сущности, нужен?
                          +2
                          Из всех написанных Вами cmdletов я соглашаюсь только с Get-Help. К нему я полагаю что надо добавить Get-Member,Get-command, Get-Type. Это 4 (вместе с Get-Help) cmdletа с которых КАЖДОМУ НОВИЧКУ надо начинать изучение PowerShell. Они помогают понять, каким образом надо искать ответы на вопросы по поводу остальных cmdletов.
                          А всякие get-service,-content,-process и остальные не дают никаких знаний по остальным командам, и нужны для определенных целей.
                            0
                            Get-Member и Get-Type замечательны, это бесспорно.

                          Only users with full accounts can post comments. Log in, please.