Разное

Powershell get: Get-Command (Microsoft.PowerShell.Core) — PowerShell | Microsoft Docs

31.03.1978

Содержание

Установка PowerShellGet — PowerShell | Microsoft Docs

  • Чтение занимает 3 мин

В этой статье

Модуль PowerShellGet входит в комплект поставки в следующих выпусках:

Получение последней версии из коллекции PowerShell

Перед обновлением PowerShellGet всегда устанавливайте последний поставщик NuGet. Откройте сеанс PowerShell с повышенными привилегиями и выполните следующую команду.

Install-PackageProvider -Name NuGet -Force

Важно!

Начиная с апреля 2020 года коллекция PowerShell не поддерживает протокол TLS (Transport Layer Security) версий 1.0 и 1. 1. Если вы не используете TLS 1.2 или более поздней версии, при попытке доступа к коллекции PowerShell возникнет ошибка. Чтобы проверить, используется ли TLS 1.2, выполните следующую команду:

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12

Дополнительные сведения см. в объявлении в блоге, посвященном PowerShell.

Для систем с PowerShell 5.0 (или более поздней версии) можно установить последнюю версию PowerShellGet

Чтобы установить PowerShellGet в Windows 10, Windows Server 2016, а также любой системе с WMF 5.0, 5.1 или PowerShell 6, выполните следующие команды из сеанса PowerShell с повышенными привилегиями.

Install-Module -Name PowerShellGet -Force

Update-Module позволяет получить более новые версии.

Update-Module -Name PowerShellGet
Exit

Для компьютеров с PowerShell 3.0 или 4.0

Эти инструкции применимы к компьютерам, на которых установлена предварительная версия PackageManagement или не установлены никакие версии PowerShellGet.

Командлет Save-Module используется в обоих наборах инструкций. Save-Module скачивает и сохраняет модуль и все зависимости из зарегистрированного репозитория. Самая последняя версия модуля сохраняется по указанному пути на локальном компьютере, но не устанавливается. Чтобы установить модули в PowerShell 3.0 или 4.0, скопируйте сохраненные папки модуля в

$env:ProgramFiles\WindowsPowerShell\Modules.

Дополнительные сведения см. в статье Save-Module.

Примечание

PowerShell 3.0 и 4.0 поддерживают только одну версию модуля. Начиная с версии PowerShell 5.0 модули устанавливаются в папку <modulename>\<version>. Это позволяет устанавливать несколько версий параллельно. Скачав модуль с помощью Save-Module, необходимо скопировать файлы из <modulename>\<version> в папку <modulename> на целевом компьютере, как показано в приведенных ниже инструкциях.

Подготовительные действия на компьютерах с PowerShell 3.
0

Инструкции, приведенные в разделах ниже, устанавливают модули в каталоге $env:ProgramFiles\WindowsPowerShell\Modules. В PowerShell 3.0 этот каталог отсутствует в $env:PSModulePath по умолчанию, поэтому его необходимо добавить, чтобы модули загружались автоматически.

Откройте сеанс Windows PowerShell с повышенными привилегиями и выполните в нем следующую команду (действие будет заметно в будущих сеансах).

[Environment]::SetEnvironmentVariable(
  'PSModulePath',
  ((([Environment]::GetEnvironmentVariable('PSModulePath', 'Machine') -split ';') + "$env:ProgramFiles\WindowsPowerShell\Modules") -join ';'),
  'Machine'
)
Компьютеры с установленной предварительной версией PackageManagement

Примечание

Предварительная версия PackageManagement была загружаемым компонентом, который обеспечивал доступность PowerShellGet для PowerShell версий 3 и 4, но сейчас он недоступен. Чтобы проверить, установлен ли он на данном компьютере, выполните Get-Module -ListAvailable PowerShellGet.

  1. В сеансе PowerShell используйте Save-Module, чтобы скачать текущую версию PowerShellGet. Скачиваются две папки: PowerShellGet и PackageManagement. Каждая папка содержит вложенную папку с номером версии.

    Save-Module -Name PowerShellGet -Path C:\LocalFolder -Repository PSGallery
    
  2. Убедитесь, что модули PowerShellGet и PackageManagement не загружаются в других процессах.

  3. Снова откройте консоль PowerShell с повышенными привилегиями, а затем выполните следующую команду.

    'PowerShellGet', 'PackageManagement' | % {
      $targetDir = "$env:ProgramFiles\WindowsPowerShell\Modules\$_"
      Remove-Item $targetDir\* -Recurse -Force
      Copy-Item C:\LocalFolder\$_\*\* $targetDir\ -Recurse -Force
    }
    
Компьютеры без PowerShellGet

Если на компьютере нет какой-либо версии PowerShellGet (проверьте это командой Get-Module -ListAvailable PowerShellGet

), для скачивания модулей необходим компьютер с PowerShellGet.

  1. На компьютере с установленным PowerShellGet используйте Save-Module, чтобы скачать текущую версию PowerShellGet. Скачиваются две папки: PowerShellGet и PackageManagement. Каждая папка содержит вложенную папку с номером версии.

    Save-Module -Name PowerShellGet -Path C:\LocalFolder -Repository PSGallery
    
  2. Скопируйте соответствующую вложенную папку <version> в папках PowerShellGet и

    PackageManagement на компьютер, на котором не установлен PowerShellGet, в папки $env:ProgramFiles\WindowsPowerShell\Modules\PowerShellGet\ и $env:ProgramFiles\WindowsPowerShell\Modules\PackageManagement\ соответственно (требуется сеанс с повышенными правами).

  3. Например, если у вас есть доступ к папке загрузки на другом компьютере (скажем, ws1), с целевого компьютера по UNC-пути (допустим, \\ws1\C$\LocalFolder) откройте консоль PowerShell с повышенными правами и выполните следующую команду.

    'PowerShellGet', 'PackageManagement' | % {
      $targetDir = "$env:ProgramFiles\WindowsPowerShell\Modules\$_"
      $null = New-Item -Type Directory -Force $targetDir
      $fromComputer = 'ws1'  # Specify the name of the other computer here.
      Copy-Item \\$fromComputer\C$\LocalFolder\$_\*\* $targetDir -Recurse -Force
      if (-not (Get-ChildItem $targetDir)) { Throw "Copying failed." }
    }
    

Get-Command

Возвращает базовые сведения о командлетах и о других элементах команд Windows PowerShell.


