Команды Powershell Windows 10

Обновлено: 21.11.2024

Windows PowerShell — это новая оболочка командной строки, более мощная и поддерживающая сценарии, чем командная строка. За мой трехлетний опыт использования я нашел его действительно полезным, особенно если вы занимаетесь автоматизацией или написанием сценариев. Однако большинство из нас либо не знают об этом, либо не предпочитают использовать его вместо старой оболочки командной строки.

В этом посте я собираюсь поделиться полезными, но простыми командами (с примерами) Windows PowerShell. Вы можете использовать эти команды для выполнения множества задач — от получения справки до запуска процессов. Начнем?

Примечание. Windows PowerShell создана с учетом обратной совместимости и поэтому поддерживает многие команды командной строки. Тем не менее, вы можете продолжать использовать старые команды в новом красочном интерфейсе.

Получить помощь [справка]

Если вы новичок в PowerShell, у вас могут возникнуть проблемы; и в таких ситуациях Get-Help становится вашим спасителем. Он предоставляет необходимую информацию о командлетах, командах, функциях, сценариях и рабочих процессах PowerShell.

Более того, это просто: вам нужно ввести Get-Help, а затем команду, о которой вы ищете подробности. Например, вы можете получить информацию о «Get-Process» с помощью Get-Help Get-Process .

Get-команда [gcm]

Windows PowerShell позволяет обнаруживать свои команды и функции с помощью Get-Command. Он отображает список команд определенной функции или для определенной цели на основе параметра поиска.

Вам нужно только ввести Get-Command, а затем поисковый запрос в PowerShell. Например, Get-Command *-service* отображает команды с «-service» в имени. Не забудьте использовать звездочки с обеих сторон вашего запроса, потому что это подстановочный знак, который помогает искать неизвестное.

Invoke-Command [icm]

Если вы хотите запустить команду или сценарий PowerShell — локально или удаленно на одном или нескольких компьютерах — «Invoke-Command» вам в помощь. Он прост в использовании и помогает выполнять пакетное управление компьютерами.

Вы должны ввести Invoke-Command, а затем команду или сценарий с полным путем. Например, вы можете запустить команду «Get-EventLog» с помощью Invoke-Command -ScriptBlock или на удаленном компьютере «Server01» с помощью Invoke-Command -ScriptBlock -ComputerName Server01 .

Invoke-Expression [iex]

Invoke-Expression запускает другую команду или выражение. Если вы предоставляете выражение или строку в качестве входных данных, эта команда сначала оценивает их, а затем запускает, но также работает только локально, в отличие от предыдущей команды.

Вы должны ввести Invoke-Expression, а затем команду или выражение. Например, вы можете присвоить переменной «$Command» строку, сообщающую команду «Get-Process». Когда вы запускаете Invoke-Expression $Command , Get-Process запускается как команда на вашем локальном компьютере.

Invoke-WebRequest [iwr]

Вы можете загрузить, войти в систему и получить информацию о веб-сайтах и ​​веб-службах во время работы в Windows PowerShell с помощью Invoke-WebRequest.

Вы должны использовать его как Invoke-WebRequest, за которым следуют его параметры. Например, вы можете получить ссылки на заданную веб-страницу с помощью команды as (Invoke-WebRequest -Uri "https://docs.microsoft.com").Links.Href .

Установить-ExecutionPolicy

Хотя создание и выполнение скриптов (с расширением «ps1») в Windows PowerShell возможно; однако существуют ограничения в целях безопасности. Но вы можете переключить уровень безопасности с помощью команды Set-ExecutionPolicy.

Вы можете ввести Set-ExecutionPolicy, а затем один из четырех уровней безопасности — Restricted, Remote Signed, All Signed или Unrestricted, чтобы использовать команду. Например, вы можете назначить статус ограниченной политики, используя Set-ExecutionPolicy -ExecutionPolicy Restricted .

Get-Item [gi]

Если вы ищете информацию об элементе в любом заданном месте, например, в файле на жестком диске, Get-Item — лучший способ получить ее в Windows PowerShell. Вы должны знать, что он не получает содержимое элемента, например файлы и подкаталоги в заданном каталоге, если это явно не указано вами.

Вы должны ввести Get-Item, а затем путь или строку вместе с ее параметрами, если они есть. Например, вы можете получить все элементы (файлы или папки), начинающиеся с «M» в текущем каталоге, используя Get-Item M*. Наряду с содержимым каталогов он также может получать содержимое ключей реестра.

Копировать элемент [копировать]

Если вам нужно скопировать файлы и каталоги на диск или записи реестра и ключи в реестре, вы можете использовать Copy-Item. Она работает аналогично команде «cp» в командной строке, но намного лучше.

Вы также можете использовать команду Copy-Item для копирования и переименования элементов в той же команде — укажите новое имя в качестве места назначения. Например, вы можете скопировать и переименовать «Services.htm» в «MyServices.txt», используя Copy-Item «C:\Services.htm» -Destination «C:\MyData\MyServices.txt».

