Разное

Powershell параметры запуска скрипта: о скриптах — PowerShell | Microsoft Docs

21.02.2002

Содержание

о скриптах — PowerShell | Microsoft Docs

  • Статья
  • Чтение занимает 9 мин
  • Участники: 2

Были ли сведения на этой странице полезными?

Да Нет

Хотите оставить дополнительный отзыв?

Отзывы будут отправляться в корпорацию Майкрософт.

Нажав кнопку «Отправить», вы разрешаете использовать свой отзыв для улучшения продуктов и служб Майкрософт. Политика конфиденциальности.

Отправить

В этой статье

Краткое описание

Описание запуска и записи скриптов в PowerShell.

Подробное описание

Сценарий — это обычный текстовый файл, содержащий одну или несколько команд PowerShell. Сценарии PowerShell имеют .ps1 расширение файла.

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

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

Сценарии имеют дополнительные функции, такие как #Requires Специальный комментарий, использование параметров, поддержка разделов данных и цифровая подпись для обеспечения безопасности. Также можно написать разделы справки для скриптов и для любых функций в скрипте.

Выполнение сценария

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

Политика Restricted выполнения по умолчанию предотвращает выполнение всех скриптов, включая скрипты, которые вы пишете на локальном компьютере. Подробнее см. в разделе about_Execution_Policies.

Политика выполнения сохраняется в реестре, поэтому ее необходимо изменить только один раз на каждом компьютере.

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

В командной строке введите:

Set-ExecutionPolicy AllSigned

или

Set-ExecutionPolicy RemoteSigned

Изменение вступает в силу немедленно.

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

Например, чтобы запустить сценарий Get-ServiceLog.ps1 в каталоге C:\Scripts, введите:

C:\Scripts\Get-ServiceLog.ps1

Чтобы выполнить сценарий в текущем каталоге, введите путь к текущему каталогу или используйте точку для представления текущего каталога, после чего следует обратная косая черта ( .\ ).

Например, чтобы запустить сценарий ServicesLog.ps1 в локальном каталоге, введите:

.\Get-ServiceLog.ps1

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

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

.\Get-ServiceLog.ps1 -ServiceName WinRM

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

Запуск с помощью PowerShell

Начиная с PowerShell 3,0 можно запускать сценарии из проводника.

Чтобы использовать функцию «Запуск с помощью PowerShell», сделайте следующее:

Запустите проводник, щелкните правой кнопкой мыши имя файла скрипта и выберите команду «запустить с помощью PowerShell».

Функция «запустить с помощью PowerShell» предназначена для выполнения скриптов, которые не имеют обязательных параметров и не возвращают выходные данные в командную строку.

Дополнительные сведения см. в разделе about_Run_With_PowerShell.

Выполнение сценариев на других компьютерах

Чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр Invoke-Command FilePath командлета.

Введите путь и имя файла скрипта в качестве значения параметра

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

Следующая команда запускает Get-ServiceLog.ps1 сценарий на удаленных компьютерах с именем Server01 и Server02.