Get-Command [[-Name] <string[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [[-ArgumentList] <Object[]>] [-Module <string[]>] [-Syntax] [-TotalCount <int>] [<CommonParameters>]

Get-Command [-Noun <string[]>] [-Verb <string[]>] [[-ArgumentList] <Object[]>] [-Module <string[]>] [-Syntax] [-TotalCount <int>] [<CommonParameters>]

Командлет Get-Command возвращает базовые сведения о командлетах и других элементах команд Windows PowerShell в сеансе, таких как псевдонимы, функции, фильтры, скрипты и приложения.

Get-Command получает данные непосредственно из кода командлета, функции, скрипта или псевдонима в отличие от Get-Help, который получает информацию из файлов справки.

При вызове без параметров Get-Command получает все командлеты и функции в текущем сеансе. «Get-Command *» получает все элементы Windows PowerShell и все файлы, не относящиеся к Windows-PowerShell, в переменной среды Path ($env:path). Он группирует файлы в команде типа «Application».

Для поиска команд, добавленных в сеанс путем добавления оснастки Windows PowerShell или импорта модуля, можно использовать параметр Module Get-Command.

-ArgumentList <Object[]>

Получает данные о командлете или функции, используемых с указанными параметрами («аргументами»), такими как путь. Псевдоним ArgumentList — Args.

Для определения параметров, добавленных к командлету при его использовании с определенным провайдером, установите значение ArgumentList равным пути на диске поставщика, например «HKEY_LOCAL_MACHINE\Software» или «cert:\my».

Обязательно?

false

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

false

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

false

-CommandType <CommandTypes>

Получает только команды указанных типов. Используйте «CommandType» или псевдоним «Type». По умолчанию командлет Get-Command получает командлеты и функции.

Допустимые значения:

— Alias: все псевдонимы Windows PowerShell в текущем сеансе.

— All: команды всех типов. Эквивалентно «get-command *».

— Application: все файлы, отличные от файлов Windows PowerShell, которые присутствуют в путях, указанных в переменной среды Path ($env:path), в том числе файлы TXT, EXE и DLL.

— Cmdlet: командлеты в текущем сеансе. По умолчанию используется значение «Cmdlet».

— ExternalScript: все файлы PS1, которые присутствуют в путях, указанных в переменной среды Path ($env:path).

— Filter и Function: все функции Windows PowerShell.

— Script: блоки скриптов в текущем сеансе.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

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

false

-Module <string[]>

Получает команды, которые поставляются с определенными модулями или оснастками. Введите имена модулей или оснасток или введите объекты оснасток или модулей.

Можно обращаться к этому параметру по его имени (Module) или его псевдониму (PSSnapin). Выбранное имя параметра не влияет на результаты выполнения команды или ее выходные данные.

Этот параметр принимает строковые значения, но также можно предоставить объект PSModuleInfo или PSSnapinInfo, например объекты, возвращаемые Get-Module, Get-PSSnapin и Import-PSSession.

Обязательно?

false

Позиция?

named

Значение по умолчанию

нет

Принимать входные данные из конвейера?

true (ByPropertyName)

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

false

-Name <string[]>

Получает сведения только о командлетах или элементах команды с указанным именем. <Строка> представляет целое имя или часть имени командлета или элемента команды. Подстановочные знаки разрешены.

Для перечисления команд с одинаковыми именами в порядке выполнения введите имя команды без подстановочных знаков. Дополнительные сведения см. в разделе «Примечания».

Обязательно?

false

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByValue, ByPropertyName)

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

false

-Noun <string[]>

Получает командлеты или функции с именами, в которых содержится указанное существительное. <Строка> представляет одно или несколько существительных или шаблонов существительных, таких как «process» или «*item*». Подстановочные знаки разрешены.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

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

false

-Syntax

Получает только указанные данные об элементе команды.

* Для псевдонимов извлекается стандартное имя.

* Для командлетов извлекается синтаксис.

* Для функций и фильтров извлекается определение функции.

* Для скриптов и приложений (файлов) извлекаются путь и имя файла.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

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

false

-TotalCount <int>

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

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

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

false

-Verb <string[]>

Получает данные о командлетах и функциях с именами, в которых содержится указанный глагол. <Строка> представляет один или несколько глаголов или шаблонов глаголов, таких как «remove» или «*et». Подстановочные знаки разрешены.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

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

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

При вызове без параметров команда «Get-Command» возвращает сведения о командлетах и функциях Windows PowerShell. Для точного указания возвращаемых элементов воспользуйтесь параметрами.

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

Командлет Get-Command возвращает команды в алфавитном порядке. Когда в сеансе имеется более одной команды с одним и тем же именем, командлет Get-Command возвращает команды в порядке их выполнения. Первой возвращаемой командой является команда, выполняемая при вводе имени команды без указания ее полного имени. Дополнительные сведения см. в разделе about_Command_Precedence.


C:\PS>get-command | where-object {$_.definition -like "*first*"}

CommandType	 Name						Definition
-----------	 ----						---------
Cmdlet		Select-Object			 Select-Object [[-Property]

Description
-----------
Эта команда находит командлет или функцию на основании имени одного из параметров.  Эту команду можно использовать для определения командлета или функции, если удается вспомнить только имя одного из параметров.

В данном примере известно, что у одного командлета или функции есть параметр First, который позволяет получить первые "n" объектов в списке, но неизвестно имя командлета.

В команде используется командлет Get-Command, позволяющий получить объект CmdletInfo, который представляет все командлеты и функции в сеансе. У объекта CmdletInfo есть свойство Definition, в котором содержится синтаксис командлета или функции с указанием всех параметров. 

Оператор конвейера (|) используется для передачи объекта CmdletInfo командлету Where-Object, который анализирует определение (синтаксис) каждого объекта ($_) и выполняет поиск значения "first".

Результат выполнения команды показывает, что параметр First принадлежит командлету Select-Object.







PowerShell — Отличный блог про PowerShell

Чем может быть полезен PowerShell в Linux? Именно на этот вопрос я постарался ответить в статье. Тут приведены несколько примеров использования PowerShell для настройки Linux: работа с файлами, запуск программ Linux, редактирование. Это лишь идеи о том как можно использовать PowerShell Core на Linux. И статья написана все же для администраторов знакомых с PowerShell. Как […]

В Windows Server 2016 добавилась возможность подключения к хосту Hyper-V с другими учетными данными. Это можно использовать для подключения к другому хосту, который находится в другом домене или вообще к хостам, которые не добавлены в домен. Эта же возможность может быть использована на Windows 10/Windows Server 2019. Для этого необходимо: Запустить Hyper-V manager (диспетчер Hyper-V) […]

Кусочек забавного кода, которым можно удивить коллег. Он обращается к синтезатору речи и произносит фразу. Таким обзразом PowerShell можно заставить произносить предложения. Представляю панику бухгалтера, который услышит «Ваши действия караются увольнением» при попытке создать папку на рабочем столе 😉

Посмотрим каким образом можно выполнять различные запросы SQL, такие как Select, Insert, Update, используя PowerShell. Это может быть полезно для интеграции PowerShell с базами данных SQL. Речь пойдет про Access, MS SQL, а так же любые другие СУБД. Разбирать будем на примере моего скрипта из прошлого поста Чем открыть JSON из приложения проверка чеков? Например, […]

Данная статья написана для опытных пользователей, которые желают анализировать свои расходы самостоятельно, без использования каких-либо специальных программ, а только имея Excel и Access. В ней я показал каким образом можно открыть файл с чеками Json, полученный из мобильного приложения «проверка чеков», в Microsoft Access. Как получить данные из QR кода чека, для анализа Уже более […]

В данной статье рассмотрим возможности использования SSH между Windows и Linux компьютерами, а также использовании PowerShell через SSH в кроссплатформенной среде. Устанавливаем OpenSSH на Windows Начиная с Windows 10 1709 все очень просто. Нужно просто открыть приложение настроек. Далее выбираем приложения-> управление дополнительными компонентами-> сервер openssh и устанавливаем его. Или выполнить команду powershell

Get-WindowsCapability -Online | ? name -like *ssh* | Add-WindowsCapability -Online

Get-WindowsCapability -Online | ? name -like *ssh* | Add-WindowsCapability -Online

Эта […]

Вообще я редко вижу смысл в том чтобы отлавливать ошибки в скриптах, но недавно ко мне попалась задача, где необходимо было обработать ошибки в скрипте PowerShell. Дело в том что данный скрипт использовался как часть работы System Center Orchestrator. Для этого я использовал Try/Catch/Finaly . Но все по порядку. Немного про ошибки Ошибки можно условно разделить […]

Данная статья была создана в дополнение к видео уроку PowerShell за 20 минут. В ней еще раз перечислены те принципы и подходы к PowerShell, которые позволят начать использовать PowerShell в своей работе. Введение в PowerShell — это описание основных команд PowerShell, описание процесса поиска команд и использование справки. Кратко изложены принципы конвейера команд, фильтрации результата […]

Совсем недавно опубликовали мой доклад на сайте TechDays.ru — PowerShell за 20 минут. Это видео урок PowerShell для начинающих. Основы работы в PowerShell. Структура команд, поиск команд, использование справки, использование PowerShell ISE, конвейер. Это необходимый базовые знания для каждого Windows администратора. Не забываем оценивать видео урок PowerShell.

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

$search = Get-Droids | Where{$_ -notnear $jedi} If($search -eq $null){Move-Along}

$search = Get-Droids | Where{$_ -notnear $jedi}

If($search -eq $null){Move-Along}

Это конечно выполнить не выйдет. Но все равно забавно. p.s. сперто тут https://twitter.com/timbarrett/status/439477047413714944

Решение практических задач / Блог компании RUVDS.

com / Хабр

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

Оглавление:


Удаленное управление
Командлеты vs CIM/WMI
Управление процессами через CIM/WMI
Управление службами через CIM/WMI
Работа с реестром
Работа с журналами событий
Информация об ОС и оборудовании

Удаленное управление

PowerShell позволяет удаленно управлять одним или несколькими компьютерами. Для этого можно задействовать объекты .NET, CIM, WMI, поддерживающие соответствующую функцию командлеты, удаленный запуск команд или интерактивную удаленную сессию. Подключение осуществляется через PS remoting/WinRM по протоколу HTTP (порт 5985) или HTTPS (порт 5986, требуется сертификат SSL). По умолчанию соединение устанавливается по HTTP, но данные все равно шифруются с использованием симметричного ключа AES-256. Поддерживаются два способа аутентификации: NTLM и Kerberos (по умолчанию). Второй способ доступен, если удаленный компьютер входит в домен AD, а в Workgroup или если вместо доменного имени указан IP, применяется NTLM и требуется дополнительная настройка. На компьютере, к которому мы подключаемся, должен быть запущен сервис WinRM.

Если сервис не запущен, можно воспользоваться командлетом Enable-PSRemoting. Виртуальные машины RuVDS с Windows Server Core конфигурируются с настроенным из коробки удаленным доступом и никаких дополнительных действий не требуют. Для использования HTTP также придется добавить хост, к которому необходимо подключиться, в TrustedHost компьютера, с которого запускается команда. Если машина работает в глобальной сети, может потребоваться настройка брендмауэра. PS remoting/WinRM позволяет создавать удаленные сессии (New-PSSession, Get-PSSession, Enter-PSSession), выполнять команды и скрипты (Invoke-Command) на одном или нескольких компьютерах, а также использовать командлеты с параметром -ComputerName. Последнее справедливо и в отношении командлетов для работы с CIM/WMI. Более подробная информация доступна на сайте Microsoft.

Командлеты vs CIM/WMI

Хотя некоторые командлеты поддерживают параметр -ComputerName, возможности их применения для работы с хостами в сети ограничены. Создания сессий и удаленного выполнения команд PowerShell хватает не всегда, и тут нам помогут командлеты для работы с

WMI или CIM

(иногда можно обойтись и NET-объектами). Использование CIM предпочтительнее, поскольку дальнейшая разработка и поддержка WMI в Windows прекращена. В обоих случаях используется Common Information Model (CIM) и экземпляры соответствующих классов. При необходимости можно

просматривать структуру

результирующих объектов,

фильтровать

,

сортировать

и

выделять

их из коллекции, а также проводить

другие действия

над полученными результатами. При работе в интерактивном режиме текстовый вывод несложно

отформатировать

, а в скриптах обычно обращаются к свойствам и методам объектов. Хотя командлеты WMI и CIM похожи, в первом случае нетрудно получить ссылку на конкретный объект (экземпляр класса) и непосредственно вызвать один из его методов без использования Invoke-WmiMethod. Результирующие CIM-объекты методов класса не содержат, поэтому вызывать командлет Invoke-CimMethod для управления придется обязательно.

Управление процессами через CIM/WMI

В предыдущих статьях мы довольно часто использовали Get-Process, который возвращает соответствующие запущенным в системе процессам объекты типа System.Diagnostics.Process. С помощью этого командлета можно получать сведения только о локальном компьютере, а чтобы работать с удаленной машиной, нам снова понадобятся командлеты CIM/WMI и класс Win32_Process. Приведем примеры используемых для работы с ним команд.

Get-WmiObject Win32_Process

или

Get-CimInstance Win32_Process

Предыдущие примеры иллюстрируют получение информации о запущенных на локальной машине процессах, для работы с удаленными компьютерами используется параметр -ComputerName:

Get-WmiObject Win32_Process -ComputerName IP_ADDRESS
Get-WmiObject Win32_Process -ComputerName NAME

или

Get-CimInstance Win32_Process -ComputerName IP_ADDRESS
Get-CimInstance Win32_Process -ComputerName NAME

Управление службами через CIM/WMI

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

командлетов CIM и WMI

. Как и для процессов, для служб в объектной модели CIM имеется специальный класс Win32_Service.

Get-WmiObject Win32_Service

или

Get-CimInstance Win32_service

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

Get-WmiObject Win32_Service -ComputerName IP_ADDRESS
Get-WmiObject Win32_Service -ComputerName NAME

или

Get-CimInstance Win32_service -ComputerName IP_ADDRESS
Get-CimInstance Win32_service -ComputerName NAME

Для уточняющих запросов используется параметр -Filter. Таким способом несложно выяснить, стартует служба автоматически или должна быть запущена вручную:

Get-Wmiobject Win32_service -Filter "StartMode <>'disabled'" | sort StartMode | format-table -GroupBy StartMode -Property Name,State,PathName -AutoSize

Аналогичным образом можно сгруппировать службы по учетной записи:

Get-Wmiobject Win32_service | group startname

Следующая команда возвращает все сервисы, запущенные от имени администратора:

Get-Wmiobject Win32_service -Filter "startname like '%administrator%'" | Select Name,startmode,state,startname,systemname

Для командлетов CIM фильтры работают аналогично:

Get-CimInstance Win32_service -filter "startmode='auto' AND state<>'Running'" | Select Name,State,Systemname

Для реальной работы важен не столько текстовый вывод командлетов, сколько сами бинарные объекты. С их помощью можно запускать и останавливать соответствующие службы, менять режим их запуска или устанавливать свойства. В случае с WMI методы объектов вызываются напрямую или через Invoke-WmiMethod. Для объектов CIM доступно только использование Invoke-CimMethod.

Работа с реестром

Системный реестр Windows — это имеющая древовидную структуру иерархическая база данных, содержащая информацию об аппаратной и программной конфигурации компьютера. Каждый ее узел — это содержащий другие узлы (записи базы данных) раздел либо имеющий некое значение ключ. Раздел может содержать вложенные подразделы: по структуре реестр напоминает файловую систему и для работы с ним в PowerShell есть виртуальные «диски». Просмотреть их можно с помощью командлета Get-PSDrive, а обратиться к соответствующему разделу — с помощью Set-Location (псевдоним cd).

«Диски» реестра содержат «каталоги» (разделы), подкаталоги «подразделы» и «файлы» (параметры). Для просмотра подразделов используется командлет Get-ChildItem (псевдоним dir), а для просмотра параметров: Get-ItemProperty. Разделы реестра представлены экземплярами .NET-класса Microsoft.Win32.RegistryKey, а параметры — System.Management.Automation.PSCustomObject. Чтобы получить доступ к системному реестру удаленной машины, придется напрямую использовать объекты .NET, WMI или CIM.

Работа с журналами событий

Журналы событий (Event logs) в Windows — важный для администратора инструмент, с помощью которого можно отслеживать состояние системы и приложений, а также оперативно анализировать возникающие проблемы. Обычно для работы нужны журнал безопасности (Security log), системный журнал (System log) и журнал приложений (Application log). В зависимости от установленных компонентов и настроенных ролей, на сервере могут быть и другие: журнал службы каталога (Directory service log), журнал службы каталога (Directory service log) или, например, журнал службы репликации файлов (File Replication Service log). Для их просмотра на локальной машине используется консоль управления MMC, а в PowerShell командлет Get-EventLog. Для работы с удаленными хостами можно воспользоваться соответствующими определенным журналам объектами CIM и WMI (экземплярами класса Win32_NTEventlogFile).

$Logs = Get-WmiObject Win32_NTEventlogFile 
$Logs | Format-List

или

$Logs = Get-CimInstance Win32_NTEventlogFile 
$Logs | Format-List

Пример иллюстрирует работу с локальными журналами, для подключения к удаленному компьютеру нужен параметр -ComputerName:

$Logs = Get-WmiObject Win32_NTEventlogFile -ComputerName NAME
$Logs | Format-List

или

$Logs = Get-CimInstance Win32_NTEventlogFile -ComputerName NAME
$Logs | Format-List

Информация об ОС и оборудовании

С помощью командлетов CIM и WMI можно получать разнообразную информацию от работающих в сети компьютеров, а также управлять ими. Для этих целей применяются командлеты CIM/WMI и соответствующие классы. Рассмотрим их использование на практических примерах.

Класс Win32_OperatingSystem решает множество разнообразных задач. С помощью его метода Win32Shutdown завершается сеанс пользователя:

(Get-WMIObject Win32_OperatingSystem).Reboot()

Для получения информации о BIOS потребуется класс Win32_BIOS

Get-WmiObject Win32_BIOS | Select-Object -Property * -ExcludeProperty __*

или

Get-CimInstance Win32_BIOS | Select-Object -Property * -ExcludeProperty __*

Вывод свойств операционной системы:

Get-WmiObject Win32_OperatingSystem | Select-Object –Property * -ExcludeProperty __*

или

Get-CimInstance Win32_OperatingSystem | Select-Object –Property * -ExcludeProperty __*

Класс Win32_QuickFixEngineering предназначен для получения списка установленных обновлений:

Get-WmiObject Win32_QuickFixEngineering

или

Get-CimInstance Win32_QuickFixEngineering

Завершая цикл публикаций, мы хотим напомнить, что PowerShell — нечто большее, чем просто командная оболочка. Скорее она напоминает гибрид Bash и SSH/SSHD с возможностью использования объектов .NET и объектной модели CIM. Это позволяет решать сложные задачи управления распределенной ИТ-средой, хотя и требует иногда громоздких синтаксических конструкций. Без знания PowerShell сегодня не обойдется ни один грамотный системный администратор Windows.



Часть 1: Основные возможности Windows PowerShell
Часть 2: Введение в язык программирования Windows PowerShell
Часть 3: Передача параметров в скрипты и функции, создание командлетов
Часть 4: Работа с объектами, собственные классы
Часть 5: Доступ к внешним объектам

Get-Item

Получает элемент, находящийся в заданном местоположении.

Синтаксис
Get-Item [-LiteralPath] <string[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-UseTransaction] [<CommonParameters>]

Get-Item [-Path] <string[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Include <string[]>] [-UseTransaction] [<CommonParameters>]

Описание

Командлет Get-Item возвращает элемент из заданного местоположения. Извлечение содержимого заданного элемента производится только при запросе всего содержимого с помощью подстановочного знака (*).

Командлет Get-Item используется поставщиками Windows PowerShell для перемещения по хранилищам данных разных типов.

Параметры

-Credential <PSCredential>

Задает учетную запись пользователя, который располагает разрешением для выполнения этого действия. По умолчанию используется значение «Текущий пользователь».

Введите имя пользователя, например «User01» или «Domain01\User01», или введите объект PSCredential, например объект, создаваемый командлетом Get-Credential. При вводе имени пользователя система запросит пароль.

Этот параметр не поддерживается ни одним из установленных с Windows PowerShell поставщиком.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

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

false

-Exclude <string[]>

Исключает указанные элементы. Значение этого параметра определяет значение параметра Path. Введите элемент пути или шаблон, например «*.txt». Подстановочные знаки разрешены.

Параметр Exclude действует только в том случае, если команда включает содержимое элемента, например «C:\Windows\*», где подстановочный знак определяет содержимое каталога «C:\Windows».

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

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

false

-Filter <string>

Задает фильтр с использованием формата или языка поставщика. Значение этого параметра определяет значение параметра Path. Синтаксис фильтра, в том числе использование подстановочных знаков, зависит от поставщика. Фильтры эффективнее других параметров, потому что поставщик применяет их при извлечении объектов (вместо использования Windows PowerShell для фильтрации извлеченных объектов).

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

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

false

-Force

Позволяет командлету получать элементы, которые недоступны другими способами, например скрытые элементы. Реализация варьируется от поставщика к поставщику. Дополнительные сведения см. в разделе About_Providers. Даже при использовании параметра Force командлет не может переопределить ограничения безопасности.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

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

false

-Include <string[]>

Извлекает только указанные элементы. Значение этого параметра определяет значение параметра Path. Введите элемент пути или шаблон, например «*.txt». Подстановочные знаки разрешены.

Параметр Include действует только в том случае, если команда включает содержимое элемента, например «C:\Windows\*», где подстановочный знак определяет содержимое каталога «C:\Windows».

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

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

false

-LiteralPath <string[]>

Задает путь к элементу. В отличие от значения параметра Path, значение параметра LiteralPath используется точно в том виде, в котором оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь включает escape-символы, его нужно заключить в одиночные кавычки. Одиночные кавычки указывают оболочке Windows PowerShell, что никакие символы не следует интерпретировать как escape-символы.

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByPropertyName)

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

false

-Path <string[]>

Задает путь к элементу. Для получения элемента, находящегося в указанном местоположении, используется командлет Get-Item. Подстановочные знаки разрешены. Этот параметр обязателен, но его имя («Path») можно не указывать.

Для указания текущего местоположения используйте точку (.). Для указания всех элементов в текущем местоположении используйте подстановочный знак (*).

Обязательно?

true

Позиция?

1

Значение по умолчанию

Принимать входные данные из конвейера?

true (ByValue, ByPropertyName)

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

false

-UseTransaction

Включает команду в активную транзакцию. Этот параметр допустим, только если транзакция выполняется. Дополнительные сведения см. в разделе about_Transactions.

Обязательно?

false

Позиция?

named

Значение по умолчанию

Принимать входные данные из конвейера?

false

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

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

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

Входные данные

System.String

Строку, содержащую путь, можно передать командлету Get-Item по конвейеру.

Выходные данные

Object

Командлет Get-Item возвращает получаемые им объекты. Тип определяется типом объектов пути.

Примечания

Командлет Get-Item также можно вызывать с помощью встроенного псевдонима «gi». Дополнительные сведения см. в разделе About_Aliases.

Командлет Get-Item не имеет параметра Recurse, так как он извлекает только элемент, а не его содержимое. Для рекурсивного извлечения содержимого элемента используется командлет Get-ChildItem.

При работе с реестром для извлечения разделов реестра используется командлет Get-Item, а для извлечения параметров и значений реестра используется командлет Get-ItemProperty. Параметры реестра являются свойствами раздела реестра.

Командлет Get-Item предназначен для работы с данными, предоставляемыми любым поставщиком. Чтобы получить список поставщиков, доступных в текущем сеансе, введите команду «Get-PsProvider». Дополнительные сведения см. в разделе About_Providers.

Пример 1
C:\PS>get-item .

Directory: C:\

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         7/26/2006  10:01 AM            ps-test

Описание
-----------
Эта команда извлекает текущий каталог.  Точка (.) обозначает элемент в текущем местоположении (но не его содержимое).







Пример 2
C:\PS>get-item *

Directory: C:\ps-test

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         7/26/2006   9:29 AM            Logs
d----         7/26/2006   9:26 AM            Recs
-a---         7/26/2006   9:28 AM         80 date.csv
-a---         7/26/2006  10:01 AM         30 filenoext
-a---         7/26/2006   9:30 AM      11472 process.doc
-a---         7/14/2006  10:47 AM         30 test.txt

Описание
-----------
Эта команда извлекает все элементы из текущего каталога. Подстановочный знак (*) обозначает все содержимое текущего элемента.







Пример 3
C:\PS>get-item C:\

Описание
-----------
Эта команда возвращает текущий каталог диска C:. Извлекаемый объект представляет только каталог, но не его содержимое.







Пример 4
C:\PS>get-item C:\*

Описание
-----------
Эта команда возвращает элементы диска C:. Подстановочный знак (*) обозначает не только сам контейнер, но и все его элементы.

Для отображения всего содержимого в оболочке Windows PowerShell используется одиночная звездочка (*) вместо традиционного сочетания "*.*". Шаблон интерпретируется посимвольно, поэтому при использовании сочетания "*.*" не будут извлекаться каталоги и файлы с именами, не содержащими точки.







Пример 5
C:\PS>(get-item C:\Windows).LastAccessTime

Описание
-----------
Эта команда извлекает свойство LastAccessTime каталога C:\Windows. LastAccessTime является одним из свойств каталогов файловой системы. Чтобы отобразить полный список свойств каталога, введите команду "(Get-Item <имя_ папки>) | Get-Member".







Пример 6
C:\PS>get-item hklm:\software\microsoft\powershell\1\shellids\microsoft.powershell\*

Описание
-----------
Эта команда отображает содержимое раздела реестра Microsoft.PowerShell. При использовании поставщика Registry Windows PowerShell для извлечения разделов и вложенных разделов реестра можно использовать командлет Get-Item, однако для извлечения параметров и значений реестра нужно использовать командлет Get-ItemProperty.







Пример 7
C:\PS>get-item c:\Windows\* -include *.* -exclude w*

Описание
-----------
Эта команда извлекает элементы каталога Windows, имена которых включают точку (.) и не начинаются с буквы "w". Эта команда может использоваться только в том случае, когда для указания содержимого элемента в путь включается подстановочный знак (*).







См. также

Get-Help или создаём встроенную справку для собственных команд PowerShell

Любой хорошо написанный скрипт должен содержать справочную информацию о себе. Справочная информация должна содержать как минимум:

  • Целевое назначение скрипта/команды.
  • Описание параметров и правила их использования.
  • Один или несколько примеров использования скрипта/команды.

Я видел множество вариантов оформления справки. Самые популярные это:

  • Комментарий перед параметром.
  • Выделенный блок комментариев, где приводится какая-то справка по использованию в произвольном исполнении.
  • Отсутствие какой-либо справки вообще.

Я не буду останавливаться на том, как это всё выглядит, а лишь расскажу, как должна быть оформлена справка к команде. Windows PowerShell предлагает нам 2 пути.

Справка, оформленная специальным образом в виде встроенного блока комментариев. Специальным образом — чтобы можно было её прочитать не только из тела самого скрипта, но и через стандартный командлет Get-Help. Если мы посмотрим на вывод командлета Get-Help, мы увидим, что вся справка разбита на категории/секции — описание, детальное описание, параметры, примеры и т.д. То же самое разделение используется и при оформлении справки в коде. Вот как выглядит общий шаблон справки:


function Remove-File {

[CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [string]$Path,
        [switch]$Force
    )
    
}

Примечание: блок встроенной справки должен располагаться либо в самом начале функции (на следующей строке после первой открывающейся фигурной скобки) или в самом конце (перед последней закрывающейся фигурной скобкой). Я предпочитаю её размещать в начале.

Уже на данном этапе мы можем вставить код в консоль и выполнить ‘Get-Help Remove-File’ и получите знакомую справку. При этом, все дополнительные параметры (-Full, –Detailed, –Examples, etc.) так же доступны. Точка и слово на ней означает категорию или тэг. На следующей строке размещается текст, связанный с конкретным тэгом. Некоторые тэги могут быть использованы несколько раз — .Example и .Parameter. .Example применяется столько раз, сколько у вас используется примеров. Если 5 примеров, тэг .Example должен быть использован 5 раз. То же самое касается и .Parameter — на каждый параметр определённый в скрипте должен быть использован тэг Parameter. После ключевого слова .Parameter должно следовать имя параметра на этой же строке. Полный список возможных тэгов приводится в следующей таблице:

Название тэга Описание тэга
.Synopsis Краткое описание функции.
.Description Детальное описание функции.
.Parameter <ParameterName> Описание к каждому параметру.
.Example Пример использования функции и описание примера (т.е. что произойдёт, если выполнить конкретный пример).
.Inputs Тип данных, которые принимаются функцией. Например, [System.String]. Если их несколько, можете указать несколько типов на одной или нескольких строках.
.Outputs Тип возвращаемых данных. Например, [IO.FileInfo] Если функция может возвращать несколько разных типов, их можно указать на одной или нескольких строках.
.Notes Здесь можно указать какие-то заметки. Например, я использую .Notes для указания автора кода и его адреса.
.Link Можно указать какие-то связанные ссылки. Например, на связанные команды.
.Component Можно указать продукт или компонент, для которого предназначена конкретная функция. Скажем, это может быть PKI, Exchange, SQL, SharePoint и т.д.
.Role Указывает роль пользователя, который выполняет код. В принципе, можно указать необходимые права и/или привилегии.
.Functionality Тоже можно что-то написать. Но я не вижу особой разницы с Description.
.ForwardHelpTargetName Указывает команду, на которую надо форвардить пользователя при вызове справки. Т.е. если вы считаете, что в другом командлете/функции справка описана лучше, чем у вас (и по этой же теме), можете сослать пользователя туда. На практике это применяется, когда вы делаете proxy-функции. Т.е. реализуете функционал родного командлета и немного изменяете его под конкретные нужды.
.ForwardHelpCategory Если указали предыдущий тег, надо указать конкретный раздел справки командлета, на который ссылаетесь.
.RemoteHelpRunspace Можно указать имя переменной, которая хранит данные об удалённой сессии (pssession) для поиска хелпа. Маловероятно, что он вам понадобится
.ExternalHelp Данный тэг используется для ссылки на внешний файл справки в формате XML. Об этом будет написано ниже.

По собственному опыту могу сказать, что все их заполнять не обязательно (хотя и желательно указать максимальное количество необходимой информации). Как минимум, справка должна содержать следующие секции справки: Synopsis, Description, Parameter, Example. Остальное по желанию.

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

Справку к командам в отдельном файле можно создать при помощи CmdLet Help Editor.

Замтека: этот редактор достаточно бажный и нередко вылетает с разными ошибками. Поэтому периодически сохраняйте свои изменённые данные.

Если для одиночных функций удобней всего пользоваться справкой, встроенной в код, то для больших проектов (например, у вас модуль с кучей функций) есть смысл держать всю справку в отдельном файле. Например, вы можете распотрошить мой PowerShell PKI Module и посмотреть, как оно выглядит. В каждой функции я делаю ссылку на PKI.Help.xml, который уже хранит справку для всех функций, доступных в модуле. Т.е. если вы справку держите в отдельном XML, то в коде функции вам надо сделать ссылку на этот XML:


function Remove-File {

[CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [string]$Path,
        [switch]$Force
    )
    
}

Заметка: если у кого-то из вас осталась самая первая версия (0.8) PowerShell PKI модуля, можете увидеть, что там используется ещё comment-based help, а в более новых уже XML.

Файл XML должен храниться в той же папке, что и файл с функциями. Если хотите держать их совсем отдельно, надо указывать полный путь до XML.


Как открыть PowerShell, все методы

Обновлено 18.08.2021

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

Методы открытия оснастки PowerShell

Powershell очень хорошо развивается и с выходом Windows 10 получил уже 5 версию, но у нас тема другая. Так как открыть powershell? Все просто если в Windows XP, то никак. так он доставляется отдельно, во всех последующих релизах он идет как встроенный компонент. Самый универсальный способ открытия powershell это нажать

Win+R и ввести powershell

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

Как запустить windows powershell от имени администратора в Windows 8.1 и Windows 7

Открыть windows powershell можно через пуск. В Windows 8.1, Windows 2012 R2 переходите в пункт Служебные — Windows и правым кликом выбираете запустить от имени администратора.

В Windows 7 и Windows 2008 R2 это выглядит вот так Пуск > Стандартные > Windows PowerShell

Так же можно создать ярлык в пункте задачи и щелкнуть по нему правым кликом и выбрать соответствующий пункт

было бы удобно, чтобы PowerShell всегда открывался от имени администратора, давайте это реализуем. Делается это во всех версиях Windows одинаково. Открываем панель управления

Далее пункт Администрирование > Windows PowerShell (x86)

Щелкаем по нему правым кликом мыши и выбираем пункт свойства. Сразу можете посмотреть путь до файла, где он лежит в системе.

Нажимаем кнопку «Дополнительно». У вас откроется дополнительные свойства. где вам нужно выставить галку запуск от имени администратора.

Все очень просто. Уверен, что у вас теперь не встанет вопроса как вам открыть windows powershell. Еще полезным бывает поменять шрифт в окне powershell.

Как открыть PowerShell через контекстное меню кнопки «Пуск» в Windows 10

Компания Microsoft, все больше делает акцент с командной строки в сторону своего сильного языка (PowerShell), и это логично, так как его возможности по управлению операционными системами семейства Windows, почти безграничны, а то и больше, чем в графическом интерфейсе. Начиная с версии Windows 10 1709, в контекстном меню, PowerShell, заменил всем привычный cmd. Щелкаете правым кликом по кнопке пуск в Windows 10 и из контекстного меню, выбираем соответствующий пункт:

  1. Windows PowerShell
  2. Windows PowerShell (администратор) — это как раз и есть режим с максимальными правами в Windows 10.

Запуск Windows PowerShell с помощью поиска в Windows 10

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

Запуск Windows PowerShell с помощью меню Пуск в Windows 10

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

Если кликнуть правым кликом, то вы сможете запускать оболочку повершела от имени и с правами администратора.

Дополнительные и универсальные методы запуска оболочки

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

C:\Users\имя пользователя\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell

В итоге у вас откроется папка с ярлыками, которые присутствуют в меню «Пуск», можете их запускать.

Еще можно запустить оригинальный, исполняемый файл, который лежит по пути:

C:\Windows\System32\WindowsPowerShell\v1.0

И кликнув по нему правым кликом, вы можете его загружать от имени администратора, с максимальными правами.

Так же вы можете запустить виндоус PowerShell и из окна командной строки, для этого просто введите в нем волшебное слово и нажмите Enter.

Ну и еще напомню метод, запуска новой задачи из оснастки «Диспетчер задач». Откройте «Диспетчер задач», выберите пункт меню «Файл — Запустить новую задачу»

В появившемся окне введите PowerShell.

Ну и последний известный мне метод, это запуск PowerShell, через проводник Windows 10, для этого откройте проводник, выберите пункт меню «Файл — запустить Windows PowerShell», тут будут оба режима.

Запуск PowerShell от имени другого пользователя

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

Чтобы запустить PowerShell от имени другого пользователя вам необходимо зажать кнопку SHIFT, после чего щелкнуть правым кликом мыши по значку PowerShell, из контекстного меню выбрать пункт «Запуск от имени другого пользователя»

Вводите логин и пароль от нужной вам учетной записи. В результате чего оболочка будет работать в контексте другого пользователя.

так же вы можете запускать новое окно PowerShell из текущего окна пользователя, но с уже новыми правами, для этого введите команду:

start powershell -credential «»

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

Что такое PowerShell ISE

Наверняка вы обратили внимание, что везде присутствует ярлык PowerShell ISE, и вы хотели бы знать, что это такое. Если в двух словах, то это особая оболочка, в которой вы можете писать сценарии и скрипты на языке PowerShell, используя все то разнообразие командлетов, что предлагает вам компания Microsoft.

Запуск PowerShell через комбинацию клавиш

Одним из удобных методов запуска оболочки PowerShell, при очень частом использовании, является назначение для нее горячего сочетания клавиш, при нажатии которых вызывается оболочка. Делается, это очень просто. Откройте окно свойств PowerShell, на вкладке «Ярлык» найдите пункт «Быстрый вызов«, по умолчанию он имеет статус нет.

Выберите его и нажмите клавишу Shift или Ctrl, или CTRL+SHIFT, в результате чего у вас подставится конструкция для будущей комбинации и так же нажмите любую клавишу из буквенного диапазона, в моем примере получилось CTRL + SHFT + C. Именно такой комбинацией я буду вызывать свою оболочку PowerShell. Сохраняем настройки. Так же отмечу, что вы легко можете ее отменить или поменять на другую.

Пробую ввести комбинацию быстрого вызова CTRL + SHFT + C, как вижу все прекрасно работает.

Запуск оболочки из ISE

До недавнего времени, я обычно ISE открывал из обычной оболочки PowerShell, а не наоборот, но какого же было мое удивление, что в меня «Файл» я обнаружил пункт «Запустить PowerShell.exe» и есть даже сочетание клавиш Ctrl+Shift+P.

Свойства powershell

powershell шрифт меняется очень просто перейдите в свойствах на вкладку Шрифт, где вы можете задать размер от 5 до 72.

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

Тут настройки шрифта немного другие, вместе с их изменением, меняется и размер консоли.

На вкладке Цвета, можете задать цвет шрифта в powershell да и самого окна. Сделав его например черным, как командная строка.

Размер буфера powershell

Так же советую, если вы активный консольщик выставить размер буфера не в 50 команд, а хотя бы в 100.

Спасибо за внимание. Вот такие вот методы, открытия консоли Power Shell в Windows. Материал сайта pyatilistnik.org

Установка PowerShellGet — PowerShell | Документы Microsoft

  • 3 минуты на чтение

В этой статье

PowerShellGet — это встроенный модуль в следующих выпусках

Загрузите последнюю версию из галереи PowerShell

Перед обновлением PowerShellGet необходимо всегда устанавливать последнюю версию поставщика NuGet .Из сеанс PowerShell с повышенными привилегиями, выполните следующую команду.

  Install-PackageProvider -Name NuGet -Force
  

Важно

С апреля 2020 года галерея PowerShell больше не поддерживает безопасность транспортного уровня (TLS). версии 1.0 и 1.1. Если вы не используете TLS 1.2 или выше, вы получите сообщение об ошибке, когда пытается получить доступ к галерее PowerShell. Используйте следующую команду, чтобы убедиться, что вы используете TLS 1,2:

  [Net.ServicePointManager] :: SecurityProtocol = [Net.ServicePointManager] :: SecurityProtocol -bor [Net.SecurityProtocolType] :: Tls12
  

Для получения дополнительной информации см. объявление в Блог PowerShell.

Для систем с PowerShell 5.0 (или новее) вы можете установить последнюю версию PowerShellGet

Для установки PowerShellGet в Windows 10, Windows Server 2016, в любой системе с WMF 5.0 или 5.1 установленной или любой другой системы с PowerShell 6, выполните следующие команды из PowerShell с повышенными привилегиями сеанс.

  Install-Module -Name PowerShellGet -Force
  

Используйте Update-Module для получения более новых версий.

  Обновление-модуль-имя PowerShellGet
Выход
  

Для компьютеров с PowerShell 3.0 или PowerShell 4.0

Эти инструкции применимы к компьютерам, на которых установлена ​​программа PackageManagement Preview или нет. у вас установлена ​​любая версия PowerShellGet .

Командлет Save-Module используется в обоих наборах инструкций. Save-Module загружает и сохраняет модуль и любые зависимости из зарегистрированного репозитория.Самая последняя версия модуля сохраняется по указанному пути на локальном компьютере, но не установлен. Чтобы установить модули в PowerShell 3.0 или 4.0 скопируйте сохраненные папки модуля в $ env: ProgramFiles \ WindowsPowerShell \ Modules .

Для получения дополнительной информации см. Сохранить-модуль.

Примечание

PowerShell 3.0 и PowerShell 4.0 поддерживали только одну версию модуля. Запуск в PowerShell 5.0 модули устанавливаются в <имя модуля> \ <версия> .Это позволяет установить несколько версий бок о бок. После загрузки модуля с помощью Save-Module необходимо скопировать файлы из <имя модуля> \ <версия> в папку <имя модуля> на конечном компьютере, как показано в приведенных ниже инструкциях.

Подготовительный этап на компьютерах с PowerShell 3.0

Инструкции в разделах ниже устанавливают модули в каталог $ env: ProgramFiles \ WindowsPowerShell \ Modules .В PowerShell 3.0 этого каталога нет в $ env: PSModulePath по умолчанию, поэтому вам нужно добавить его, чтобы модули загружались автоматически.

Откройте сеанс PowerShell с повышенными привилегиями и выполните следующую команду (которая вступит в силу в будущем. сеансов):

  [Среда] :: SetEnvironmentVariable (
  'PSModulePath',
  ((([Environment] :: GetEnvironmentVariable ('PSModulePath', 'Machine') -split ';') + "$ env: ProgramFiles \ WindowsPowerShell \ Modules") -join ';'),
  'Машина'
)
  
Компьютеры с установленной программой PackageManagement Preview

Примечание

PackageManagement Preview был загружаемым компонентом, который сделал PowerShellGet доступным для PowerShell версий 3 и 4, но он больше не доступен.Чтобы проверить, был ли он установлен на данном компьютер, запустите Get-Module -ListAvailable PowerShellGet .

  1. В сеансе PowerShell используйте Save-Module , чтобы загрузить текущую версию PowerShell Получить . Загружаются две папки: PowerShellGet и PackageManagement . Каждый папка содержит подпапку с номером версии.

      Save-Module -Name PowerShellGet -Path C: \ LocalFolder -Repository PSGallery
      
  2. Убедитесь, что модули PowerShellGet и PackageManagement не загружены ни в какие другие процессы.

  3. Снова откройте консоль PowerShell с повышенными разрешениями и выполните следующую команду.

      «PowerShellGet», «Управление пакетами» | % {
      $ targetDir = "$ env: ProgramFiles \ WindowsPowerShell \ Modules \ $ _"
      Удалить элемент $ targetDir \ * -Recurse -Force
      Копировать элемент C: \ LocalFolder \ $ _ \ * \ * $ targetDir \ -Recurse -Force
    }
      
Компьютеры без PowerShellGet

Для компьютеров без установленной версии PowerShell Get (тест с Get-Module -ListAvailable PowerShellGet ), компьютер с установленным PowerShellGet необходим для скачать модули.

  1. С компьютера, на котором установлен PowerShellGet , используйте Save-Module , чтобы загрузить текущий версия PowerShellGet . Скачиваются две папки: PowerShellGet и Управление пакетами . Каждая папка содержит подпапку с номером версии.

      Save-Module -Name PowerShellGet -Path C: \ LocalFolder -Repository PSGallery
      
  2. Скопируйте соответствующую подпапку в PowerShellGet и PackageManagement папки на компьютер, на котором не установлен PowerShellGet , в папки $ env: ProgramFiles \ WindowsPowerShell \ Modules \ PowerShellGet \ и $ env: ProgramFiles \ WindowsPowerShell \ Modules \ PackageManagement \ соответственно, для чего требуется повышенная сессия.

  3. Например, если вы можете получить доступ к папке загрузки на другом компьютере, скажем ws1 , из целевой компьютер через UNC-путь, скажем \\ ws1 \ C $ \ LocalFolder , откройте консоль PowerShell с помощью повышенные разрешения и выполните следующую команду:

      «PowerShellGet», «Управление пакетами» | % {
      $ targetDir = "$ env: ProgramFiles \ WindowsPowerShell \ Modules \ $ _"
      $ null = New-Item -Type Directory -Force $ targetDir
      $ fromComputer = 'ws1' # Здесь укажите имя другого компьютера.Copy-Item \\ $ fromComputer \ C $ \ LocalFolder \ $ _ \ * \ * $ targetDir -Recurse -Force
      if (-not (Get-ChildItem $ targetDir)) {Вывести "Ошибка копирования." }
    }
      

Галерея PowerShell | PowerShellGet 2.2.5

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