Удалить-Элемент [удалить]

Если вы хотите удалить такие элементы, как файлы, папки, функции, ключи и переменные реестра, вам подойдет команда Remove-Item. Что мне показалось интересным, так это то, что он предоставляет параметры для включения и исключения элементов.

Вы можете использовать команду Remove-Item для удаления элементов из определенных мест с помощью параметров. Например, вы можете удалить файл «MyServices.txt» с помощью команды Remove-Item «C:\MyData\MyServices.txt».

Получить содержимое [cat]

Когда вам нужно просмотреть содержимое текстового файла в определенном месте, вы открываете и читаете его в редакторе кода/текста, таком как Notepad++. В Windows PowerShell вы можете использовать Get-Content для извлечения содержимого, не открывая файл.

Например, вы можете получить 50 строк содержимого «Services.htm», а затем использовать Get-Content «C:\Services.htm» -TotalCount 50 .

Set-Content [sc]

Вы можете сохранять текст в файлы с помощью Set-Content, аналогично команде «echo» в оболочке Bash. В сочетании с Get-Content вы также можете получить содержимое одного файла и скопировать его в другой файл с помощью этой команды.

Например, вы можете ввести Set-Content, чтобы записать или заменить содержимое файла новым содержимым. Кроме того, вы можете объединить его с примером предыдущей команды, чтобы сохранить вывод в новый файл с именем «Sample.txt», используя Get-Content «C:\Services.htm» -TotalCount 50 | Set-Content "Sample.txt" .

Получить переменную [gv]

Если вы хотите использовать переменные в Windows PowerShell, команда Get-Variable поможет вам визуализировать значения переменных. Он показывает их в табличной форме и позволяет включать, исключать и использовать подстановочные знаки.

Вы можете использовать эту команду, введя Get-Variable, а затем ее опции и параметры. Например, вы можете получить значение переменной с именем «desc», используя следующий код: Get-Variable -Name «desc» .

Set-переменная [set]

Вы можете назначить или изменить/сбросить значение переменной с помощью команды Set-Variable. В качестве ярлыка вы также можете установить простую переменную, используя формат $< $VarName = VarValue >$, например $desc = "A Description" .

Вы можете использовать команду Set-Variable с последующими ее параметрами, чтобы установить переменную. Например, мы можем установить значение для переменной с именем «desc», используя команду Set-Variable -Name «desc» -Value «A Description».

Get-процесс [gps]

Обычно мы используем диспетчер задач, чтобы найти запущенные процессы на нашем компьютере. В Windows PowerShell любой может использовать командлет Get-Process, чтобы получить список запущенных в данный момент процессов, который вы также можете обработать.

Команду можно записать как Get-Process вместе с поисковым запросом. Например, если вам нужна информация о процессах, в имени которых есть слово «исследовать», вы можете ввести Get-Process *explore* (обратите внимание на звездочки).

Запустить процесс [saps]

Windows PowerShell упрощает запуск одного или нескольких процессов на вашем компьютере. Я обнаружил, что эта команда удобна в приложениях для сценариев, поскольку это одна из обязательных команд, которые вам понадобятся для автоматизации задачи.

Вы можете ввести Start-Process, а затем его параметры, чтобы использовать команду. Например, вы можете запустить Блокнот, набрав Start-Process -FilePath "notepad" -Verb runAs в Windows PowerShell.

Остановить процесс [убить]

Вы можете остановить определенные или все экземпляры процесса, запущенного на вашем компьютере, используя его имя или PID (идентификатор процесса) благодаря команде Stop-Process. Что делает его привлекательным, так это то, что вы можете определить, остановлен процесс или нет, и вы даже можете остановить процессы, которые не принадлежат или не запущены текущим пользователем.

Вы можете ввести команду Stop-Process, а затем указать ее параметры, чтобы остановить данные процессы. Например, вы можете остановить все процессы Блокнота с помощью команды Stop-Process -Name "notepad".

Get-Service [gsv]

Если вам нужна информация об определенных службах (работающих или остановленных) на вашем компьютере, вы можете использовать Get-Service. Он отображает службы, установленные в вашей системе, и предоставляет параметры для их фильтрации, включения и исключения.

Если вы хотите использовать эту команду, вы можете ввести Get-Service, а затем ее параметры. Например, введите следующую команду Get-Service | Where-Object, чтобы службы «работали» в вашей системе.

Запуск службы [sasv]

Если вы хотите запустить службу на своем компьютере, команда Start-Service может помочь вам сделать то же самое из Windows PowerShell. Я обнаружил, что его мощности достаточно для запуска службы, даже если эта служба отключена на вашем компьютере.

При использовании команды Start-Service необходимо указать имя службы. Например, Start-Service -Name "WSearch" запускает службу "Поиск Windows" на вашем локальном компьютере.

Останов службы [spsv]

Если вы хотите остановить работу служб на вашем компьютере, вам может помочь команда Stop-Service. Вам нужно указать имя службы вместе с Stop-Service. Например, введите Stop-Service -Name "WSearch", чтобы остановить службу "Поиск Windows" на вашем компьютере.

