Я пытаюсь запустить этот скрипт в PowerShell. Я сохранил приведенный ниже скрипт как ps.ps1
на рабочем столе.
$query = "SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2"
Register-WMIEvent -Query $query -Action { invoke-item "C:\Program Files\abc.exe"}
Я сделал пакетный скрипт для запуска этого скрипта PowerShell
@echo off
Powershell.exe set-executionpolicy remotesigned -File C:\Users\SE\Desktop\ps.ps1
pause
Но я получаю эту ошибку:
./
и с исполняемым флагом в Unix.Я объясняю, почему вы хотите вызывать скрипт PowerShell из командного файла, и как это сделать в моем блоге здесь .
Это в основном то, что вы ищете:
И если вам нужно запустить скрипт PowerShell от имени администратора, используйте это:
Вместо того чтобы жестко программировать весь путь к сценарию PowerShell, я рекомендую поместить пакетный файл и файл сценария PowerShell в один каталог, как описано в моем сообщении в блоге.
источник
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass Invoke-WebRequest https://www.example.com/example.ics -OutFile C:\_my\script.ics' -Verb RunAs}";
илиpowershell -Command "Invoke-WebRequest https://www.example.com/example.ics -OutFile c:\_my\file.ics"
, или с помощью параметра -File для того же в файле .ps1, или(New-Object Net.WebClient).DownloadFile
. Любые идеи?Если вы хотите запустить из текущего каталога без полного пути, вы можете использовать:
источник
Если вы запускаете командный файл с именем PowerShell от имени администратора, вам лучше запустить его следующим образом, избавив вас от всех проблем:
Лучше использовать
Bypass
...источник
Если вы хотите запустить несколько скриптов, вы можете использовать
Set-executionpolicy -ExecutionPolicy Unrestricted
и затем выполнить сброс с помощьюSet-executionpolicy -ExecutionPolicy Default
.Обратите внимание, что политика выполнения проверяется только тогда, когда вы запускаете ее выполнение (или так кажется), и поэтому вы можете запускать задания в фоновом режиме и немедленно сбрасывать политику выполнения.
источник
Другой простой способ выполнить скрипт ps из пакета - это просто включить его между ECHO и символами перенаправления (> и >>), например:
Последняя строка удаляет созданный временный файл.
источник
Если ваш сценарий входа в PowerShell запускается через 5 минут (как у меня) на сервере 2012 года, на сервере есть параметр GPO - «Настройка сценария входа с задержкой», параметр по умолчанию «не настроен», это оставит 5-минутную задержку перед запуском сценария входа.
источник
Небольшой образец test.cmd
источник