Ниже приведен метод, который я бы посоветовал вам попробовать:
@If Exist "C:\ProgramData\MyScripts\*.ps1" For %%A In (
"C:\ProgramData\MyScripts\*.ps1"
)Do @Powershell -NoP -NoL -Ex Bypass -W Hidden -F "C:\ProgramData\MyScripts\%%A"
Я отфильтровал, чтобы обеспечить синтаксический анализ только .ps1
файлов, , чтобы исключить запуск любых сценариев не PowerShell .Я также изменил расположение файлов для запуска, поскольку оказалось, что вы анализируете файлы в одном каталоге, C:\ProgramData\MyScripts
, но пытаетесь запустить их в другом, C:\ProgramData\Scripts
.
. Обратите внимание, что этоне будет запускать все файлы в каталоге, те, которые, например, скрыты, не будут проанализированы.Для этого вам лучше использовать цикл For /F
и выбирать файлы с помощью команды Dir
:
@For /F Delims^=^ EOL^= %%A In ('
Dir /B/A-D-L "C:\ProgramData\MyScripts\*.ps1" 2^>Nul
')Do @Powershell -NoP -NoL -Ex Bypass -W Hidden -F "C:\ProgramData\MyScripts\%%A"
Пожалуйста, примите во внимание, что каждый скрипт будет запускаться послепредыдущий закончился, если вы хотите запустить каждый сразу после начала предыдущего, я бы предложил вам открыть окно командной строки и взглянуть на справочную информацию, выводимую из Start /?
, для способа сделать это.