Преобразовать в HTML

PowerShell может предоставить потрясающую информацию о вашей системе. Однако в основном он представлен в неудобоваримом формате, но вы можете использовать ConvertTo-HTML для создания и форматирования отчета для его анализа или отправки кому-либо.

В этом Itechguide Виктор делится своим окончательным списком наиболее полезных команд PowerShell для системных администраторов. Для каждой команды он объясняет синтаксис и параметры. Затем завершите несколькими примерами.

В этом Itechguide я буду использовать команды PowerShell, PS, командлеты PowerShell и командлеты попеременно.

Просмотреть темы сообщений

Самые полезные команды Powershell для поиска и получения справки по командлетам

Вы не можете говорить о самых полезных командах PowerShell, не научившись их находить. Ниже приведены команды PowerShell, которые помогут вам найти командлеты.

Получить-команду

Командлет Get-Command — это первая и самая важная PS-программа, которую новичок в PowerShell должен изучить и уметь использовать. Почему? Это поможет вам найти другие командлеты PowerShell. Какая команда может быть важнее команды, которая может это сделать?

Чтобы найти все команды PS на вашем компьютере, просто выполните следующую команду:

Понимание результатов командлета Get-Command

В результатах Get-Command есть четыре столбца

  1. CommandType: указывает, является ли команда псевдонимом, командлетом или функцией.
  2. Имя: имя — это фактическая команда, которую вы выполняете.
  3. Версия: это версия PowerShell
  4. .
  5. Источник: модуль команды PS.

Эта информация позволяет фильтровать результаты Get-Command. Предположим, вы хотите увидеть команды PowerShell, содержащие слово «EventLog». Выполнение приведенной ниже команды выполнит задание:

Обратите внимание, где я добавил звездочки. Это связано с тем, что я знаю, что
EventLog — это часть командлета, именуемая "существительное". Однако, если вы даже не знаете, что можете попробовать добавить звездочки в начале, то попробуйте в конце.

Ниже показан результат предыдущей команды.

Параметры команды Get

Наконец, прежде чем двигаться дальше, давайте обсудим параметры командлета Get-Command.

Чтобы получить все параметры и информацию о команде Get-Command, выполните следующую команду:

Это даст вам всю информацию о командлете Get-Command.

Получить помощь

Пока командлет Get-Command находит нужный командлет, команда Get-Help PowerShell предоставляет информацию, необходимую для запуска команды.

Самый простой способ использования командлета Get-Help – ввести Get-Help, а затем команду, о которой вы хотите получить информацию. Чтобы получить дополнительные сведения о командлете Get-EventLog, выполните следующую команду:

Это даст вам основную информацию о команде PowerShell Get-EventLog. См. результат ниже:

Некоторые важные параметры команды Get-Help

Как и любой другой командлет PowerShell, командлет Get-Help имеет ряд параметров. Ниже приведены наиболее важные параметры, которые вам понадобятся.

  1. -Подробно. Параметр Подробно дает вам команду СИНТАКСИС, ПАРАМЕТРЫ, Псевдонимы и ПРИМЕЧАНИЯ.
  2. -Полный: Полный предоставляет аналогичную информацию, предоставляемую параметром Подробный, с дополнительной информацией о каждом параметре
  3. .
  4. -Примеры: примеры использования командлета. Это может быть очень полезно, если вы никогда раньше не использовали командлет и не знаете, что делать дальше.
  5. -Online: открывает страницу интерактивной справки командлета.

Чтобы просмотреть параметры командлета PS, введите командлет в PS, нажмите клавишу пробела, введите дефис «-», а затем клавишу табуляции. Нажимая клавишу табуляции, вы будете пролистывать доступные параметры.

Самые полезные команды Powershell для управления файлами и папками

Теперь, когда вы знаете, как находить команды PowerShell, давайте приступим к делу. Следующий набор наиболее полезных команд PowerShell — это командлеты, помогающие управлять файлами и папками.

Получить дочерний элемент

Получает элементы в указанном месте. Чтобы вывести список папок на моем диске C, я выполню следующую команду:

Появится список всех папок верхнего уровня. Чтобы вывести список всех файлов, папок и вложенных папок, используйте параметр –Recurse.

Совет для профессионалов
Командлет Get-ChildItem можно комбинировать с другими командлетами, чтобы рассчитать размер каждой папки в указанном каталоге.

Копировать элемент и перемещать элемент

Вы можете использовать командлет Get-ChildItem, чтобы составить список элементов в папке, а затем передать результат командлету Copy-Item, чтобы скопировать элементы в новое место. Команда ниже выполнит эту работу:

Приведенная выше команда powershell копирует только папки и файлы верхнего уровня, но НЕ копирует вложенные папки и файлы. Чтобы скопировать все файлы и папки, включая подпапки, включите параметр –Recurse в команду Get-ChildItem, как показано ниже:

Пока командлет Copy-Item копирует элементы из одного места в другое, командлет Move-Item перемещает элемент.

Удалить элемент

Этот командлет удаляет указанные элементы. Как и в случае с командлетами Copy-Item и Move-Item, выходные данные Get-ChildItem можно направить в Remove-Item.

Осторожно используйте команду Remove-Item, так как она может удалить все файлы и папки на вашем компьютере, включая файлы Windows!

Совет для профессионалов
Передав выходные данные Get-ChildItem в Remove-Item, вы можете создать простой сценарий, который будет регулярно удалять некоторые файлы журналов. Вы можете запланировать запуск сценария PS в указанное время с помощью планировщика Windows.

Самые полезные команды Powershell для создания отчетов

Существует 3 набора команд PowerShell, которые можно использовать для экспорта элементов в CVS, экспорта в текстовый файл и в файлы HTML. Мы обсудим эти 3 далее.

Экспорт-CSV

Export-Csv преобразует набор строк в CSV и сохраняет в файл. Этот командлет очень важен для создания отчетов.

Чтобы продемонстрировать использование Export-CSV, выполните следующую команду:

Вот результат команды.

Вы можете направить вывод предыдущей команды в Export-CSV, чтобы создать отчет CVS о результатах, показанных на предыдущем изображении.

Вот команда для выполнения этой задачи.

Обратите внимание, что мне пришлось включить в путь имя CSV-файла. У меня также есть еще один параметр -NoTypeInformation. Чтобы узнать больше о -NoTypeInformation, прочитайте эту статью PowerShell NoTypeInformation: Applications and Uses.

В предыдущей команде есть еще один командлет Select-Object. Этот командлет использовался для указания столбцов для возврата и экспорта в CSV. Если я исключил Select-Object, вывод CSV будет содержать много нежелательных данных. Позже в этом руководстве я расскажу о Select-Object.

Для справки ниже приведен вывод файла CSV.

Хотя этот отчет очень похож на результат, показанный на предыдущем изображении, он более полезен как отчет. Вы можете отправить файл CSV своему начальнику!

Из файла

Командлет Out-file отправляет выходные данные в текстовый файл

Приведенная ниже команда экспортирует командлет Get-Command PowerShell в текстовый файл вместо CSV:

Вот результат в текстовом файле: Тот же отчет, теперь в текстовом файле! Как это хорошо!

Что делать, если вы запускаете этот отчет ежедневно и не хотите замещать содержимое предыдущего дня, а хотите добавить его. Эта команда выполнит задание.

Самые полезные команды Powershell для управления процессами

Другим набором наиболее полезных команд PowerShell для администраторов Windows являются командлеты для управления процессами Windows. Давайте посмотрим на них.

Процесс получения

Этот командлет PowerShell выводит список всех процессов, запущенных на локальном компьютере. Он также может запускать процессы на удаленном компьютере с помощью параметра –ComputerName.

Однако при запуске командлета PowerShell Get-Process без каких-либо параметров он возвращает все процессы, запущенные на локальном компьютере. Чтобы попробовать это, выполните команду ниже. Результат показан на изображении ниже.

Команды PowerShell Start-Process и Stop-Process

Команда PowerShell Get-Process может работать с командлетами PowerShell Start-Process и Stop-Process для запуска или остановки процесса или набора процессов.

Допустим, вы выполнили команду PowerShell Get-Process, но хотите остановить процесс с определенным идентификатором процесса 10500, команда ниже выполнит эту работу.

Предупреждение!
Осторожно используйте командлет PowerShell Stop-Process, так как остановка неправильного процесса может привести к нестабильной работе компьютера.

Чтобы запустить процесс, передайте выходные данные команды Get-Process PowerShell командлету Stop-Process PowerShell.

Самые полезные команды PowerShell для управления журналами событий

Управление журналом событий — одна из самых важных задач администраторов Windows. Итак, следующий набор команд PowerShell поможет вам управлять журналами событий.

Получить журнал событий

Командлет PowerShell Get-EventLog получает события из указанного журнала событий. Вы можете получать события на локальном или удаленном компьютере. Чтобы получать события с удаленного компьютера, используйте параметр –ComputerName, чтобы указать удаленный компьютер. Однако обратите внимание, что вам потребуются соответствующие разрешения для доступа к удаленному компьютеру.

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

Очистить журнал событий

Как и следовало ожидать, командлетов журнала событий больше, но мы рассмотрим эти 2 в этом руководстве.

Clear-EventLog очищает все события в указанном журнале событий. Командлет может очищать журналы событий как на локальных, так и на удаленных компьютерах.

Команда ниже удаляет все события с именем «Windows PowerShell» с локального компьютера

Чтобы выполнить приведенную ниже команду, вам нужно открыть PowherShell от имени администратора — щелкните правой кнопкой мыши и выберите «Запуск от имени администратора».

Самые полезные команды PowerShell для получения информации о вашем компьютере