Invoke-Command -ComputerName Server01,Server02 -FilePath `
  C:\Scripts\Get-ServiceLog.ps1

Получить справку по сценариям

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

Path переменной среды, путь можно опустить.

Например, чтобы получить справку по сценарию ServicesLog.ps1, введите:

get-help C:\admin\scripts\ServicesLog.ps1

Написание сценария

Скрипт может содержать любые допустимые команды PowerShell, в том числе отдельные команды, команды, использующие конвейер, функции и управляющие структуры, такие как операторы If и циклы for.

Чтобы написать сценарий, откройте новый файл в текстовом редакторе, введите команды и сохраните их в файле с допустимым именем файла с .ps1 расширением.

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

$date = (get-date).dayofyear
get-service | out-file "$date.log"

Чтобы создать этот скрипт, откройте текстовый редактор или редактор скриптов, введите следующие команды, а затем сохраните их в файле с именем ServiceLog.ps1 .

Параметры в скриптах

Чтобы определить параметры в скрипте, используйте инструкцию param. ParamИнструкция должна быть первой инструкцией в скрипте, за исключением комментариев и любых #Require инструкций.

Параметры сценария работают как параметры функции. Значения параметров доступны для всех команд в скрипте. Все функции параметров функций, включая атрибут Parameter и его именованные аргументы, также допустимы в скриптах.

При выполнении скрипта пользователи заменяют параметры после имени скрипта.

В следующем примере показан Test-Remote.ps1 скрипт с параметром ComputerName . Обе функции сценария могут обращаться к значению параметра ComputerName .

param ($ComputerName = $(throw "ComputerName parameter is required."))

function CanPing {
   $error.clear()
   $tmp = test-connection $computername -erroraction SilentlyContinue

   if (!$?)
       {write-host "Ping failed: $ComputerName."; return $false}
   else
       {write-host "Ping succeeded: $ComputerName"; return $true}
}

function CanRemote {
    $s = new-pssession $computername -erroraction SilentlyContinue

    if ($s -is [System.Management.Automation.Runspaces.PSSession])
        {write-host "Remote test succeeded: $ComputerName."}
    else
        {write-host "Remote test failed: $ComputerName."}
}

if (CanPing $computername) {CanRemote $computername}

Чтобы выполнить этот скрипт, введите имя параметра после имени скрипта. Пример:

C:\PS> .\test-remote.ps1 -computername Server01

Ping succeeded: Server01
Remote test failed: Server01

Дополнительные сведения о инструкции Param и параметрах функции см. в разделе about_Functions и about_Functions_Advanced_Parameters.

Написание справки для сценариев

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

  • Comment-Based справки по сценариям

    Создайте раздел справки, используя специальные ключевые слова в комментариях. Чтобы создать справку на основе комментариев для сценария, необходимо поместить комментарии в начало или в конец файла скрипта. Дополнительные сведения о справке на основе комментариев см. в разделе about_Comment_Based_Help.

  • XML-Based справки по сценариям

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

Чтобы связать скрипт с разделом справки на основе XML, используйте. Ключевое слово комментария справки Екстерналхелп. Дополнительные сведения о ключевом слове Екстерналхелп см. в разделе about_Comment_Based_Help. Дополнительные сведения о справке на основе XML см. в разделе как написать справку по командлетам.

Возврат значения выхода

По умолчанию скрипты не возвращают состояние выхода при завершении сценария. Для возврата кода выхода из скрипта необходимо использовать exit инструкцию. По умолчанию exit инструкция возвращает 0 . Можно указать числовое значение, чтобы вернуть другое состояние выхода. Ненулевое значение кода выхода обычно сигнализирует об ошибке.

в Windows допускается любое число между [int]::MinValue и [int]::MaxValue .

В UNIX разрешены только положительные числа в диапазоне от [byte]::MinValue (0) до [byte]::MaxValue (255). Отрицательное число в диапазоне от -1 до -255 автоматически преобразуется в положительное число путем добавления 256. Например, -2 преобразуется в 254 .

В PowerShell exit инструкция задает значение $LASTEXITCODE переменной. в Windows командной оболочке (cmd.exe) оператор exit задает значение %ERRORLEVEL% переменной среды.

Любой аргумент, который не является числовым или вне диапазона, зависящего от платформы, преобразуется в значение 0 .

Область скрипта и источники с точкой

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

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

Функция «с точкой» позволяет запускать скрипт в текущей области, а не в области скрипта. При запуске скрипта, который имеет точку с точкой, команды в скрипте выполняются так, будто были введены в командной строке. Функции, переменные, псевдонимы и диски, создаваемые сценарием, создаются в области, в которой выполняется работа. После выполнения скрипта можно использовать созданные элементы и получить доступ к их значениям в сеансе.

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

Пример:

. C:\scripts\UtilityFunctions.ps1

или диспетчер конфигурации служб

. .\UtilityFunctions.ps1

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

Например, UtilityFunctions.ps1 Скрипт создает New-Profile функцию и $ProfileName переменную.

#In UtilityFunctions.ps1

function New-Profile
{
  Write-Host "Running New-Profile function"
  $profileName = split-path $profile -leaf

  if (test-path $profile)
    {write-error "Profile $profileName already exists on this computer."}
  else
    {new-item -type file -path $profile -force }
}

При запуске UtilityFunctions.ps1 скрипта в собственной области New-Profile скрипта функция и $ProfileName переменная существуют только во время выполнения скрипта. При завершении работы скрипта удаляется функция и переменная, как показано в следующем примере.

C:\PS> .\UtilityFunctions.ps1

C:\PS> New-Profile
The term 'new-profile' is not recognized as a cmdlet, function, operable
program, or script file. Verify the term and try again.
At line:1 char:12
+ new-profile <<<<
   + CategoryInfo          : ObjectNotFound: (new-profile:String) [],
   + FullyQualifiedErrorId : CommandNotFoundException

C:\PS> $profileName
C:\PS>

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

C:\PS> . .\UtilityFunctions.ps1

C:\PS> New-Profile

    Directory: C:\Users\juneb\Documents\WindowsPowerShell

    Mode    LastWriteTime     Length Name
    ----    -------------     ------ ----
    -a---   1/14/2009 3:08 PM      0 Microsoft.PowerShellISE_profile.ps1

C:\PS> $profileName
Microsoft.PowerShellISE_profile.ps1

Дополнительные сведения об области действия см. в разделе about_Scopes.

Скрипты в модулях

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

Можно включить скрипты в модули или создать модуль скрипта, который представляет собой модуль, полностью или в основном содержащий скрипт и вспомогательные ресурсы. Модуль скрипта — это просто сценарий с расширением файла PSM1.

Дополнительные сведения о модулях см. в разделе about_Modules.

Другие функции сценариев

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

  • #Requires — Можно использовать #Requires инструкцию, чтобы предотвратить выполнение скрипта без указанных модулей или оснасток и заданную версию PowerShell. Дополнительные сведения см. в разделе about_Requires.

  • $PSCommandPath — Содержит полный путь и имя выполняемого скрипта. Этот параметр допустим во всех скриптах. Эта автоматическая переменная появилась в PowerShell 3,0.

  • $PSScriptRoot — Содержит каталог, из которого выполняется скрипт. В PowerShell 2,0 эта переменная допустима только в модулях скриптов ( .psm1 ). Начиная с PowerShell 3,0, он действителен во всех скриптах.

  • $MyInvocation``$MyInvocation— Автоматическая переменная содержит сведения о текущем скрипте, включая сведения о том, как он был запущен или вызван. Эту переменную и ее свойства можно использовать для получения сведений о скрипте во время его выполнения. Например, $MyInvocation . Переменная Микомманд. path содержит путь и имя файла скрипта. $MyInvocation. Строка содержит команду, которая запустила скрипт, включая все параметры и значения.

    Начиная с PowerShell 3,0, $MyInvocation имеет два новых свойства, которые предоставляют сведения о скрипте, который вызывал или вызывает текущий скрипт. Значения этих свойств заполняются только в том случае, если вызывающий элемент или вызвавший объект является сценарием.

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

    • PSScriptRoot содержит каталог скрипта, вызвавшего или вызвавшего текущий скрипт.

    В отличие $PSCommandPath от и $PSScriptRoot автоматических переменных, содержащих сведения о текущем скрипте, свойства $MyInvocation пскоммандпас и PSScriptRoot этой переменной содержат сведения о скрипте, вызвавшем текущий скрипт.

  • Разделы данных. Вы можете использовать Data ключевое слово для разделения данных из логики в скриптах. Разделы данных также могут упростить локализацию. Дополнительные сведения см. в разделе about_Data_Sections и about_Script_Internationalization.

  • Подпись скрипта. Вы можете добавить цифровую подпись к сценарию. В зависимости от политики выполнения можно использовать цифровые подписи для ограничения выполнения скриптов, которые могут включать ненадежные команды. Дополнительные сведения см. в разделе about_Execution_Policies и about_Signing.

См. также раздел

Справка консоли PowerShell.exe

Запускает Windows PowerShell из командной строки или другого средства, например из программы Cmd.exe.


PowerShell[.exe]
	 [-PSConsoleFile <file> | -Version <version>]
	 [-EncodedCommand <Base64EncodedCommand>]
	 [-ExecutionPolicy <ExecutionPolicy>]
	 [-File <filePath> <args>]
	 [-InputFormat {Text | XML}] 
	 [-NoExit]
	 [-NoLogo]
	 [-NonInteractive] 
	 [-NoProfile] 
	 [-OutputFormat {Text | XML}] 
	 [-Sta]
	 [-WindowStyle <style>]
	 [-Command { - | <script-block> [-args <arg-array>]
					 | <string> [<CommandParameters>] } ]

PowerShell[.exe] -Help | -? | /?

-EncodedCommand

Принимает команду в виде закодированной base-64 строки. Используйте этот параметр для передачи в Windows PowerShell команд, где требуются сложные кавычки или круглые скобки.

-ExecutionPolicy

Задает политику выполнения по умолчанию для текущего сеанса. Этот параметр не меняет политику выполнения Windows PowerShell, указанную в реестре.

-File

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

-InputFormat

Описывает формат данных, отправляемых в Windows PowerShell. Допустимые значения: Text (текстовые строки), XML (сериализованный формат CLIXML).

-NoExit

Не происходит выход после выполнения команд запуска.

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

-NonInteractive

Не выдается интерактивный запрос пользователю.

-NoProfile

Профиль Windows PowerShell не загружается.

-OutputFormat

Определяет форматирование выходных данных Windows PowerShell. Допустимые значения: Text (текстовые строки), XML (сериализованный формат CLIXML).

-PSConsoleFile

Загружается указанный файл консоли Windows PowerShell. Для создания файла консоли используйте командлет Export-Console в Windows PowerShell.

-Sta

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

-Version

Запускается заданная версия Windows PowerShell. Введите номер версии с этим параметром, например «-version 1.0».

-WindowStyle

Позволяет задать стиль окна (Normal, Minimized, Maximized или Hidden).

-Command

Позволяет выполнить указанные команды (с любыми параметрами), как если бы они были введены в командной строке Windows PowerShell, и завершает выполнение, если не задан параметр NoExit. Значением параметра Command может быть «-«, строка или блок скрипта.

Если параметр Command имеет значение «-«, текст команды считывается из стандартного ввода.

Блок скрипта должен быть заключен в фигурные скобки ({}). Блок скрипта можно задать, только если PowerShell.exe выполняется в Windows PowerShell. Результаты работы скрипта возвращаются в родительскую оболочку в виде десериализованных объектов XML, а не активных объектов.

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

Для записи строки, выполняющей команду Windows PowerShell, используйте следующий формат:

где кавычки обозначают строку, а оператор вызова (&) приводит к выполнению команды.

-Help, -?, /?

Выводит это сообщение. При вводе команды PowerShell.exe в Windows PowerShell параметрам должен предшествовать символ дефис (-), а не косая черта (/). В программе Cmd.exe можно использовать как дефис, так и косую черту.

Как запустить скрипт powershell из командной строки. Windows PowerShell: что это за программа

1. Написание скрипта

Скрипт PowerShell (не важно какой версии) — это текстовый файл с расширением *.ps1 .

Вот пример простого Power Shell срипта (файл systemInfo.ps1 ):

# Retrieve WMI object for the operating system

Get-WmiObject Win32_OperatingSystem

Этот файл можно создавать и редактировать, например, в FAR Manager.

Обратите внимание , что FAR Manager хоть и может работать в консоли Power Shell, но выполняет из-под себя скрипты в окружении обычной Windows-консоли cmd . То есть, FAR Manager можно использовать только для создания и редактирования PowerShell скриптов, но не для запуска. Но прежде чем разочаровываться, прочитайте пункт 3.

2. Запуск срипта

Скрипт нужно выполнять из консоли Power Shell, а не из обычной консоли Windows. В консоли Power Shell необходимо перейти в каталог, где лежит скрипт (командами cd ), и затем запустить сам скрипт, обязательно прописав перед ним символы «.\» . Например, имеем путь к файлу скрипта d:\work\systemInfo.ps1 . Тогда команды запуска будут выглядеть так:

cd \

cd work

.\systemInfo.ps1

или так (просто указывается полный путь к скрипту):

d:\work\systemInfo.ps1

Скорее всего, при запуске скрипта появится следующая ошибка:

Не удается загрузить файл D:\work\systemInfo.ps1, так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.

строка:1 знак: 18

CategoryInfo: NotSpecified: (:) , PSSecurityException

FullyQualifiedErrorId: RuntimeException

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

Чтобы резрешить выполнение PowerShell скриптов, нужно создать *.bat файл, например enableScript.bat со следующим содержимым:

powershell -Command Set-ExecutionPolicy RemoteSigned

Этот *.bat файл можно выполнить в любой консоли: хоть в PowerShell, хоть в обычной cmd . После выполнения этого файла, PowerShell-скрипты станут запускаться в консоли PowerShell.

3. Запуск PowerShell-скрипта из обычной Windows-консоли cmd

Скрипт PowerShell можно выполнить и из обычной консоли Windows. Для этого можно воспользоваться командой:

Powershell -File ./systemInfo.ps1

Таким образом можно выполнять скрипты прямо из FAR Manager, и они будут работать.

Но тут есть небольшая тонкость. Параметр -File срабатывает только на локальных путях, даже если путь указан относительный «./» . То есть, если *.ps1 — файл лежит на локальном диске C: или D: , то такой вызов будет работать. Но если попробовать выполнить скрипт, расположенный на доменном ресурсе, то скрипт не будет найден. Возможно, это исправят в следующих версиях PowerShell.

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

PowerShell является ценным пополнением списка инструментов Windows и его масштаб может отпугнуть некоторых пользователей. Что это — скриптовый язык или командная оболочка? Не стоит беспокоиться: несмотря на обширные возможности, освоить PowerShell по силам каждому.

Шаг 1: установка

Для начала нам необходима сама утилита PowerShell. Если вы работаете с Windows 10, у вас уже установлена версия PowerShell 5. Обновление Windows 10 Anniversary Update использует версию 5.1, но разница незаметна. В Windows 8 и 8.1 применяется PowerShell 4, чего тоже вполне достаточно. Установка PowerShell на Windows 7 не доставит проблем, но всё же пару лишних шагов придется сделать. В частности, нужно дополнительно установить.Net Framework. Можно установить Windows Management Framework, в состав которого входит PowerShell.

У PowerShell есть два интерфейса. Опытные пользователи могут выбрать полноценный графический интерфейс, известный как Integrated Scripting Environment (ISE). Новичкам лучше использовать консоль PowerShell, простой текстовый интерфейс в стиле командной строки Windows или даже DOS 3.2.

Для запуска PowerShell от имени администратора в Windows 10 нажмите на кнопку «Пуск» и прокрутите список приложений до Windows PowerShell. В Windows 8.1 ищите Windows PowerShell в папке System в Windows. В Windows 7 оболочка располагается в папке Accessories. В качестве обычного пользователя PowerShell можно запустить точно так же, используя левую кнопку мыши вместо правой.

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

Шаг 2: старые команды Windows

Синтаксис команд Windows в PowerShell работает привычным образом. Например, cd меняет папки, dir показывает список всех файлов и папок внутри текущей папки.

В зависимости от метода запуска консоли PowerShell можно начать в c:\Windows\system32 или в c:\Users\. В примере на скриншоте используется команда cd .. (с пробелом) для перехода на один уровень вверх за раз, затем запускается команда dir для отображения списка файлов и папок в директории C:\ .

Шаг 3: установка файлов помощи

Команды вроде cd и dir не являются активными командами оболочки PowerShell. Это так называемые псевдонимы (aliases) — замены настоящих команд PowerShell. Псевдонимы удобны для тех, кто имеет большой опыт работы с командной строкой. Однако они не затрагивают глубин PowerShell.

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

Команда help говорит, что dir является псевдонимом команды PowerShell Get-ChildItem . Если набрать get-childitem в PS C:\> , увидите то же самое, что и при использовании команды dir .

Как указано внизу скриншота, файлы помощи для PowerShell не устанавливаются автоматически. Для их получения запустите PowerShell от имени администратора и наберите update-help . Установка файлов помощи займёт несколько минут, ряд модулей могут отсутствовать — например, в данном случае не установились Help for NetWNV и SecureBoot. Когда всё готово, полная система помощи всегда будет давать нужные подсказки.

Теперь наберите команду get-help и любую интересующую вас команду («cmdlet» на языке PowerShell, по-русски командлеты), будет показано её описание. Например, get-help get-childitem выдаёт список опций get-childitem . Также можно вывести разные возможные варианты. Например

get-help get-childitem -examples

выдает семь подробных примеров использования get-childitem . Команда

get-help get-childitem -detailed

включает в себя эти семь примеров и подробные разъяснения каждого параметра в командлете get-childitem .

Шаг 4: получение помощи по параметрам

На скриншоте вы могли заметить два списка под SYNTAX для get-childitem . Наличие двух разных синтаксисов означает возможность применения двух способов запуска командлет. Как держать синтаксис отдельно друг от друга и что означают параметры? Ответ простой, если знать трюк.

Для получения подробностей относительно параметров командлеты get-childitem или любой другой используйте параметр -full :

get-help get-childitem -full

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

Просмотр описания параметров позволяет заметить, что get-childitem даёт возможность получить объект child (вроде названия подпапки или имени файла) в указанном месте, с совпадением определённых символов или без. Например:

get-childItem “*.txt” -recurse

возвращает список файлов «*.txt» в текущей папке и всех подпапках (из-за параметра -recurse ). Тогда как

get-childitem “HKLM:\Software”

возвращает список всех ключей реестра верхнего уровня в HKEY_LOCAL_MACHINE\Software .

Если вы когда-нибудь пытались попасть в реестр при помощи командной строки Windows или файлов.bat, вы сможете оценить функциональность этого варианта доступа.

Шаг 5: изучение имён

Есть причина того, почему показанные до сих пор командлеты выглядят сходным образом: get-childitem, update-help, get-help используют единую схему глагол-существительное. Это соглашение применяют все командлеты PowerShell, в них глагол стоит перед единственным существительным. Это понравится тем, кто в своё время пострадал от непостоянства названий команд в языках VB и VBA.

Взгляните на самые распространенные командлеты:

set-location : устанавливает текущую рабочий локацию на определённую локацию

get-content : получает содержимое файла

get-item : получает файлы и папки

copy-item : копирует объект из одной локации в другую

remove-item : удаляет файлы и папки

: получает процессы, запущенные на локальном или удаленном компьютере

get-service : получает сервисы, запущенные на локальном или удаленном компьютере

invoke-webrequest : получает содержимое с веб-страницы в интернете

Для просмотра работы определённой командлеты используйте get-help как в случае

get-help copy-item -full

На основе описания в помощи можно понять, что необходимо командлете. Например, если вы хотите копировать все файлы и папки из Documents в c:\temp , используйте

copy-item c:\users\ \documents\* c:\temp

Введя эту команду, вы увидите несколько интересных возможностей окружения PowerShell. Например, если набрать copy-i и нажать кнопку Tab, PowerShell заполнит Copy-Item . Если неправильно набрать командлету и PowerShell не может распознать её, даётся полное описание того, что было сделано не так.

Попробуйте данную командлету:

invoke-webrequest askwoody.com

Вы получите краткий список заголовков, изображений, ссылок и прочего содержимого веб-страницы. Обратите внимание в get-help на список invoke-webrequest , который «возвращает коллекцию форм, ссылок, изображений и прочие важные элементы HTML» — именно то, что должно показываться на экране.

Некоторые командлеты помогают управлять самим PowerShell:

get-command : список всех доступных командлет

get-verb : список всех доступных глаголов

clear-host : очистка экрана программы-хоста

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

get-command *-service

Будут показаны все глаголы, доступные с существительным service . Вот их список:

Get-Service

New-Service

Restart-Service

Resume-Service

Set-Service

Start-Service

Stop-Service

Suspend-Service

Можно объединять эти командлеты с другими.

Шаг 6: использование труб

Если вы знакомы с командной строкой Windows или пакетными файлами, то знаете о перенаправлении и трубах. Перенаправление (символ >) и трубы (символ |) берут результат действия и прикрепляют его в другое место. Например, можно перенаправить результат команды dir в текстовый файл или передать результат команды ping в команду find для фильтрования интересных результатов, вроде

dir > temp.txt

ping askwoody.com | find “packets” > temp2.txt

Здесь во второй команде find ищет строку packets , взятую из адреса askwoody.com командой ping и объединяет все совпадающие строки в файл под названием temp2.txt .

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

ping askwoody.com | select-string packets | out-file temp2.txt

Использования перенаправления и труб значительно расширяет возможности командной строки Windows: вместо бесконечного прокручивания вниз по экрану в поиске текстовой строки можно отфильтровывать нужные команды Windows.

Powershell обладает поддержкой pipe , причём она не ограничена текстом. PowerShell позволяет передавать целый объект из одной командлеты в другую, где объект представляет собой комбинацию данных (называемых свойствами) и действий (методов), которые могут использовать эти данные.

Сложная часть начинается при выстраивании объектов. Поставляемые одним командлетом объекты должны совпадать с типом объектов, принимаемых получающим командлетом. Текст является весьма простым типом объектов, так что если вы работаете с текстом, выравнивание объектов является простой задачей. Остальные объекты не такие элементарные.

Как это понять? Используйте командлету get-member . Если вы хотите знать, какой тип объекта обрабатывает командлета, проведите её через get-member . Например, если вы пытаетесь понять запущенные на компьютере процессы и сузили опции до командлеты , вот как узнать результат командлеты:

get-process | get-member

Запуск этой командлеты выдаёт длинный список свойств и методов для , но в самом начале списка можно увидеть тип объекта, который создает :

TypeName: System.Diagnostics.Process

Нижеприведенный скриншот также показывает свойства под названием get-process Handles, Name, NPM, PM, SI, VM и WS .

Если вы хотите манипулировать результатом для работы с этим командлетом (вместо отображения длинного списка активных процессов на мониторе), нужно найти другую команду, которая в качестве вводных данных принимает System.Diagnostics.Process . Для поиска нужной командлеты снова используйте возможности PowerShell:

get-command -Parametertype System.Diagnostics.Process

Эта командлета выдает список командлет, которые могут обрабатывать System.Diagnostics.Process .

Некоторые командлеты известны тем, что принимают почти любой вид данных. Главной среди них является . Эта командлета пропускает через себя каждый посылаемый по трубе объект, один за одним, и применяет к нему заданной критерии выбора. Существует специальный маркер под названием $_ , который позволяет использовать каждый предмет в трубе, один за раз.

Допустим, вы хотите получить список всех запущенных на компьютере процессов с названием «svchost», то есть хотите сопоставить свойство Name процессу svchost . Используйте команду:

get-process | where-object {$_.Name -eq “svchost”}

Командлета смотрит на каждый объект System.Diagnostics.Process , сравнивает .Name этого объекта с «svchost»; если есть совпадения, они выдаются на монитор. Смотрите на скриншот.

Шаг 7: анализ полезных команд PowerShell

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

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

Get-AppXPackage | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}

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

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

Командлета Get-AppXPackage возвращает объект TypeName Microsoft.Windows.Appx.PackageManager.Commands.AppxPackage , который включает в себя полное имя пакета приложения и местонахождения соответствующего файла манифеста XML. Если запустить командлету get-appxpackage , вы увидите длинный список пакетов приложений. Скриншот показывает описание приложения Xbox.

Командлета Foreach посредством цикла проходит через каждый объект в AppXPackage , отправляя их командлету Add-AppxPackage . Согласно get-help для Add-AppxPackage , тут есть два ключевых переключателя:

  • Переключатель -Register используется для регистрации существующих установок пакетов приложений, можно задать параметры DisableDevelopmentMode и Register
  • Переключатель -DisableDevelopmentMode говорит Windows заново зарегистрировать существующий пакет приложения, который был отключён, не зарегистрирован или повреждён.

Строка «$($_.InstallLocation)\AppXManifest.x ml» описывает, где расположен файл manifest.xml . Если посмотреть на файлы AppXManifest.xml , вы увидите сложный список идентификаторов приложений, исполняемых файлов и большое количество визуальных элементов, связанных с приложением.

После перезагрузки все добавленные пакеты приложений скачиваются и устанавливаются из магазина Windows Store.

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

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

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

Как открыть PowerShell?

Это можно сделать несколькими следующими способами:

  • — вы найдёте приложение в общем списке компонентов под буквой W.
  • При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
  • Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
  • В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
  • В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.

Как писать и запускать скрипты?

Как создать скрипт PowerShell и запустить его? Это можно попросту сделать в блокноте — используя его, укажите в новом документе необходимые вам команды. После сохраните его, но поменяйте формат на.ps1 — именно такое расширение имеют файлы этой системной утилиты.

Писать скрипты в самом приложении можно так:

  • Запустите его.
  • Нажмите на пункт «Создать».
  • Или кликните на «Файл», и в появившемся списке выберите «Создать».
  • Напишите все команды, которые нужно выполнить, сохраните файл.

Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.

Запустить скрипт вы сможете таким образом:

  1. Зайдите в PowerShell от имени администратора.
  2. При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
  3. В этом случае e: — имя жёсткого диска, где находится файл.
  4. Жмите Enter.

Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.

Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.

Другие вопросы по пользованию

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

  1. Введите $PSVersionTable.
  2. Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $host.version.
  3. В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.

Запуск программы из PowerShell

Задача запустить из PowerShell какой либо исполняемый файл (программу или утилиту командной строки) встречается достаточно часто. PowerShell предлагает для этого несколько различных способов, которые мы и рассмотрим далее в этой статье. Начнем с самого простого…

Прямой запуск

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

Set-Location ″C:\Program Files″
.\Hello.exe

Обратите внимание, что даже находясь в нужном каталоге, требуется указывать относительный путь к исполняемому файлу. Исключение составляют файлы из директорий, перечисленных в переменной окружения (path). Например различные встроенные программы и утилиты (notepad, calc, ping и т.п.), находящиеся в директории Windows\System32, можно запускать без указания пути.

Оператор &

Если необходимо указать полный путь к исполняемому файлу, то можно воспользоваться оператором & (оператор вызова). Он позволяет выполнить строку текста, указанную в кавычках, как единую команду. Например:

& ′C:\Program Files\Hello.exe′

Поскольку оператор & не анализирует передаваемую команду, то он не может интерпретировать ее параметры. Поэтому дополнительные параметры\аргументы передаются также в виде текста, в кавычках. Для примера возьмем предыдущую программу и немного изменим ее, так что она принимает нужный текст в виде аргумента:

& ′C:\Program Files\Hello.exe′ ′Hello, world′

При желании можно указать нескольких аргументов через запятую:

& ′C:\Program Files\Hello.exe′ ′Hello,′, ′ world′

Для удобства команду и аргументы можно поместить в переменные:

$exe = ′C:\Program Files\Hello.exe′
$arg1 = ′Hello′
$arg2 = ′world′
& $exe $arg1 $arg2

Ну и если аргументов много, то их можно объединить, воспользовавшись такой конструкцией:

$exe = ′C:\Program Files\Hello.exe′
$allargs = @(′Hello,′,′world′)
& $exe $allargs

Invoke-Expression

Командлет Invoke-Expression работает примерно так-же, как и оператор & — берет текстовую строку и выполняет ее в виде команды. Например:

Invoke-Expression -Command ′C:\Windows\Hello.exe′

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

Invoke-Expression -Command ′C:\Program Files\Hello.exe′

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

Invoke-Expression -Command ″C:\′Program Files′\Hello.exe″

Start-Process

Командлет Start-Process запускает указанный файл в виде процесса, используя метод Start .NET класса Process . Например:

Start-Process -FilePath ′C:\Program Files\Hello.exe′

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

Start-Process -FilePath ′C:\Program Files\Hello.exe′ -NoNewWindow -Wait

Также Start-Process позволяет передать в процесс дополнительные аргументы:

Start-Process -FilePath ′C:\Program Files\Hello.exe′ -ArgumentList ′Hello, world′ -NoNewWindow -Wait

По умолчанию командлет ничего не возвращает, но с помощью параметра -PassThru можно заставить его вернуть объект процесса. Этот объект очень удобно поместить в переменную:

$process = Start-Process -FilePath ′C:\Program Files\Hello.exe′ -Wait -PassThru

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

$process.HasExited

$process.ExitTime

или код выполнения:

$process.ExitCode

.NET

В принципе.NET классом Process можно воспользоваться напрямую, без командлета Start-Process. К примеру, запустить процесс можно командой:

::Start(′C:\Program Files\Hello.exe′)

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

$process = New-Object -TypeName System.Diagnostics.Process
$process.StartInfo.FileName = ″C:\Program Files\Hello.exe″
$process.StartInfo.Arguments = ″Hello,world″
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$process.Start()
$process.WaitForExit()
$process.StandatdOutput.ReadToEnd()

WMI

С помощью WMI можно сделать практически все, в том числе и запустить программу. Для этого вполне подойдет метод Create WMI-класса Win32_Process. Этот метод запускает процесс на локальном или удаленном компьютере через RPC. Например, для выполнения программы на локальном компьютере можно воспользоваться такой командой:

()″Win32_Process″).Create(′C:\Program Files\Hello.exe′)

А для выполнения на удаленном компьютере команда будет выглядеть так:

()″\\remotecomputer\root\cimv2:Win32_Process″).Create(′C:\Program Files\Hello.exe′)

Как вариант, можно воспользоваться командлетом Invoke-WmiMethod:

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″C:\Program Files\Hello.exe″

Либо командлетом Invoke-CimMethod:

Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine=″C:\Program Files\Hello.exe″}

WMI запускает процесс в отдельном окне и возвращает объект, содержащий идентификатор процесса (ProcessID) и результат выполнения (ReturnValue). ReturnValue может принимать следующие значения:

0 — Sucsessful Completiom
2 — Access Denied
3 — Insufficient Privilege
8 — Uncnown Failure
9 — Path Not Found
21 — Invalid Parameter

Invoke-Command

Командлет Invoke-Command умеет выполнять команды на локальном или удаленном компьютере, используя WinRM. Например, для запуска нашей программы на локальном компьютере используем команду:

Invoke-Command -ScriptBlock {″C:\′Program Files′\Hello.exe″}

При необходимости в программу можно передать аргументы:

Invoke-Command -ScriptBlock {C:\′Program Files′\Hello.exe ″Hello,world″}

Обратите внимание, что Invoke-Command не очень дружит с пробелами, поэтому во избежании ошибок приходится исхитряться с кавычками. Впрочем, подобных проблем можно избежать, например комбинируя использования командлета с оператором &:

Invoke-Command -ScriptBlock {& ′C:\Program Files\Hello.exe′}

В основном Invoke-Command применяется для удаленного управления, его главное достоинство — это возможность одновременного выполнения на нескольких компьютерах. Например:

Invoke-Command -ScriptBlock {″C:\′Program Files′\Hello.exe″} -ComputerName SRV1,SRV2,SRV3

$scriptblock = {″C:\′Program Files′\Hello.exe″}
$Computers = @(′SRV1′,′SRV2′,′SRV3′)
Invoke-Command -ScriptBlock $scriptblock -ComputerName $Computers

По умолчанию командлет возвращает результат выполнения программы, а если запустить его в фоновом режиме (параметр -AsJob), то возвращает объект Job:

Invoke-Command -ScriptBlock {C:\′Program Files′\Hello.exe} -ComputerName localhost -AsJob -JobName Hello

Invoke-Item

Командлет Invoke-Item предназначен для применения к файлу действия по умолчанию. Так запустить исполняемый файл можно командой:

Invoke-Item -Path ″C:\Program Files\Hello.exe″

Однако наиболее удобно использовать Invoke-Item для открытия определенного типа файлов. Например так мы откроем текстовый файл:

Invoke-Item -Path ″C:\Files\test.txt″

А так все текстовые файлы в папке:

Invoke-Item -Path ″C:\Files\*.txt″

CMD

Ну и в завершение еще один способ запуска программы из PowerShell — с помощью оболочки cmd. Способ достаточно ″непрямой″, но тем не менее работающий. Следующая команда запускает новый экземпляр cmd, выполняет в нем указанную программу, завершает работу cmd и возвращает результат:

cmd /c ″C:\Program Files\Hello.exe″

Такое вот изобилие способов запустить программу предоставляет PoSh. И каждый из них хорош для определенных ситуаций.

Кстати, статья написана по мотивам PowerShell: Deep Dive and Best Practice . Рекомендую почитать, там еще много интересного.

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

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

Powershell очень хорошо развивается и с выходом Windows 10 получил уже 4 версию, но у нас тема другая. Так как открыть 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. Еще полезным бывает поменять шрифт в окне 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 ISE

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

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

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

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

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

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

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

Запуск скриптов PowerShell с параметрами: az_spb_ru — LiveJournal

Решил я тут небольшой скриптец написать на PowerShell. Не хотелось завязываться на установку всякой внешней лабуды типа перлов с питонами, а PS сейчас в каждой винде. Особо то я его ен знаю. Ну все-таки написал как-то, не суть. Скрипт на вход должен получать путь к каталогу, а если того нет, то работать с текущим.
В конце встал вопрос «а как его запускать?». По умолчанию в винде типа с целью безопасности запуск PS-скриптов не работает. При том же даблклике он открывается в редакторе. Чтобы его запустить надо в контекстном меню выбрать нужный пункт. Естественно это лишний геморрой и аргумент в такой запуск не подставишь. Можно, конечно, писать «powershell.exe bla bla bla», но нафиг совершать лишние никому не нужные действия и снижать ресурс клавиатуры =)?

Короче. В Реестре по пути HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\ есть несколько подразделов. По умолчанию там должны быть 0, Edit и Open. В самом Shell значением по умолчанию стоит Open. А вот для запуска используется ничем не примечательный 0. Поэтому первым делом в Shell в значение по умолчанию вместо Open пишем 0. После этого ps1-файлы будут запускаться по даблклику или по имени в консоли/Far/TC.

Но остается проблема с аргументами — они в скрипт не передаются. Смотрим что напиисано в значении по умолчанию по пути HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Microsoft.PowerShellScript.1\Shell\0\Command. Вообще в разных виндах там может быть разное. В Windows 7 там, например, стоит «C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe» «-file» «%1» .  А в Windows 10 — «C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe» «-Command» «if((Get-ExecutionPolicy ) -ne ‘AllSigned’) { Set-ExecutionPolicy -Scope Process Bypass }; & ‘%1′» (именно так с кавычками)

Но смысл в любом случае в том, что передается только 1й аргумент (%1) — в данном случае это имя самого ps1-файла передается в powershell.exe.
Соответственно, после %1 дописываем %* — что означает все аргументы. Для Win10  должно стать в итоге
«C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe» «-Command» «if((Get-ExecutionPolicy ) -ne ‘AllSigned’) { Set-ExecutionPolicy -Scope Process Bypass }; & ‘%1’ ‘%*’ «

Причем для меня пока осталось непонятным, что в скрипт вроде как при таком написании должны передаваться все изначальные аргументы — то есть имя самого скрипта первым. Но этого не происходит. То есть при запуске script.ps1 test — в $args[0] будет именно test, как мы ожидаем при нормальном запуске. 

Как писать и как запускать скрипты powershell

Россия+7 (910) 990-43-11

Windows 10 PowerShell – это средство командной строки, которое позволяет выполнять команды и сценарии для изменения параметров системы и автоматизации задач. Это похоже на командную строку, но PowerShell является более эффективным интерфейсом командной строки (CLI), который предоставляет широкий набор инструментов и обеспечивает большую гибкость и контроль (особенно для сценариев).

Скрипт – это просто набор команд, сохраненных в текстовый файл (с расширением .ps1), которые PowerShell может понять и выполнить в заданной последовательности. Единственное предупреждение заключается в том, что в отличие от командной строки, протокол безопасности по умолчанию предотвращает выполнение всех сценариев.

Это означает, что при двойном щелчке .ps1 файла в системе Windows 10 ничего не произойдёт, и если вы пытаетесь выполнить скрипт в PowerShell, вы получите сообщение об ошибке: «не может быть загружен, потому что запрещено выполнение сценариев в этой системе». Тем не менее, запускать сценарии на вашем устройстве довольно просто. Вам просто нужно включить правильную политику выполнения.

В этой версии урока по Windows 10 мы проведём вас шаг за шагом, чтобы вы смогли успешно запустить свой первый скрипт в PowerShell.

Создание файла сценария PowerShell

В Windows 10 файлы сценариев PowerShell можно создавать с помощью практически любого текстового редактора или консоли интегрированной среды сценариев (ISE).

Создание скрипта с помощью блокнота

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

  1. Откройте приложение «Блокнот».
  2. Создайте или вставьте сценарий. Например: Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»

    Вышеприведенный скрипт просто выводит на экране фразу «Поздравляем! Ваш первый скрипт успешно выполнен».

  3. Сохраните файл под любым удобным названием, например, first_script.ps1

Создание сценария с помощью интегрированной среды сценариев

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

  1. Откройте системный поиск и введите запрос Windows PowerShell ISE, щелкните правой кнопкой мыши верхний результат, и выберите Запуск от имени администратора или выберите соответствующий параметр в правой колонке.
  2. В PowerShell ISE создайте пустой файл .ps1, в котором можно создать или вставить скрипт. Например:

    Write-Host ««Поздравляем! Ваш первый скрипт успешно выполнен»»

  3. Откройте меню Файл и нажмите кнопку Сохранить.
  4. Введите название сценария. Например, first_script_ise.ps1
  5. Сохраните скрипт.

Как только Вы выполнили эти шаги с помощью Блокнота или PowerShell ISE, сценарий готов к запуску, но он не будет выполнен. Это происходит потому, что параметры PowerShell по умолчанию всегда настроены на блокирование выполнения любого сценария.

Запуск файла сценария PowerShell

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

  1. Откройте поиск и введите PowerShell, щелкните правой кнопкой мыши в верхний результат и выберите Запуск от имени администратора.
  2. Введите следующую команду, чтобы разрешить выполнение скриптов и нажмите клавишу Enter:

    Set-ExecutionPolicy RemoteSigned

  3. Укажите тип А и ещё раз нажмите клавишу Enter.
  4. Введите следующую команду для запуска скрипта и нажмите клавишу Enter:

    & «C:PATH oSCRIPTfirst_script.ps1»

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

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

PowerShell в Windows 10 включает четыре политики выполнения:

  • Restricted – останавливает выполнение скрипта.
  • RemoteSigned – запускает скрипты, созданные на устройстве. Однако, сценарии, созданные на другом компьютере, не будут запускаться, если они не содержат подписи доверенного издателя.
  • AllSigned – все скрипты будут работать до тех пор, пока они подписаны надежным издателем.
  • Unrestricted запускает любой скрипт без каких-либо ограничений.

В приведенных выше шагах мы использовали команду, чтобы разрешить запуск локальных скриптов в Windows 10. Однако, если вы не планируете регулярно выполнять скрипты, можно восстановить настройки по умолчанию, используя те же инструкции, но на Шаге 4, обязательно используйте Set-ExecutionPolicy Restricted команду.

Источник: https://windows-school.ru/blog/scenarij_powershell_windows_10/2019-03-02-309

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

Мне пришлось столкнуться с необходимостью запускать PowerShell скрипты при возникновении определенного события (Windows Event) при организации DHCP failover. Однако, думаю, что применений может быть масса.

Покопался в сети и нашел статью под названием Trigger a PowerShell Script from a Windows Event. (http://blogs.technet.com/b/wincat/archive/2011/08/25/trigger-a-powershell-script-from-a-windows-event.aspx). Предлагаю Вашему вниманию перевод данной статьи на русский язык.

Этот пример показывает, как сделать две вещи сразу. Запустить скрипт PowerShell при возникновении определенного события Windows Event, а ТАКЖЕ передать нужные параметры Event-а в запускаемый скрипт. Для примера будет использовано тестовое событие сгенерированное при помощи программы EventCreate из командной строки.

Предыстория: Этот сценарий был нужен для очистки определенной общей папки при возникновении специфического события (Windows Event). Событие записывалось после того как завершался процесс внесения «водяного знака» в определенный файл. Событие, используемое в этом примере повторяет формат стандартного события.

Будут показаны следующие шаги:

  • Ручное создание и переключение события
  • Использования консоли Просмотра Событий (Event Viewer)
  • Изменение запланированной задачи для передачи параметров события скрипту
  • Запуск и выполнение PowerShell скрипта
  • Проверка настроек
  • Шаг 1: Создание записи о событии с помощью EventCreate
  • C:>eventcreate /T INFORMATION /SO SomeApplication /ID 1000 /L APPLICATION /D «2011-08-29T21:24:03ZC: empSome Test File.txtSuccess»
  • Шаг 2: Создаем новое задание в консоли журнала просмотра событий, с помощью контекстного меню «Прикрепить задачу к данному событию (“Attach Task to This Event…”)

Запустите консоль Event Viewer (eventvwr.msc), найдите в журнале событий Windows Logs -> Application событие, созданное на предыдущем шаге. Щелкните по нему ПКМ и выберите меню «Attach Task to This Event…»

Создайте задачу на запуск программы (“Start a Program”) со следующими параметрами:

Программа/скрипт (Program/script): PowerShell.exe

Аргументы (Add arguments): .TriggerScript.ps1 -eventRecordID $(eventRecordID) -eventChannel $(eventChannel)

  1. Запуск в (Start in) (вам может понадобиться создать эту папку или указать на существующую папку): c: emp
  2.  Шаг 3: Изменение задачи для передачи деталей события (trigger event) и передача параметров в скрипт PowerShell

Внутри Планировщика Задач (Task Scheduler), выгрузите только что созданную задачу (как файл XML). Кликните правой кнопкой мыши на задачу «Application_SomeApplication_1000» в папке «Event Viewer Tasks», и выберите «Export…«.

С помощью блокнота (Notepad) или другого текстового редактора (желательно, чтобы редактор поддерживал редактирование Unicode, как Блокнот) добавим параметры события (Event parameters), которые необходимо передать. Параметры события, представленные ниже, наиболее часто используются для идентификации события. Заметим, что весь узел и его дочерние элементы необходимо добавить в ветку EventTrigger.

  • Event/System/ChannelEvent/System/EventRecordIDEvent/System/Level
  • Вот так:
  • Из командной строки запустите следующие команды для удаления задания планировщика и пересоздания ее с помощью только что модифицированного файла (я не знаю способа модифицировать задания с использованием измененного XML файла).
  • C:>schtasks /delete /TN «Event Viewer TasksApplication_SomeApplication_1000″C:>schtasks /create /TN «Event Viewer TasksApplication_SomeApplication_1000» /XML Application_SomeApplication_1000.xml
  • Шаг 4: Создание PowerShell скрипта TriggerScript.ps1, который вызывается заданием планировщика

# Script Name: TriggerScript.ps1# Usage Example (use a valid ID found via Event Viewer XML view of an event): powershell .TriggerScript.

ps1 -eventRecordID 1 -eventChannel Application## Create a fake event or testing with the following command (from an elevated command prompt):# eventcreate /T INFORMATION /SO SomeApplication /ID 1000 /L APPLICATION /D «2011-08-29T21:24:03ZC: empSome Test File.txtSuccess»# Collects all named paramters (all others end up in $Args)param($eventRecordID,$eventChannel)

$event = get-winevent -LogName $eventChannel -FilterXPath «*[System[(EventRecordID=$eventRecordID)]]»[xml]$eventParams = $event.Messageif ($eventParams.Params.TimeStamp) {[datetime]$eventTimestamp = $eventParams.Params.

TimeStamp$eventFile = $eventParams.Params.InputFile$popupObject = new-object -comobject wscript.shell$popupObject.

popup(«RecordID: » + $eventRecordID + «, Channel: » + $eventChannel + «, Event Timestamp: » + $eventTimestamp + «, File: » + $eventFile)

}

  1. Шаг 5: Проверка настроек с помощью генерирования нового события, аналогичному созданного в Шаге 1
  2. C:>eventcreate /T INFORMATION /SO SomeApplication /ID 1000 /L APPLICATION /D «2011-08-29T21:24:03ZC: empSome Test File.txtSuccess»
  3. Вы должны увидеть такое всплывающее окно сообщения:
  4. Не сработало? Проверяем следующее:
  • Проверьте наличие события в Event Viewer. Вам может понадобиться обновить просмотр через меню «Обновить» или кнопкой F5.
  • Вручную запустите скрипт с реальными параметрами и посмотрите на возможные ошибки (обратите внимание на комментарии в скрипте, с примерами применения). Пока скрипт является “не подписанным”, может потребоваться настроить PowerShell на запуск данного как не подписанного (см. PS> get-help about_Execution_Policies).
  • Убедитесь, что задача находится в Планировщике Заданий (Task Scheduler) в папке “Event Viewer Tasks” и посмотрите на историю выполнения задачи (“History”).

Источник: http://winitpro.ru/index.php/2016/01/21/zapusk-powershell-skripta-pri-vozniknovenii-opredelennogo-sobytiya/

PowerShell: Выполнение сценариев отключено в этой системе

В операционной системе Windows 10 имеется мощный инструмент для управления и выполнения различных задач — это PowerShell.

Эта консоль предназначена для администраторов, поскольку она позволяет им контролировать всю операционную систему с помощью сценариев (script).

PowerShell используется многими фоновыми приложениями для внесения изменений в систему и это ставит под угрозу безопасность нашего ПК.

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

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

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

Политики выполнения скриптов в PowerShell

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

  • Get-ExecutionPolicy -List

Мы можем видеть несколько уровней разрешений политик для запуска сценариев.

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

  • Restricted: заблокировано выполнение любых скриптов, но разрешается работа интерактивных команд.
  • RemoteSigned: загруженные скрипты должны быть подписаны доверенным издателем. Локальные скрипты работают без подписи
  • AllSigned: разрешает выполнение любого подписанного скрипта, как локального, так и удаленного (загруженного).
  • Unrestricted: без ограничений. Вы можете запустить все сценарии, даже те, которые не подписаны.

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

  • Set-ExecutionPolicy Unrestricted -Scope CurrentUser — запуск без ограничения для пользователя.
  • Set-ExecutionPolicyRestricted -Scope CurrentUser вернуть назад, если будет нужно.

Разрешает без ограничений выполнять сценарии для локального пользователя. Ключ -Scope определяет, к чему применяется изменение политики. Когда вы вводите «CurrentUser«, то применяется только к текущему пользователю, а когда вы вводите «LocalMachine«, он применяется ко всей системе.

Если выше способ не помог вам запустить свой скрипт и ошибка «Выполнение сценариев отключено в этой системе» появляется, то можно снять полностью ограничения. Вы должны понимать, что это большой риск и ваш скрипт должен быть безопасен на 101%. Откройте PowerShell от имени админа и:

  • Set-ExecutionPolicy Unrestricted — разрешить выполнение скриптов без ограничений.
  • Set-ExecutionPolicy Restricted— вернуть назад по умолчанию.

Источник: https://mywebpc.ru/windows/politiki-vypolneniya-skriptov-v-powershell/

Запуск PowerShell скрипта

Запуск PowerShell скрипта

Данная заметка посвящена описанию настройки необходимых параметров для запуска PowerShell скриптов. Чаще при первом запуске .ps1 скриптов вы видите следующие ошибки:

Файл невозможно загрузить. Файл не имеет цифровой подписи. Скрипт не будет выполнен в системе. Чтобы получить дополнительные сведения, введите команду «Get-Help about_signing». The file cannot be loaded. The file is not digitally signed. The script will not execute on the system. Please see «Get-Help about_Signing» for more details.

или

Запустить программу от ненадежного издателя? Файл опубликован CN=. Этот издатель не помечен как надежный в данной системе. Выполнять следует только скрипты надежных издателей.

[V] Никогда не выполнять [D] Не выполнять [R] Выполнить один раз [A] Всегда выполнять [?] Справка (по умолчанию «D»): Do you want to run software from this untrusted publisher? The file is published by CN=. This publisher is not trusted on your system.

Only run scripts from trusted publishers. [V] Never run  [D] Do not run  [R] Run once  [A] Always run [?] Help (default is «D»):

Данные ошибки и сообщения вызваны настройками политики выполнения Windows PowerShell.

При этом не стоит думать, что эти параметры действительно повышают безопасность ОС, ведь код все равно отработает, если его скопировать в к консоль PowerShell.

Таким образом, настройки безопасности можно отключить — они защищают только от случайных действий. Поэтому обычно данную проблему решают командой:

Set-ExecutionPolicy Unrestricted LocalMachine

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

Конечно, такой подход не применим в корпоративной среде, поэтом разберемся более подробно с данной ситуацией. Посмотреть текущие настройки политики во всех областях применения можно выполнив командлет Get-Executionpolicy с параметром list.

get-executionpolicy -list

Результат выполнения командлета:

Scope ExecutionPolicy
—— —————
MachinePolicy Unrestricted
UserPolicy Undefined
Process RemoteSigned
CurrentUser AllSigned
LocalMachine Restricted

 Данная политика может принимать 6 значений:

Restricted (Политика выполняется по умолчанию. Например если во всех областях применения стоит значение Undefined)
— Допускает отдельные команды, но скрипты выполнять нельзя.

— Препятствует выполнению всех файлов скриптов, включая файлы форматирования и конфигурации (PS1XML), файлы скриптов модулей (PSM1) и профили Windows PowerShell (PS1).

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

— Имеется риск выполнения неподписанных скриптов из источников, отличных от Интернета, а также подписанных, но вредоносных скриптов.

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

— Имеется риск выполнения подписанных, но вредоносных скриптов.

Unrestricted
— Могут выполняться неподписанные скрипты. (Имеется риск выполнения вредоносных скриптов.)

  • — Предупреждает пользователя перед выполнением скриптов и файлов конфигурации, загруженных из Интернета.
  • Bypass
    — Ничего не блокируется, и никакие предупреждения и запросы не появляются.
  • — Эта политика выполнения предназначена для конфигураций, в которых скрипт Windows PowerShell встроен в более крупное приложение, или для конфигураций, в которых Windows PowerShell является платформой для программы, у которой имеется собственная модель обеспечения безопасности.
  • Undefined
    — В текущей области не задана политика выполнения.
  • — Если политика выполнения во всех областях имеет значение Undefined, действует политика выполнения Restricted, которая является политикой выполнения по умолчанию.
  • Существует пять областей применения данной политики и параметров:

MachinePolicy и UserPolicy задаются политиками AD или локальными политиками данного компьютера.
Process — область применения текущая ссесия.

В справке говорится, что её значение хранится в переменной $PSExecutionPolicyPreference однако получить/изменить значение данной политики через переменную не удалось. Измения сделанные на эту область применения ни как не повлияют на другие сессии.

CurrentUser — область применения текущей пользователь. Её значение хранится в разделе реестра HKEY_CURRENT_USER («HKEY_CURRENT_USERSoftwareMicrosoftPowerShell1ShellIdsMicrosoft.PowerShellExecutionPolicy»).

LocalMachine — область применения на всех пользователей текущего компьютера. Она хранится в разделе реестра HKEY_LOCAL_MACHINE(«HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1ShellIdsScriptedDiagnosticsExecutionPolicy»).

У команды get-executionpolicy есть параметр -Scope. С помощью данного параметра можно выбрать область применения для которого отобразиться значение политики.

Get-ExecutionPolicy -scope Process

Get-ExecutionPolicy -scope Process

Результат выполнения командлета: RemoteSigned

При этом Области применения имеют приоритет высшим обладает MachinePolicy, потом UserPolicy, Process, CurrentUser и самый низкий приоритет у LocalMachine.
Поэтому в примере:

Scope ExecutionPolicy
—— —————
MachinePolicy Unrestricted
UserPolicy Undefined
Process RemoteSigned
CurrentUser AllSigned
LocalMachine Restricted

В текущей ссесии результирующая политика будет иметь значение Unrestricted.

Для того что бы узнать значение политики выполнения скриптов для данной сесии, надо применить командлет  Get-ExecutionPolicy без параметров.

Get-ExecutionPolicy

Вывод: Unrestricted

Изменение политики выполнения скриптов PowerShell:

Что бы изменять значение политик выполнения скриптов PowerShell, существует коммандлет  Set-ExecutionPolicy.
Данный командлет имеет следующие параметры:

-ExecutionPolicy
Указывает значение политики. Может иметь следующие значения:  Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass, Undefined. Данный параметр обязательный для указания. Если не указан, во время выполнения комадлет попросит указать значения.

Вывод:
Укажите значения для следующих параметров:
ExecutionPolicy:

-Scope
Определяет область применения данной политики. Может иметь следующие значения: LocalMachine ,Process, CurrentUser. Если параметр области применения не указан, по умолчанию указывается значение LocalMachine.

 Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

или

 Set-ExecutionPolicy Unrestricted Process

-Force
С этим параметром командлет не будет требовать подтверждения со стороны пользователя. Например:

 Set-ExecutionPolicy Unrestricted Process -Force

Командлет ничего не выведет на экран и применит значение политики.

-Confirm
Если же вам наоборот мало одного подтверждения. Можно указать параметр Confirm и у вас будет ещё один, дополнительный, запрос на подтверждение ваших действий:

 Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -confirm

Результат выполнения:

Подтверждение
Вы действительно хотите выполнить это действие?
Выполнение операции «Set-ExecutionPolicy» над целевым объектом «Unrestricted».
[Y] Да — Y  [A] Да для всех — A  [N] Нет — N  [L] Нет для всех — L  [S] Приостановить — S  [?] Справка (значением по умолчанию является «Y»):

Изменение политики выполнения
Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить под угрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies. Вы хотите изменить политику выполнения?
[Y] Да — Y  [N] Нет — N  [S] Приостановить — S  [?] Справка (значением по умолчанию является «Y»):

-WhatIf
С параметром WhatIf командлет не выполняется. А выводит на консоль свои предполагаемые действия без данного параметра.

 Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -WhatIf

Результат выполниня:

  1.  WhatIf: Выполнение операции «Set-ExecutionPolicy» над целевым объектом «Unrestricted».
  2. Изменение параметров политики, при запуске консоли.
  3. Так же можно задать значение области применения Process при запуске консоли PowerShell c помощью параметра executionpolicy. Пример:

powershell.exe -executionpolicy Unrestricted

Get-ExecutionPolicy -list

Результат выполнения:

Scope ExecutionPolicy
—— —————
MachinePolicy Unrestricted
UserPolicy Undefined
Process RemoteSigned
CurrentUser AllSigned
LocalMachine Restricted
  • Изменение параметров политики запуска скриптов, с помощью групповых политик.
  • В груповой политике, параметр контролирующая запуск скриптов находиться по пути:
  • для MachinePolicy:
  • Computer Configuration/Policies/Administrative Templates/Windows Components/Windows PowerShell
  • или
  • Конфигурация компьютера/Административные шаблоны/Компоненты Windows/Windows PowerShell
  • для UserPolicy:
    User Configuration/Policies/Administrative Templates/Windows Components/Windows PowerShell
  • или
  • Конфигурация пользователя/Административные шаблоны/Компоненты Windows/Windows PowerShell
  • Параметр Execution Policy может принимать 3 значения:
ЗНАЧЕНИЕ ПАРАМЕТРА EXECUTION POLICY В ГРУППОВОЙ ПОЛИТИКИ ЗНАЧЕНИЕ ПАРАМЕТРА ОТОБРАЖАЮЩЕЕСЯ В GET-EXECUTIONPOLICY
Разрешить все скрипты. (Allow all scripts) Unrestricted
Разрешить локальные скрипты и удаленные подписанные скрипты. (Allow local scripts and remote signed scripts) RemoteSigned
Разрешить только подписанные скрипты. (Allow all scripts) AllSigned

Нашли ошибку в тексте? Выделите фрагмент текста и нажмите Ctrl+Enter

Источник: https://www.gotoadm.ru/start-powershell-script/

Как запустить скрипт PowerShell

  1. Запустите Windows PowerShell и подождите, пока не появится командная строка PS
  2. Перейдите в каталог, где находится сценарий

    PS> cd C:my_pathyada_yada (enter)

  3. Выполните скрипт:

    PS> .
    un_import_script.ps1 (enter)

Что мне не хватает??

Или: вы можете запустить скрипт PowerShell из cmd.exe следующим образом:

powershell -noexit «& «»C:my_pathyada_yada
un_import_script.ps1″»» (enter)

  • в соответствии с этим блогом здесь
  • Или вы можете даже запустить скрипт PowerShell из своего приложения на С# 🙂
  • Асинхронно выполнять сценарии PowerShell из вашего приложения С#

marc_s 09 янв. ’10 в 22:24

источник
поделиться

Если вы используете PowerShell 2.0, используйте параметр PowerShell.exe -File, чтобы вызвать сценарий из другой среды, например cmd.exe. Например:

Powershell.exe -File C:my_pathyada_yada
un_import_script.ps1

Keith Hill 09 янв. ’10 в 23:39

источник
поделиться

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

powershell [-noexit] -executionpolicy bypass -File

Chingiz Musayev 30 янв. ’11 в 22:23

источник
поделиться

Тип:

powershell -executionpolicy bypass -File .Test.ps1

ПРИМЕЧАНИЕ. Здесь Test.ps1 находится PowerShell script.

Sudheesh 05 февр. ’15 в 22:38

источник
поделиться

У меня была такая же проблема, и я попытался и попытался… Наконец, я использовал:

powershell.exe -noexit «& ‘c:DataScheduledScriptsShutdownVM.ps1’»

И поместите эту строку в пакетный файл, и это работает.

Dennis 08 мар. ’10 в 13:47

источник
поделиться

Если у вас есть только PowerShell 1.0, это, похоже, достаточно хорошо делает:

powershell -command — Он передает файл script в командную строку PowerShell.

AndyM 01 июл. ’10 в 9:32

источник
поделиться

Довольно легко. Щелкните правой кнопкой мыши файл .ps1 в Windows и в меню оболочки выберите «Выполнить с PowerShell».

electronictonic 23 авг. ’16 в 14:51

источник
поделиться

Использование файла cmd (BAT):

@echo off
color 1F
echo.

C:Windowssystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -File «PrepareEnvironment.ps1»

:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL

Если вам нужно запустить как администратор:

  • Сделайте ярлык, указывающий на командную строку (я назвал ее
    Административная командная строка)
  • Откройте свойства ярлыка и перейдите на вкладку Совместимость
  • В разделе «Уровень привилегий» установите флажок «Запустить эту программу в качестве администратора».

Kiquenet 17 нояб. ’14 в 9:04

источник
поделиться

  • Укажите путь к script, то есть настройку пути по cmd:
    $> . c:program fileprog.ps1
  • Запустите функцию точки входа PowerShell:
    Например, $> add or entry_func or main

pkm 16 июн. ’13 в 9:28

источник
поделиться

Если ваш script имеет имя с расширением .ps1 и вы находитесь в окне PowerShell, вы просто запустите ./myscript.ps1 (если файл находится в вашем рабочем каталоге).

Это правда для меня в любом случае в Windows 10 с PowerShell версии 5.1 в любом случае, и я не думаю, что я сделал что-либо, чтобы сделать это возможным.

rainabba 06 сент. ’16 в 19:58

источник
поделиться

Используйте параметр -File перед именем файла. Кавычки заставляют PowerShell думать, что это строка команд.

Engineer 01 авг. ’18 в 11:17

источник
поделиться

У меня есть очень простой ответ, который работает:

  1. Откройте PowerShell в режиме администратора
  2. Выполнить: set-executionpolicy unrestricted
  3. Откройте обычное окно PowerShell и запустите свой скрипт.

Я нашел это решение по ссылке, указанной в сообщении об ошибке:
О политиках выполнения

solstinger 17 сент. ’19 в 16:04

источник
поделиться

Источник: http://qaru.site/questions/15845/how-to-run-a-powershell-script

PowerShell Scripts (part 1) — Как надо писать скрипты

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

  • Скрипт не всегда состоит из функций, иногда скрипт выполняет какую-то довольно простую задачу, причем делает это в одну строку. Тогда, скорее всего, не следует сохранять его в отдельный файл, или оборачивать в функцию, лучше просто вписать его в строку аргументов планировщика заданий: 
  • -NoProfile -Command Get-VMIntegrationService -VMName * -Name ‘Time Synchronization’ | ? Enabled | Disable-VMIntegrationService -Passthru
  • Для начала покажу несколько популярных вариантов написания функций.

Основные конструкции:

1. Несколько примеров, как делать можно, но не нужно:

Function welcome ($name = ‘%UserName%’) {«Hello, $name»}

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

PS> welcome
Hello, %UserName%
PS>

Теперь запуск с аргументом:

PS> welcome Saw-Friendship
Hello, Saw-Friendship
PS>

Простые функции можно запускать еще так (но не следует):

PS> welcome(‘Saw-Friendship’)
Hello, Saw-Friendship
PS>

Не следует потому, что нужно стремиться к единому стилю кода, а этот вариант не работает, если в функцию передается больше одного аргумента

2. Лучше делать так:

Function welcome {
param ($name = ‘%UserName%’)
«Hello, $name»
}

Работает точно так же, поэтому обойдемся без примеров.

Расширенные функции:
  1. Используя конструкцию из последнего листинга, мы можем воспользоваться всеми возможностями расширенных функций.
  2. Это очень мощная штука, которую нужно освоить перед тем, как писать функции, работающие с конвейером, но, даже в простых задачах, они дают много плюсов, таких как проверка аргументов по различным критериям, подстановка значений по умолчанию и так далее.
  3. Представим, что нам нужна функция, умножающая 2 числа с проверкой по нескольким критериям:
  1. Числа должны быть целыми
  2. В диапазоне от -1000 до 1000
  3. значение не может быть пустым

Приведу 2 варианта:

Function multiplication {
param ($a,$b)
if (
($a -is [int] -and $b -is [int]) -and
($a -ne $null -and $b -ne $null) -and
($a -le 1000 -and $b -le 1000) -and
($a -ge -1000 -and $b -ge -1000)
) {
$a * $b
} else {
Write-Error -Message ‘аргументы должны быть целыми числами в диапазоне от -1000 до 1000’
}
}
Function multiplication {
[CmdletBinding()]
param (
[parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][ValidateRange(-1000,1000)][int]$a
,[parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][ValidateRange(-1000,1000)][int]$b
)
$a * $b
}

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

Правда пока я писал этот пример, обнаружился забавный нюанс: несмотря на проверку ValidateNotNullOrEmpty, значение может быть и $null и пустой строкой «», но это происходит из-за того, что оба эти варианта замечательно переводятся в тип [INT]

Получается, что даже это будет работать без ошибки

PS> multiplication $null »

PS>

О том, какие еще конструкции можно использовать, можно узнать, выполнив

Get-Help about_Functions_Advanced_Parameters

  • или через браузер
  • Но, как показывает практика, ссылки на MS очень ненадежные ????
  • Хочу отметить, что даже в простых функциях следует указывать имена параметров при передаче аргументов. Например так:

PS> multiplication -a 100 -b -100
-10000
PS>

  1. Может быть, также вы заметили атрибут CmdletBinding, и может даже пробовали обойтись без него и не заметили разницы, так вот я, честно признаюсь, тоже долго её не замечал, пока не начал активно использовать в скриптах Write-Verbose, и вот тогда это становится очень полезной штукой, но об этом чуть позже.
  2. Еще несколько полезных примеров:
  3. Представим, что мы хотим передавать в функцию число или строку, причем с проверкой на превышение значения, тогда мы пожем комбинировать проверки для разных типов

Function Int2PadString {
[CmdletBinding()]
param (
[parameter(Mandatory=$true)][ValidateNotNullOrEmpty()][ValidateRange(0,999)][String]$String
)
$String.PadLeft(3,’0′)
}

Результат такой:

PS> Int2PadString -String 1
001
PS>

Теперь добавим возможность передачи массива, изменив [String] на [String[]] и работы в конвейере, добавив ValueFromPipeline=$true
Примерно так:

Function Int2PadString {
[CmdletBinding()]
param (
[parameter(Mandatory=$true,ValueFromPipeline=$true)][ValidateNotNullOrEmpty()][ValidateRange(0,999)][String[]]$String
)
$String.PadLeft(3,’0′)
}

Передача массива работает

PS> Int2PadString -String (1..3)
001
002
003
PS>

Передача по конвейеру работает:

PS> 1 | Int2PadString
001
PS>

Но передача массива по конвейеру почему-то не работает!
Это происходит потому, что теперь нам нужен цикл и еще небольшое расширение стандартной конструкции — в неё нужно включить блоки Begin, Process и End
На практике редко используются сразу все эти блоки, но я настоятельно рекомендую их объявить, пусть они останутся пустыми, если не нужны:

Function Int2PadString {
[CmdletBinding()]
param (
[parameter(Mandatory=$true,ValueFromPipeline=$true)][ValidateNotNullOrEmpty()][ValidateRange(0,999)][String[]]$String
)

Begin {}
Process {
$String | ForEach-Object {$_.PadLeft(3,’0′)}
}
End {}

}

Отлично, теперь можно и массив отправить в конвейер:

PS> 1..3 | Int2PadString
001
002
003
PS>

Конвейер — очень большая тема, останавливаться за подробностями сейчас не буду, скажу только, что при передаче массива по конвейеру нельзя использовать блок Begin для данных, поступающих по конвейеру! Этот блок служит для предварительных вычислений внутри функции, которые необходимо произвести перед началом работы блока Process. А блок End на практике мне приходилось использовать несколько раз, то есть он почти никогда не используется ????

Передача аргументов

Итак всё это нас потихоньку подвело к теме передачи аргументов.

Я уже успел показать несколько вариантов:

  1. В скобках (похоже на перегрузку метода)
  2. Через именованные параметры
  3. По конвейеру
  • Теперь рассмотрим детальнее конвейерный вариант и Splatting, а также их комбинирование.
  • Часто возникает необходимость передать по конвейеру объекты без предварительной подготовки переменных и колдовства с Select-Object. Для этих целей мы можем воспользоваться магией расширенных функций, а именно ValueFromPipelineByPropertyName и alias
  • Сейчас придумаем какую-нибудь бесполезную функцию. Что может бесполезнее, чем обертка над базовой функцией, итак работающей в одну строку ????
  • Напишем обертку для изменения времени создания файла (подробный разбор класса [DateTime] был тут)

Function Set-ItemCreationTime {
[CmdletBinding()]
param (
[parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true)][alias(«PSPath»)][String[]]$Path
,[parameter(Mandatory=$true)][alias(«DateTime»)][DateTime]$CreationTime
)

Begin {}
Process {
$Path | ForEach-Object {
Set-ItemProperty -Path $_ -Name ‘CreationTime’ -Value $CreationTime -PassThru
}
}
End {}

}

Как я написал выше, здесь происходит несколько интересных вещей:

  1. ValueFromPipelineByPropertyName позволяет использовать свойство объекта, переданного через конвейер, как аргумент для именованного параметра
  2. У переданного объекта нет свойства Path, у него есть свойство PSPath, но в нашу функцию это свойство передается именно в параметр Path из-за того, что мы добавили нашему параметру Path параметр alias со значением PSPath. Такой вот забавный этот PowerShell, что и у параметров есть параметры ????

Я мог просто создать аргумент PSPath, но это некрасиво, а Path лучше для понимания, да и во многих командлетах он называется именно так.

Вот вам, кстати, подтверждение моих слов про свойство Path у файлов:

PS> ls C:Temp | Get-Member -Name Path
PS>
PS>
PS> ls C:Temp | Get-Member -Name PsPath
TypeName: System.IO.FileInfo
Name MemberType Definition
—- ———- ———-
PSPath NoteProperty string PSPath=Microsoft.PowerShell.CoreFileSystem::C:Temp1.txt
PS>

Таким образом мы можем обозвать параметр функции как нам угодно, но позволить принимать по конвейеру различные объекты. Это хорошо видно в моем скрипте Send-MagicPacket, который на вход по конвейеру принимает вывод разных командлетов: и Get-NetNeighbor и Get-DhcpServerv4Reservation и что-то еще ????

С конвейером вроде понятно, радости нет предела, что еще нужно? Splatting?

Да! Это очень нужная штука для передачи аргументов в функции.

Если его не использовать, то начинается колхоз со склеиванием команд из строк. типа такого:

PS> $str = ‘ls -path ‘ + ‘C: emp’
PS> if ($recurse) {$str += ‘ -recurse ‘}
PS>
PS> Invoke-Expression $str
Каталог: C: emp
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 08.02.2019 22:44 91 1.txt
PS>

  1. Так писать не нужно… Никогда…
    Потому что для этого уже придуман Splatting
  2. Я уже рассказывал о его практическом применении в статье PowerShell — Массовая загрузка данных в ActiveDirectory
  3. Но можно посмотреть и в официальной документации
  4. или через справку PowerShell

Get-Help about_Splatting

Нам всего лишь нужно создать хеш-таблицу с аргументами и передать её в функцию с помощью особого синтаксиса:

[HashTable]$Param = @{Path=’C: emp’;Recurse=$true}
ls @Param

Работает так же:

PS>
PS> [HashTable]$Param = @{Path=’C: emp’;Recurse=$true}
PS>
PS> ls @Param
Каталог: C: emp
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 08.02.2019 22:44 91 1.txt
PS>

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

PS> [HashTable]$Param = @{Path=’C: emp’;Recurse=$true}
PS>
PS> $Param.Include = ‘*.txt’
PS>
PS> ls @Param
Каталог: C: emp
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 08.02.2019 22:44 91 1.txt
PS>

  • Сейчас вроде бы всё, хотя есть вероятность, что я буду обновлять эту статью)
  • Спрашивайте, критикуйте, подписывайтесь!
  • В следующей статье вас ждут вредные советы о функциях

Источник: https://sawfriendship.wordpress.com/2019/03/16/ps_scripts_modules_profiles_1_1/

Выбираем среду разработки на PowerShell и пишем скрипты для Windows

Содержание статьи

В администрировании всегда есть место творчеству.

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

Пользователи UNIX и Linux, а с какого-то момента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.

Возвращаясь в Windows (а без этого иногда никак), понимаешь, что скрипты .bat хоть и хороши, но спасают не всегда: очень уж ограниченны их возможности. И если ты до сих пор считал, что PowerShell — это неведомая штуковина, ради которой нужно что-то там поднимать и настраивать, то не спеши с выводами — он, если разобраться, совсем неплох.

Windows PowerShell — это расширяемое средство автоматизации с открытыми исходниками, которое состоит из оболочки (командной строки) и скриптового языка. Впервые он был показан в 2003 году (тогда он назывался Monad). PowerShell 2.

0 вышел в составе Windows 7 и Windows Server 2008 R2 и с тех пор присутствует в Windows в качестве стандартного компонента. Его даже включили в Windows XP SP3. PowerShell построен на основе .NET Framework и интегрирован с ним.

PowerShell может обращаться к COM, WMI и ADSI, а также, конечно же, исполняет консольные команды.

В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдавать команды.

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

Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей.

«Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.

Теперь давай разберемся, где удобнее всего писать код. Можно, конечно, и в «Блокноте», Notepad++ или Sublime. Но это в данном случае не самый грамотный выбор редактора. Лучше всего начинать знакомство с PowerShell, вооружившись идущим в комплекте PowerShell ISE.

PowerShell ISE

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

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

Тем не менее у PowerShell ISE есть и достойные конкуренты. Один из них — Dell PowerGUI.

PowerGUI — это визуальное дополнение к PowerShell. Оно упрощает сборку собственных сценариев до выбора необходимых командлетов. Берешь то, что нужно для решения задачи, и перетаскиваешь части кода, пока не получишь скрипт.

Одна из главных фишек PowerGUI — это Power Packs, готовые скрипты, опубликованные сообществом пользователей и выложенные в свободный доступ. Тут есть и простенькие команды вроде добавления пользователей, и сложные — к примеру, управление свитчами и виртуальными машинами.

Все их легко дополнять и модифицировать в соответствии с нуждами.

powergui

PowerShell Studio 2015 фирмы Sapien — более продвинутая среда, которая рассчитана на совместную разработку одного проекта большим количеством участников.

Если ты когда-нибудь имел дело с Visual Studio, то, думаю, заметишь сходство.

Среди полезных фишек PowerShell Studio — панель Ribbon, поддержка удаленной отладки, а также функции компилятора, которые позволяют включить скрипты в исполняемые файлы. Есть поддержка разных версий PowerShell.

PowerShell Studio 2015

Стоит упомянуть и Script Browser для Windows PowerShell ISE. Это не среда разработки, но весьма интересный инструмент, разработанный в Microsoft. Script Browser открывает доступ к базе готовых скриптов, которые можно использовать в качестве образцов для написания своего кода. А еще эта штука умеет анализировать код, который ты пишешь, и подсказывает, как его улучшить.

Script Browser для Windows PowerShel

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Я уже участник «Xakep.ru»

Источник: https://xakep.ru/2016/12/06/powershell-scripts-examples/

Как запустить скрипт PowerShell — программирование

Как запустить скрипт PowerShell?

  • У меня есть скрипт с именем myscript.ps1
  • У меня установлены все необходимые рамки
  • Я установил эту политику выполнения вещь
  • Я следовал инструкциям на этой странице справки MSDN и я пытаюсь запустить его так: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1' (с или без --noexit)

который ничего не возвращает, кроме того, что имя файла выводится.

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

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

Что я делаю неправильно?

ОТВЕТЫ

Ответ 1
  1. Запустите Windows PowerShell и подождите, пока не появится командная строка PS
  2. Перейдите в каталог, где находится сценарий

    PS> cd C:\my_path\yada_yada\ (enter)
    
  3. Выполните скрипт:

    PS> .\run_import_script.ps1 (enter)
    

Что мне не хватает??

Или: вы можете запустить скрипт PowerShell из cmd.exe следующим образом:

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)

в соответствии с этим блогом здесь

Или вы можете даже запустить скрипт PowerShell из своего приложения на С# 🙂

Асинхронно выполнять сценарии PowerShell из вашего приложения С#

Ответ 2

Если вы используете PowerShell 2.0, используйте параметр PowerShell.exe -File, чтобы вызвать сценарий из другой среды, например cmd.exe. Например:

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1
Ответ 3

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

powershell [-noexit] -executionpolicy bypass -File <Filename>
Ответ 4

Тип:

powershell -executionpolicy bypass -File .\Test.ps1

ПРИМЕЧАНИЕ. Здесь Test.ps1 находится PowerShell script.

Ответ 5

У меня была такая же проблема, и я попытался и попытался… Наконец, я использовал:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

И поместите эту строку в пакетный файл, и это работает.

Ответ 6

Если у вас есть только PowerShell 1.0, это, похоже, достаточно хорошо делает:

powershell -command - < c:\mypath\myscript.ps1

Он передает файл script в командную строку PowerShell.

Ответ 7

Довольно легко. Щелкните правой кнопкой мыши файл .ps1 в Windows и в меню оболочки выберите «Выполнить с PowerShell».

Ответ 8

Самый простой способ — использовать PowerShell ISE, открывать сценарий, запускать и вызывать свой сценарий, функцию…

Ответ 9

Использование файла cmd (BAT):

@echo off
color 1F
echo.

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"

:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL

Если вам нужно запустить как администратор:

  • Сделайте ярлык, указывающий на командную строку (я назвал ее Административная командная строка)
  • Откройте свойства ярлыка и перейдите на вкладку Совместимость
  • В разделе «Уровень привилегий» установите флажок «Запустить эту программу в качестве администратора».
Ответ 10
  • Укажите путь к script, то есть настройку пути по cmd:

    $> . c:\program file\prog.ps1

  • Запустите функцию точки входа PowerShell:

    Например, $> add or entry_func or main

Ответ 11

Если вы хотите запустить сценарий PowerShell с помощью планировщика задач Windows, выполните следующие действия:

  1. Создать задачу

  2. Установите Program/Script на Powershell.exe

  3. Установите Arguments на -File "C:\xxx.ps1"

Это из другого ответа: Как автоматически выполнить сценарий PowerShell с помощью планировщика задач Windows?.

Ответ 12

Если ваш script имеет имя с расширением .ps1 и вы находитесь в окне PowerShell, вы просто запустите ./myscript.ps1 (если файл находится в вашем рабочем каталоге).

Это правда для меня в любом случае в Windows 10 с PowerShell версии 5.1 в любом случае, и я не думаю, что я сделал что-либо, чтобы сделать это возможным.

Ответ 13

Используйте параметр -File перед именем файла. Кавычки заставляют PowerShell думать, что это строка команд.

Ответ 14

У меня есть очень простой ответ, который работает:

  1. Откройте PowerShell в режиме администратора
  2. Выполнить: set-executionpolicy unrestricted
  3. Откройте обычное окно PowerShell и запустите свой скрипт.

Я нашел это решение по ссылке, указанной в сообщении об ошибке: О политиках выполнения

Выполнение сценариев отключено в этой системе powershell. Файл

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

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

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

Как открыть PowerShell?

Это можно сделать несколькими следующими способами:

  • — вы найдёте приложение в общем списке компонентов под буквой W.
  • При помощи поиска в Панели задач — откройте её, и введите слово PowerShell для поиска.
  • Используя меню «Выполнить» — запустите его через комбинацию Win+R и напишите название утилиты, после чего она будет найдена в системе.
  • В коммандере задайте действие PowerShell — но, вы должны знать, что будете работать с приложением через уже запущенную строку, а не в отдельном окне.
  • В параметрах Windows выберите «Свойства панели задач» и меню «Пуск». Во вкладке «Навигация» поставьте флажок на строке «Заменить командную строку оболочкой PowerShell…». Теперь вы сможете включать утилиту комбинацией Win+X.

Как писать и запускать скрипты?

Как создать скрипт PowerShell и запустить его? Это можно попросту сделать в блокноте — используя его, укажите в новом документе необходимые вам команды. После сохраните его, но поменяйте формат на.ps1 — именно такое расширение имеют файлы этой системной утилиты.

Писать скрипты в самом приложении можно так:

  • Запустите его.
  • Нажмите на пункт «Создать».
  • Или кликните на «Файл», и в появившемся списке выберите «Создать».
  • Напишите все команды, которые нужно выполнить, сохраните файл.

Скрипты ещё можно писать и редактировать в FAR Manager, но их нельзя использовать непосредственно в таком приложении, ведь оно отображает файлы этого типа через стандартную строку cmd. Однако прочие действия выполняются таким же образом, как и в «родной» утилите.

Запустить скрипт вы сможете таким образом:

  1. Зайдите в PowerShell от имени администратора.
  2. При помощи команд cd укажите месторасположение требуемого файла. Например, e: cd\ cd work .\ имя_файла. Ps1, или e: \work\ имя_файла.ps1
  3. В этом случае e: — имя жёсткого диска, где находится файл.
  4. Жмите Enter.

Программа обязательно покажет вам сообщение с текстом «Не удаётся загрузить файл ___ .Ps1, так как выполнение скриптов запрещено для этой системы…», когда вы будете первый раз запускать команду. Дело в том, что Windows оснащён защитой от вмешательства благодаря разработчикам, поэтому никто из пользователей по умолчанию не имеет доступа на выполнение таких действий. Но, это ограничение можно очень просто обойти.

Как? В тексте, возникающем вместе с ошибкой, будет рекомендация ввести команду get-help about_signing, чтобы получить больше информации. Вы можете выполнить эти указания, или использовать комбинацию Set-ExecutionPolicy remotesigned — после её ввода потребуется подтверждение, и ограничение будет снято.

Другие вопросы по пользованию

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

  1. Введите $PSVersionTable.
  2. Если это ни к чему не привело, значит, у вас версия 1.0 — для неё есть команда $host.version.
  3. В ином случае появится подробная информация о том, какая версия приложения установлена на ПК.

Ещё один вопрос, на который стоит дать ответ — как удалить PowerShell? Для этого потребуются такие действия:

  • Зайдите через Панель управления в меню установки и удаления программ.
  • Найдите ветку Microsoft Windows
  • Удалите обновление для компонента WindowsPowerShell (TM), следуйте инструкциям системы.

Теперь вы знаете всё о том, как писать и запускать скрипты PowerShell, сможете пользоваться такой командной строкой для многих операций в системе. Дополнительно вы всегда имеете возможность узнать версию этого продукта и даже частично удалить его — из-за того, что он установлен вместе с системными компонентами, полностью сделать это всё равно не получится. Посоветуем только быть аккуратным при выполнении всех подобных действий, чтобы не навредить компьютеру в целом.

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

Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.

Смотрим как ее решить.

PowerShell обладает рядом режимов исполнения, которые определяют, какой тип кода разрешается выполнять. Все это управляется ключом реестра, живущим в HKLM. Существует 4 различных режима исполнения:

Ограниченный (Restricted): Политика исполнения по умолчанию, не допускает работу скриптов и разрешает работу лишь интерактивных команд.

Все подписанные (All Signed): Допускает работу всех скриптов. Правда, все скрипты и файлы конфигурации должны быть подписаны издателем, которому вы доверяете; данный режим подвергает вас риску работы подписанных (но вредоносных) скриптов, после получения подтверждения доверия издателю.

Удаленные подписанные (Remote Signed): Локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.

Неограниченный (Unrestricted): Все скрипты и файлы конфигурации, полученные из коммуникационных приложений, вроде Microsoft Outlook, Internet Explorer, Outlook Express и Windows Messenger работают после подтверждения, что вы понимаете, что файл исходит из Интернета; никакие цифровые подписи не требуются; данный режим подвергает вас риску работу неподписанных, вредоносных скриптов.

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

Разрешить выполнение скриптов powershell

Чтобы запускать созданные собою скрипты, необходимо разрешить выполнение ненадежных скриптов с помощью команды Set-ExecutionPolicy remotesigned и подтверждением (Внимание!!! для выполнения этой команды необходимо запустить PowerShell с правами администратора). После этого можно вновь запустить выполнения скрипта.

На вопрос жмем Y, для разрешения выполнения скриптов. После этих манипуляций вы сможете запустить ваш скрипт.

PowerShell обладает рядом режимов исполнения, которые определяют, какой тип кода разрешается выполнять. Все это управляется ключом реестра, живущим в HKLM. Существует 4 различных режима исполнения:

Ограниченный (Restricted): Политика исполнения по умолчанию, не допускает работу скриптов и разрешает работу лишь интерактивных команд.

Все подписанные (All Signed): Допускает работу всех скриптов. Правда, все скрипты и файлы конфигурации должны быть подписаны издателем, которому вы доверяете; данный режим подвергает вас риску работы подписанных (но вредоносных) скриптов, после получения подтверждения доверия издателю.

Удаленные подписанные (Remote Signed): Локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.

Неограниченный (Unrestricted): Все скрипты и файлы конфигурации, полученные из коммуникационных приложений, вроде Microsoft Outlook, Internet Explorer, Outlook Express и Windows Messenger работают после подтверждения, что вы понимаете, что файл исходит из Интернета; никакие цифровые подписи не требуются; данный режим подвергает вас риску работу неподписанных, вредоносных скриптов.

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

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

Для изменения политики исполнения на неограниченную, запустите нижеследующую команду в административном PowerShell:

Set-ExecutionPolicy Unrestricted

Вы увидите запрос подтверждения. Нажмите Enter.

Теперь вы можете запустить скачанный скрипт. Однако, вы подвергаете себя серьезному риску, так что по окончании работы скрипта, не забудьте вернуть политику исполнения назад в ограниченный режим. Сделать это можно с помощью следующей команды:

Set-ExecutionPolicy Restricted

И снова вы увидите запрос подтверждения. Нажмите Enter.

Вот и все! Удачи вам!

Сведения, содержащиеся на этой странице, мы адресуем, прежде всего, пользователям Microsoft Internet Explorer 5.х и 6.х. — самых распространенных браузеров в сети Internet. Важно отметить, что наш сайт адекватно отображается и в других браузерах. Однако, на наш взгляд, сторонники Mozilla Firefox и Opera являются энтузиастами и знатоками передового программного обеспечения, а поэтому не нуждаются в советах по его настройке.

JavaScript это язык сценариев, позволяющих сделать интернет-страницу интерактивной, т.е. «умеющей общаться» с пользователем.

Сценарии JavaScript загружаются с интернет-сайта на компьютер пользователя и выполняются на нем. Этот факт порождает потенциальную угрозу для компьютера пользователя! Как и любой другой файл, загружаемый с незнакомого сайта, сценарий JavaScript может содержать исполняемый код, способный навредить пользователю – например, открыть несанкционированный доступ к его конфиденциальной информации. Именно поэтому в браузерах предусмотрена возможность отключения выполнения сценариев JavaScript.

К сожалению, ни один из современных браузеров не позволяет избирательно (как в случае с файлами «cookie») разрешать загрузку сценариев JavaScript только с определенных сайтов, запрещая это для всех остальных. Приходится смириться с тем, что для работы сценариев JavaScript настройку «Выполнять сценарии приложений Java» следует разрешить применительно ко всем сайтам сети Интернет.

Мы используем сценарии JavaScript для организации заполнения различных форм на нашем сайте (например, регистрационной формы), показа мини-подсказок по пользованию нашим сайтом, построения нашего меню и каталога продукции.

Настройка параметров безопасности сценариев JavaScript в Microsoft Internet Explorer 6.x

Настройка параметров безопасности сценариев JavaScript в Microsoft Internet Explorer 5.x

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

  1. Запустить оболочку PowerShell и в ней запустить скрипт (ввести путь до файла и имя файла, например, так: C:\Scripts\test.ps1, или перейти в папку скрипта командой cd C:\Scripts и запустить его командой.\test.ps1)Оболочку можно найти и запустить множеством способов. Один из способов — через меню «Пуск». Для Windows 7 — нужно зайти во «Все программы» — «Стандартные» — «Windows PowerShell» и запустить оболочку «Windows PowerShell». Для Windows 10 — нужно найти группу на букву «W» и в ней вы найдете «Windows PowerShell».
  2. Запустить «Интегрированную среду сценариев Windows PowerShell ISE» — это программа — среда разработки, позволяющая редактировать и отлаживать скрипты PowerShell, которая так же есть по-умолчанию вместе с самим PowerShell. Запустив ее, нужно просто нажать кнопку «Открыть» или зайти в меню Файл — Открыть и выбрать нужный скрипт, затем нажать F5 или кнопку «Выполнить скрипт».Найти Windows PowerShell ISE можно там же, где и оболочку PowerShell — в меню «Пуск».
  3. Запустить стандартную коммандную строку и в ней написать:
    powershell -file (пример: powershell -file myscript.ps1)

Если вы раньше не запускали скрипты PowerShell, то скорее всего, вы получите сообщение: Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений. Связано это с тем, что из соображений безопасности и недопущения случайного выполнения вредоносного кода, все скрипты должны быть подписаны цифровой подписью.

Как разрешить выполнение неподписанного скрипта PowerShell?

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

Set-ExecutionPolicy RemoteSigned -Scope Process

2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:

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

3. Разрешить запуск навсегда : запустить оболочку PowerShell от имени «Администратора», затем выполните команду:

Set-ExecutionPolicy RemoteSigned

Примечание: Если скрипт был загружен из интернета, то чтобы избежать запроса на подтверждение запуска, нужно вместо RemoteSigned использовать Bypass — полное отключение любых запросов и предупреждений.

Как запустить скрипт PowerShell в фоновом режиме?

Для этого достаточно использовать параметр запуска -WindowStyle, который может принимать значения: Normal, Minimized, Maximized и Hidden. Таким образом, чтобы запустить неподписанный скрипт в фоновом режиме, нужно выполнить команду:

powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file

Так же можно еще при желании добавить -NonInteractive, чтобы скрипт не задавал никаких вопросов. Таким образом, скрипт выполнится незаметно для пользователя. Будmте внимательны, используя такой способ.

Запуск скрипта PowerShell c параметрами

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

powershell -executionpolicy RemoteSigned -file param1 param2 «еще один текстовый параметр»

В самом скрипте вы можете получить эти параметры так:

Param ($var1, $var2, $var3) echo $var1, $var2, $var3

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

Как запустить скрипт PowerShell с помощью ярлыка?

Осуществить такую задачу можно двумя способами:

  1. Создать bat/cmd файл, в котором прописать команду для запуска скрипта (с параметрами вы ознакомились выше)
  2. Создать ярлык на PowerShell, который можно найти в папке c:\Windows\System32\WindowsPowerShell\v\ и в свойствах ярлыка в поле «Объект» дописать необходимые параметры.

Таким образом, например, чтобы запустить скрипт powershell при входе пользователя, можно просто создать ярлык, как описано во 2-м пункте и поместить его в автозагрузку. Так же, создание ярлыка одним из способов выше позволит легко запустить скрипт от имени администратора или от имени любого другого пользователя как обычную программу.

Скриптовый язык PowerShell — довольно мощный инструмент для решения различных задач, но его можно использовать не только для хороших вещей, но и во вред, поэтому, пользуйтесь им с умом;)

о PowerShell exe — PowerShell

  • Статья
  • 7 минут на чтение
  • 7 участников

Полезна ли эта страница?

да Нет

Любая дополнительная обратная связь?

Отзыв будет отправлен в Microsoft: при нажатии кнопки отправки ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

Представлять на рассмотрение

В этой статье

Краткое описание

Объясняет, как использовать интерфейс командной строки powershell.exe . Отображает параметры командной строки и описывает синтаксис.

Подробное описание

СИНТАКСИС

  PowerShell[.exe]
    [-PSConsoleFile <файл> | -Версия <версия>]
    [-Без логотипа]
    [-Выхода нет]
    [-ста]
    [-Мта]
    [-НетПрофиля]
    [-Неинтерактивный]
    [-InputFormat {Текст | XML}]
    [-Выходной Формат {Текст | XML}]
    [-WindowStyle <стиль>]
    [-EncodedCommand ]
    [-ConfigurationName <строка>]
    [-Файл - | <путь к файлу> <аргументы>]
    [-ExecutionPolicy ]
    [-Команда - | { <блок-скрипта> [-args <массив-аргументов>] }
                | { <строка> [<параметры команды>] } ]

PowerShell[.exe] -Справка | -? | /?
  

Параметры

-PSConsoleFile
<Путь к файлу>

Загружает указанный файл консоли PowerShell. Введите путь и имя файл консоли. Чтобы создать файл консоли, используйте командлет Export-Console в PowerShell.

-Версия
<Версия PowerShell>

Запускает указанную версию PowerShell. Допустимые значения: 2,0 и 3.0. Указанная вами версия должна быть установлена ​​в системе. Если Windows PowerShell 3.0 установлен на компьютере «3.0″ является версией по умолчанию. В противном случае «2.0» является версией по умолчанию. Дополнительные сведения см. в разделе Установка PowerShell.

-Без логотипа

Скрывает баннер копирайта при запуске.

-Без выхода

Не завершается после выполнения команд запуска.

— Стадия

Запускает PowerShell с использованием однопоточного апартамента. В Windows PowerShell 2.0, многопоточный апартамент (MTA) используется по умолчанию. В Windows PowerShell 3.0, однопоточный апартамент (STA) используется по умолчанию.

-Мта

Запускает PowerShell с использованием многопоточного апартамента. Этот параметр представлен в PowerShell 3.0. В PowerShell 2.0 многопоточность квартира (MTA) по умолчанию. В PowerShell 3.0 однопоточный квартира (STA) по умолчанию.

-Без профиля

Не загружает профиль PowerShell.

— Неинтерактивный

Не отображает интерактивную подсказку для пользователя.

-Формат ввода {текст | XML}

Описывает формат данных, отправляемых в PowerShell.Допустимые значения «Текст» (текстовые строки) или «XML» (сериализованный формат CLIXML).

-Формат вывода {Текст | XML}

Определяет формат выходных данных PowerShell. Допустимые значения «Текст» (текстовые строки) или «XML» (сериализованный формат CLIXML).

-WindowStyle
<стиль окна>

Задает стиль окна для сеанса. Допустимые значения: Нормальный, Минимальный, Развернутое и скрытое.

-EncodedCommand

Принимает строковую версию команды в кодировке base-64.Используйте этот параметр, чтобы отправлять в PowerShell команды, которые требуют сложных кавычек или фигурных брекеты. Строка должна быть отформатирована с использованием кодировки символов UTF-16LE.

— Имя_конфигурации
<строка>

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

-Файл — |
<аргументы>

Если значение File равно «-«, текст команды считывается со стандартного ввода.Запуск powershell -File - без перенаправления стандартного ввода запускает обычный сессия. Это то же самое, что вообще не указывать параметр File .

Если значением File является путь к файлу, сценарий выполняется в локальной области («точка-источник»), чтобы функции и переменные, создаваемые сценарием, доступны в текущем сеансе. Введите путь к файлу сценария и любой параметры. Файл должен быть последним параметром в команде.Все значения введенный после параметра File интерпретируется как путь к файлу сценария и параметры, переданные этому сценарию.

Параметры, передаваемые скрипту, передаются как литеральные строки после интерпретация текущей оболочкой. Например, если вы находитесь в cmd.exe и хотите передать значение переменной среды, вы должны использовать cmd.exe синтаксис: powershell.exe -Файл .\test.ps1 -TestParam %windir%

Напротив, работает powershell.exe -Файл .\test.ps1 -TestParam $env:windir в cmd.exe приводит к тому, что скрипт получает литеральную строку $env:windir потому что это не имеет особого значения для текущей оболочки cmd.exe . $env:windir стиль ссылки на переменную окружения может использоваться внутри Параметр команды , так как там он будет интерпретироваться как код PowerShell.

Точно так же, если вы хотите выполнить ту же команду из пакетного сценария , вы будет использовать %~dp0 вместо .\ или $PSScriptRoot для представления текущего каталог выполнения: powershell.exe -File %~dp0test.ps1 -TestParam %windir% . Если вместо этого вы использовали .\test.ps1 , PowerShell выдаст ошибку, потому что не удается найти буквальный путь .\test.ps1

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

Вы можете включить параметры и значения скрипта в значение файла параметр. Например: -Файл .\Get-Script.ps1 -Центральный домен

Обычно параметры переключения сценария либо включаются, либо опускаются. Например, следующая команда использует параметр All для Get-Script.ps1 файл сценария: -File .\Get-Script.ps1 -All

В редких случаях может потребоваться указать логическое значение для параметра.Невозможно передать явное логическое значение для параметра переключателя. при запуске скрипта таким образом. Это ограничение было снято в PowerShell 6. ( pwsh.exe ).

-ExecutionPolicy

Задает политику выполнения по умолчанию для текущего сеанса и сохраняет ее в $env:PSExecutionPolicyPreference переменная среды. Этот параметр делает не изменять политику выполнения PowerShell, установленную в реестре. Для информацию о политиках выполнения PowerShell, включая список допустимых значения, см. about_Execution_Policies.

-Команда

Выполняет указанные команды (и любые параметры), как если бы они были введены в командной строке PowerShell, а затем завершает работу, если только NoExit указан параметр.

Значением Команда может быть - , блок скрипта или строка. Если значение из Команда имеет вид - , текст команды считывается со стандартного ввода.

Параметр Command принимает блок скрипта для выполнения только тогда, когда он может распознать значение, переданное в Command , как тип ScriptBlock .Это возможно только при запуске powershell.exe с другого хоста PowerShell. Тип ScriptBlock может содержаться в существующей переменной, возвращенной из выражение или анализируется хостом PowerShell как литеральный блок скрипта, заключенный в фигурных скобках ( {} ) перед передачей в powershell.exe .

  powershell-Command {Get-WinEvent-LogName безопасность}
  

В cmd.exe нет такого понятия, как блок сценария (или ScriptBlock type), поэтому значение, переданное в Command , всегда будет строкой.Ты сможешь написать блок скрипта внутри строки, но вместо выполнения он будет вести себя точно так же, как если бы вы набрали его в типичном приглашении PowerShell, печатая содержимое блока сценария возвращается к вам.

Строка, переданная в Команда , по-прежнему выполняется как код PowerShell, поэтому фигурные скобки в блоке скрипта часто вообще не требуются, когда работает с cmd.exe . Чтобы выполнить блок встроенного скрипта, определенный внутри строка, оператор вызова и может быть б/у:

  пауэршелл.exe -Command "& {Get-WinEvent -LogName безопасность}"
  

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

При вызове из существующего сеанса PowerShell результаты возвращаются в родительскую оболочку как десериализованные объекты XML, а не живые объекты. Для других оболочках результаты возвращаются в виде строк.

Если значение Команда равно - , текст команды считывается из стандартного Вход.Вы должны перенаправить стандартный ввод при использовании параметра Command со стандартным вводом. Например:

  @'
"в"

"привет" |
  % { "$_ там" }

"вне"
'@ | powershell -NoProfile -Команда -
  

В этом примере выводится следующий результат:

  в
всем привет
вне
  

Код выхода процесса определяется статусом последней (выполненной) команды внутри блока сценария. Код выхода 0 , когда $? равно $true или 1 , когда $? это $false .Если последняя команда является внешней программой или PowerShell сценарий, который явно устанавливает код выхода, отличный от 0 или 1 , этот код выхода преобразуется в 1 для кода завершения процесса. Чтобы сохранить определенный код выхода, добавьте exit $LASTEXITCODE в вашу командную строку или блок сценария.

Аналогично, значение 1 возвращается, когда завершающий сценарий (завершающая выполнение) ошибка, например throw или -ErrorAction Stop . или когда выполнение прерывается с помощью Ctrl C .

-Помощь, -?, /?

Отображает справку для PowerShell.exe . Если вы вводите PowerShell.exe команда в сеансе PowerShell, перед параметрами команды следует поставить дефис (-), а не косая черта (/). Вы можете использовать дефис или косую черту в cmd.exe .

ПРИМЕЧАНИЯ

Примечание по устранению неполадок: в PowerShell 2.0 запуск некоторых программ из консоль PowerShell завершается с ошибкой LastExitCode из 0xc0000142.

ПРИМЕРЫ

  # Создайте новый сеанс PowerShell и загрузите сохраненный файл консоли
PowerShell-PSConsoleFile sqlsnapin.psc1

# Создать новый сеанс PowerShell V2 с вводом текста, выводом XML и без логотипа
PowerShell -Версия 2.0 -NoLogo -InputFormat text -OutputFormat XML

# Выполнение команды PowerShell в сеансе
PowerShell -Command "Get-EventLog -LogName безопасность"

# Запустить блок скрипта в сеансе
PowerShell -Command {Get-EventLog -LogName безопасность}

# Альтернативный способ запуска команды в новом сеансе
PowerShell -Command "& {Get-EventLog -LogName безопасность}"

# Чтобы использовать параметр -EncodedCommand:
$command = "каталог 'c:\program files'"
$ байт = [Система.Text.Encoding]::Unicode.GetBytes($команда)
$encodedCommand = [Преобразовать]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand
  

Как запустить скрипт Powershell из командной строки и передать каталог в качестве параметра

Как запустить скрипт Powershell из командной строки и передать каталог в качестве параметра

спросил

Просмотрено 430 тысяч раз

  PowerShell-команда .\Foo.ps1
  
  • Foo.ps1 :

      Функция Foo($directory)
    {
        эхо $директория
    }
    
    если ($args.Length -eq 0)
    {
        echo "Использование: Foo <каталог>"
    }
    еще
    {
        Фу($аргументы[0])
    }
      

    Несмотря на то, что Foo.ps1 находится в каталоге, откуда я вызываю Powershell, это приводит к:

      Термин '.\Foo.ps1' не распознается как имя командлета, функции, файла сценария или исполняемой программы.
    Проверьте правильность написания имени или, если был указан путь, убедитесь, что путь указан правильно, и повторите попытку. 
    • РЕДАКТИРОВАТЬ: не работал, потому что PowerShell менял каталог из-за profile.ps1 , содержащего cd C:\


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

спросил 5 дек. 2012 в 14:01

PolyfunPolyfun

9 28944 золотых знака3030 серебряных знаков3939 бронзовых знаков

1

попробуйте это:

  powershell "C:\Dummy Directory 1\Foo.ps1 'C:\Dummy Directory 2\File.txt'"
  

Добавить комментарий

Ваш адрес email не будет опубликован.