2015-01-08 2 views
2

У меня есть серия файлов ps1 в каталоге, все из которых имеют разные имена. Я пытаюсь запустить их один за другим с Start-Process и параметром -Wait. Как проходит через все файлы в каталоге и запускает один сценарий PowerShell за другим? Вложенных папок нет, и нет файлов, которые не относятся к типу ps1.Запуск всех сценариев PowerShell в каталоге

Вот мой старт:

$DirectoryList = Get-Content -Path C:\test 
foreach ($Directory in $DirectoryList) { 
    Start-Process -FilePath powershell.exe -ArgumentList ('"{0}\How To Read Me.ps1" -Path "{1}"' -f $PSScriptRoot, $Directory); 
} 

ответ

12

Вы могли бы просто использовать call operator (&):

Get-ChildItem 'C:\test' | ForEach-Object { 
    & $_.FullName 
} 
+5

Ansgars ответ делает трюк, но я просто хочу подчеркнуть, (очевидно, для некоторых, но, конечно, не все), что очень важно иметь полный контроль над путём и все в нем, прежде чем перебирать и выполнять каждый отдельный файл, чтобы не запускался вредоносный код. – notjustme

+2

'Get-ChildItem | % {& $ _. FullName} 'Это запустит все в вашем текущем каталоге. –

Смежные вопросы