Если вам нужно собрать данные о компьютерах в вашей сети — имя компьютера, версию BIOS, размер ОЗУ, информацию о диске и т. д. — вам поможет командлет Get-WmiObject POwerShell! давайте познакомимся с этим мощным командлетом.

Get-WmiObject

Командлет Get-WmiObject имеет параметр –Class, который позволяет вам указать объект WMI, к которому вы хотите получить доступ. Команда ниже получит список классов WMI,

Как только вы узнаете имя класса WMI, вы можете выполнить команду Get-WmiObject, чтобы получить полезную информацию с локального или удаленного компьютера. Ниже приведен список наиболее важных классов WMI, которые могут вам понадобиться

  • Win32_PhysicalMemory — информация о доступной памяти
  • Win32_Processor — информация о процессоре
  • Win32_LogicalDisk — информация о логическом диске
  • Win32_DiskDrive — информация о физическом диске
  • Win32_OperatingSystem — информация об операционной системе.
  • Win32_BaseBoard — получение информации о материнской плате

Чтобы получить информацию об операционной системе, выполните следующую команду:

Самые полезные команды PowerShell для подключения к удаленным сеансам PowerShell

Нельзя обсуждать команды PowerShell, не говоря об удаленном взаимодействии PS. Как системный администратор Windows вам потребуется удаленно подключаться к компьютерам с помощью PowerShell.

Вот команды, которые вам понадобятся.

Команды PowerShell Enter-PSSession и Exit-PSSession

Команда PowerShell Enter-PSSession позволяет интерактивно запустить удаленный сеанс PS на одном компьютере. По завершении работы с удаленным компьютером завершите сеанс с помощью команды Exit-PSSession.

Чтобы открыть удаленный сеанс PS с компьютером под названием Computer1, выполните следующую команду:

Вызов команды

В то время как командлет PowerShell Enter-PSSession позволяет выполнять команды на одном удаленном компьютере, командлет Invoke-Command позволяет выполнять команды на одном или нескольких удаленных компьютерах.

Если вы хотите выполнить команду Get-Process на компьютере1, компьютере2, компьютере3, выполните следующую команду:

Новая-PSSession

Командлет PowerShell New-PSSession позволяет открывать постоянный сеанс с удаленным компьютером. Поскольку сеанс является постоянным, рекомендуется добавить удаленный сеанс в переменную.

Чтобы открыть постоянный удаленный сеанс PS на компьютерах Computer1, Computer2, выполните следующую команду:

Установив сеанс PS и сохранив его в переменной $session, вы можете выполнять обычные команды PowerShell в удаленном сеансе с помощью
командлета Invoke-Command PowerShell.

В качестве последнего примера в удаленных сеансах PowerShell, чтобы выполнить Get-Process на удаленных компьютерах, выполните команду:

Я сохранил результаты команды Get-Process в переменной $Processes, поскольку компьютеров несколько. Сохранение результата в переменной упрощает работу с данными. Вы можете использовать цикл ForEach для извлечения и организации данных.

Вот и готов мой окончательный список самых полезных команд PowerShell! Я надеюсь, что этот Itechguide был вам полезен.

Кроме того, вы можете задать вопрос, оставить комментарий или оставить отзыв с помощью формы «Оставить ответ», расположенной в конце этой страницы.

Наконец, для получения дополнительных руководств по PowerShell посетите нашу страницу Windows PowerShell.

Оболочка Windows PowerShell является мощной и может делать почти все, что человек хочет на своем компьютере. Но единственная проблема в том, что это инструмент командной строки и не имеет графического интерфейса. Однако это может быть полезно, когда интерфейс на основе графического интерфейса дает сбой или перестает отвечать на запросы. К сожалению, главное то, что обычному пользователю не хватает знаний о том, как использовать PowerShell в полной мере. Но сегодня мы попытаемся обсудить 10 лучших команд PowerShell, которые могут помочь пользователю сделать больше в Windows 10.

Команды PowerShell, которые помогут пользователю сделать больше

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

  1. Запустите приложение UWP.
  2. Получить справку по любому командлету.
  3. Получить похожие команды.
  4. Найти определенный файл.
  5. Прочитать содержимое файла.
  6. Поиск информации обо всех службах на компьютере.
  7. Поиск информации обо всех процессах на компьютере.
  8. Настройка политики выполнения.
  9. Скопируйте файл или каталог.
  10. Удалить файл или каталог.

1] Запустите приложение UWP

PowerShell — отличный инструмент, с помощью которого можно запускать приложения UWP за считанные секунды. Но главное заключается в правильном выполнении команды. Вы можете использовать

2] Получить справку по любому командлету

Предположим, вы когда-нибудь запутались в том, какую команду вы должны использовать для выполнения конкретной задачи. Или о том, что делает конкретный командлет, вам не нужно беспокоиться. Для этого можно использовать командлет Get-Help. Вы можете использовать его следующими способами:

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

3] Получить похожие команды

Чтобы найти команды похожего типа или содержащие определенную фразу, вы можете использовать командлет Get-Command. Однако в нем не перечислены все командлеты PowerShell, поэтому вы можете использовать определенные фильтры. Вы можете использовать следующие команды-

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

4] Поиск определенного файла

Если вам нужно найти определенный файл или каталог для определенного местоположения, вы можете использовать командлет Get-Item. Вы можете использовать его как

чтобы просмотреть содержимое определенного пути.

5] Чтение содержимого файла

Если вам нужно прочитать содержимое файла, вы можете использовать команду Get-Content как-

6] Прочитать информацию обо всех службах на компьютере

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

7] Прочитать информацию обо всех процессах на компьютере

Подобно командлету Get-Service, вы можете использовать командлет Get-Process для получения списка всех процессов, запущенных на вашем компьютере. Кроме того, вы можете использовать следующие связанные командлеты для выполнения соответствующих функций,

8] Настройка политики выполнения

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

Здесь политики сверху вниз варьируются от самого низкого до самого высокого уровня безопасности.

9] Скопируйте файл или каталог

Пользователь может использовать командлет Copy-Item для копирования одного файла или каталога в другое место назначения. Синтаксис этого командлета:

10] Удалить файл или каталог

Подобно командлету Copy-Item, пользователь может использовать командлет Copy-Item для копирования одного файла или каталога в другое место назначения. Синтаксис этого командлета:

Есть ли у вас какие-либо другие полезные командлеты, которыми вы можете поделиться со всеми нами? Не стесняйтесь записывать их в поле для комментариев ниже.

Как получить список команд PowerShell?

В PowerShell доступно более 200 команд. Если вы хотите узнать каждый из них, вы можете использовать Get-Command для получения списка всех модулей, псевдонимов и команд PowerShell. Если вы собираетесь сохранить список, выведите команду в текстовый файл на компьютере и сохраните его. Вы можете открыть его в Excel, а затем распределить их по категориям.

В чем разница между CMD и PowerShell?

PowerShell — это расширенная версия cmd. Помимо интерфейса, это также язык сценариев, используемый для облегчения администрирования системы. Наряду с этим вы также можете использовать команды командной строки в PowerShell. В Windows 11 у вас есть доступ к терминалу Windows, который предлагает как командную строку, так и PowerShell.

Дата: 3 января 2021 г. Теги: PowerShell

Похожие сообщения

Команда Install-Module была найдена в модуле PowerShellGet, но модуль не может быть загружен

Как экспортировать список служб Windows с помощью командной строки

Доступ к PowerShell Get-Appxpackage запрещен, не распознан или не работает

[электронная почта защищена]

Аюш стал энтузиастом Windows с того дня, как у него появился первый компьютер с Windows 98SE. Он является активным участником программы предварительной оценки Windows с первого дня и теперь является MVP программы предварительной оценки Windows.Он тестировал предварительные версии сервисов на своем ПК с Windows 10, устройствах Lumia и Android.

сообщить об этом объявлении

Позвольте мне начать с небольшого рассказа о себе, поскольку, надеюсь, это поможет придать контекст и легитимность этому сообщению. У меня есть опыт работы разработчиком программного обеспечения, я написал свой первый код в 1980 году, но в 1995 году я начал работать с продуктами компании Citrix и устранял проблемы с ними, или, точнее, в основном с приложениями, поставляемыми на с тех пор занимает первое место среди них.

Раньше это было ручным делом, которое утомительно, скучно и подвержено ошибкам, поэтому, будучи по своей природе ленивым человеком, я пытался упростить, ускорить и автоматизировать устранение неполадок, где это возможно и практично, с помощью PowerShell.< /p>

В этой статье рассказывается о некоторых моих успехах в этой области, и я надеюсь, что она побудит вас более эффективно устранять неполадки, чтобы у вас было больше времени на забавные вещи (хотя лично для меня это довольно часто больше связано с устранением неполадок или разработка PowerShell)!

Ниже я представляю список команд PowerShell для устранения неполадок, которые я считаю наиболее полезными и чаще всего использую.

Получить экземпляр Cim

WMI, или CIM (произносится как "See Eye Em"), как командлеты PowerShell, преобразованные в версию 3.0, — это отличный, но простой и универсальный метод для получения информации обо всех видах вещей с одного или нескольких компьютеров.

Например, вы можете получить подробную информацию о процессах, службах, дисках, сетях, памяти, процессорах, аккумуляторах и т. п. Кроме того, некоторые компании, такие как Citrix, добавляют собственных поставщиков WMI для предоставления доступа к информации. в противном случае для извлечения потребовался бы проприетарный API или исполняемый файл.

Например, эта команда получит сведения об операционной системе, время установки и последней загрузки (рис. 1):

Рис. 1: Команда Get-CimInstance выводит информацию об операционных системах, которая отображается в виде таблицы

Многие мои консультационные услуги включают проверку работоспособности различных компонентов. Способ, которым я собираю большое количество информации о настольных компьютерах и серверах, которые я проверяю, которую я могу использовать, когда я не на месте или не имею доступа к системам клиентов, заключается в использовании сценария, который я написал, который запрашивает почти пятьдесят классов CIM из список компьютеров, указанный в командной строке или через текстовый файл. Вы можете бесплатно загрузить скрипт из моего репозитория GitHub.

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

Get-WinEvent

В журнале событий Windows может содержаться невероятно полезная информация при устранении таких проблем, как медленный вход в систему.

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

С помощью PowerShell мы можем легко искать определенные события

  • через идентификатор
  • в определенный период времени
  • содержащий определенный текст или
  • комбинация вышеперечисленного

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

Например, вот пример использования аргумента хэш-таблицы, также известного как словарь, для получения событий блокировки учетной записи за последние двенадцать часов с удаленного контроллера домена, включая компьютер, на котором произошла блокировка. было вызвано (рис. 2 и 3):

Рис.2. Команда Get-WinEvent предоставляет в качестве вывода информацию о событиях блокировки учетной записи за последние двенадцать часов с удаленного контроллера домена, которые отображаются в виде таблицы

Рис. 3: Скриншот свойств событий Windows

Обратите внимание в команде, как мы используем массив «Свойства», возвращаемый Get-WinEvent, для извлечения определенных полей, чтобы нам не приходилось анализировать полный текст записи журнала событий (рис. 4).

Рис. 4. Команда Get-WinEvent, описанная в тексте, выбирает только первое [0] и второе [1] поле набора EventData

Опять же, есть сценарий, который я использую почти каждый день, чтобы получить все события из всех включенных журналов событий за заданный период времени, например, вход пользователя в систему, чтобы найти подсказки/причины ошибок или низкой производительности. Вы можете загрузить его из моего репозитория GitHub.

Введите-PSSession

Рассмотрите сценарий, в котором пользователи на определенном компьютере жалуются на низкую производительность, но когда вы пытаетесь удаленно подключиться к этому компьютеру с помощью mstsc или аналогичного, ваш вход в систему зависает.

Не было бы неплохо иметь метод удаленного взаимодействия с этим устройством с низкими издержками для интерактивного или автоматизированного устранения неполадок, как это можно сделать с помощью telnet или ssh для компьютеров *nix (например, с помощью отличного бесплатного инструмента PuTTY)?

Ввод команды PowerShell Enter-PSSession открывает интерфейс командной строки для удаленного компьютера, если удаленное взаимодействие PowerShell включено через GPO или вручную с помощью «winrm quickconfig» или Enable-PSRemoting. -Принудительно.

Это позволяет устранять неполадки и устранять неполадки, такие как поиск самых высоких потребителей ЦП или памяти с помощью Get-Process (псевдоним ps) и их завершение, если это уместно, с помощью Stop-Process (псевдоним убить).

Тест-NetConnection

Как проверить, запущен ли конкретный веб-сервер? Пинг? Нет! Ping просто проверяет, включены ли ответы ICMP, и косвенно проверяет разрешение имен, если не используется IP-адрес — он не подтверждает, есть ли процесс, прослушивающий определенный порт на удаленной машине, и брандмауэры разрешают соединение.

До появления PowerShell я использовал telnet.exe для тестирования этого порта, но теперь PowerShell предоставляет команду Test-NetConnection (псевдоним tnc), которая позволяет проверять определенный порт на машине (и трассировку маршрута), как показано на рис. 5:

Рис. 5: Test-NetConnection можно использовать для запроса информации об определенном порте на машине

Кроме того, поскольку он возвращает объект PowerShell или логическое значение, его легко включить в сценарии без необходимости анализировать выходные данные команд, подобных ping.exe, которые нам приходилось делать в старые недобрые времена.< /p>

Получить-ADUser

Это лишнее в этом списке, поскольку оно недоступно по умолчанию: необходимо установить модуль ActiveDirectory PowerShell, хотя это очень просто с помощью «Add-WindowsFeature RSAT-AD-PowerShell» (запускать с повышенными правами).

У многих поставщиков есть модули PowerShell, которые позволяют вам взаимодействовать с их технологиями и автоматизировать их. Например, я ежедневно использую модули VMware и Citrix.

Get-ADUser и связанные командлеты, такие как Get-ADGroupMember, позволяют нам проверять и изменять информацию AD и особенно полезны для запросов к большому количеству объектов. и создание отчета (см. Экспорт-CSV позже).

Вот пример подсчета того, сколько учетных записей имеют домашний диск, настроенный на «H:», который нам может понадобиться, если мы проводим техническое обслуживание — мы могли бы так же легко изменить домашний диск (рис. 6):

Рис. 6. Командлет Get-ADUser можно использовать для простого получения информации о пользователях в Active Directory

Я также нахожу это очень полезным, когда в клиентских системах мне не предоставлен доступ к пользователям и компьютерам AD, но мне нужно проверить свойства пользователя, такие как членство в группе.

Процесс получения

Часто нам нужно проверить, запущены ли критически важные процессы, или исследовать процессы, которые мы не распознаем. Хотя Диспетчер задач и SysInternals Process Explorer являются полезными инструментами, мы можем проверить и исправить множество проблем с помощью командлета Get-Process (псевдоним ps).

В этом примере показаны все процессы, запущенные из папок, в названии которых есть «Citrix», отсортированные по возрастанию времени запуска этого процесса, что позволяет нам определить, был ли процесс запущен при загрузке, входе пользователя в систему и т. д. . (рис. 7):

Рис. 7. Командлет Get-Process можно использовать для фильтрации процессов, в имени которых есть слово «Citrix», и для отображения конкретной информации о них

Вот аналогичная команда, которая ищет «VMware» в названии компании в ресурсах версий .exe файлов всех запущенных процессов (рис. 8 и 9):

Рис. 8. Командлет Get-Process можно использовать для фильтрации процессов, в имени компании которых есть слово «VMware», и для отображения конкретной информации о них

Рис. 9. Название компании обычно можно найти в сведениях о свойствах файла .exe в записи «Авторское право»

Получить дочерний элемент

Скорее всего, вы действительно использовали эту команду, даже не подозревая об этом, особенно если вы заходите из командной строки, если вы использовали «dir» в приглашении PowerShell, так как это псевдоним для Get -ChildItem.

Как следует из названия, Get-ChildItem предоставляет нам информацию о дочерних элементах, их дочерних элементах и ​​т. д., если мы указываем -recurse родителя, в котором parent может быть папкой локальной или удаленной файловой системы, разделом реестра, хранилищем сертификатов и т. д. (подсказка: запустите Get-PSDrive, чтобы узнать, какие диски PowerShell доступны).

Вот пример, показывающий подробности в данной папке и дочерних элементах, включая все скрытые, которые активирует -force, для любого файла, размер которого превышает 100 МБ, отсортированные в порядке убывания размера.< /p>

Рис. 10: Получение сведений в заданной папке и дочерних элементах для любого файла, размер которого превышает 100 МБ, с сортировкой по убыванию размера с помощью команды Get-ChildItem

Получить помощь

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

Это, в сочетании с Get-Command, чтобы увидеть, какие команды предоставляются с определенным модулем или связаны с сетями, дисками и т. д., позволяет быстро использовать незнакомые команды, не прибегая к помощи пользователя. любимая поисковая система в Интернете.

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

Помните, что вы можете просмотреть доступные аргументы с помощью табуляции или использовать пробел, чтобы отобразить их все, и что авторы сценариев, такие как я, будут добавлять необходимые комментарии к нашим сценариям, чтобы Get-Help работал с ними как с хорошо.

Вне сетки

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

Вот однострочник, который я часто использую, чтобы преобразовать текущий файл журнала IIS в представление в виде сетки, чтобы я мог искать ошибки, медленное время отклика и т. д.:

Рис. 11. Команда Out-GridView позволяет форматировать данные, запрошенные с помощью PowerShell, в четкой сетке

И на рисунке 12 показана одна строка, которую я выбрал, когда нажал кнопку «ОК» в представлении сетки, которая была помещена в буфер обмена командой Set-Clipboard (псевдоним scb), чтобы ее можно было вставить в мои заметки по устранению неполадок/проверке работоспособности. (что вы имеете в виду, вы все еще используете ручку и бумагу!).

Рис. 12: вывод ранее упомянутой команды.

Экспорт-CSV

И последнее, но не менее важное: Export-CSV — это встроенный командлет, который позволяет нам записывать любые объекты PowerShell, например выходные данные ранее представленных командлетов, таких как Get-Process в правильно отформатированный файл CSV, чтобы их можно было просматривать, фильтровать, сортировать и т. д. в Microsoft Excel, Google Sheets или даже возвращать в PowerShell через Import-CSV для дальнейшей обработки

Рис. 13. Экспорт данных, полученных с помощью PowerShell, в CSV-файл

Обратите внимание на использование -NoTypeInformation, которое предотвращает вывод строки типов свойств в csv, что сбивает с толку Excel, хотя его легко удалить. Вы также можете использовать -Append для добавления новых объектов в существующий CSV-файл, хотя столбцы должны совпадать между старыми и новыми.

Я часто использую Export-Csv для «отчетов бедняков», когда сценарии PowerShell, запускаемые с помощью обычных запланированных задач, сопоставляют данные из различных источников, создают файлы CSV и отправляют их по электронной почте «заинтересованным» сторонам через Send-MailMessage (для чего требуется доступ к почтовому SMTP-серверу).

Наконец, если вы используете нидерландскую локаль, вы, вероятно, захотите использовать -delimiter ';', так как они используют точки с запятой в своих файлах значений, разделенных запятыми — факт, который мне потребовалось некоторое время, чтобы понять при работе в голландской компании!

Заключение

Ну, это все, ребята. Обратите внимание: в этом — очень произвольном — списке нет порядка, как не было бы порядка инструментов в вашем ящике с инструментами рабочего — если вам нужно открутить винт, то вряд ли вы вытащите молоток, как ваш первый выбор (если, конечно, вы не Джереми Кларксон).

Читайте также: