Функция Powershell для вызова набора команд из разных каталогов и сохранения их вывода в файл - PullRequest
2 голосов
/ 24 января 2011

У меня следующая структура каталогов:

C: \ UserX \ A \ Bat
C: \ UserX \ B \ Bat
C: \ UserX \ C \ Bat

и в каждом каталоге Bat есть 2 пакетных файла StartClient.bat и StartServer.Bat

Мне нужна функция powershell, чтобы я мог передавать массив строк, содержащий имена каталогов [A, B], а затем в каждом каталоге вызывать пакетный файл сервера, а затем клиентский пакетный файл и сохранять любые выходные данные с сервера. пакетный файл для server.log и от клиента до client.log.

Я довольно новичок в powershell, и любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 24 января 2011

Вы можете попробовать что-то вроде этого:

"A", "B" | %{
    & "C:\UserX\$_\StartServer.bat" >> server.log
    & "C:\UserX\$_\StartClient.bat" >> client.log }

Пояснение:

Передайте ваш список имен команде foreach (псевдоним%). Для каждого элемента в списке выполните каждый скрипт bat. $_ будет заменен текущим аргументом итератора в конвейере (то есть «A», затем «B»). Затем оператор перенаправления (>>) добавляет вывод в файл журнала.

Чтобы превратить это в функцию, просто создайте функцию, которая принимает список в качестве аргумента:

function Start-ClientAndServer($items)
{

    $items | %{
        & "C:\UserX\$_\StartServer.bat" >> server.log
        & "C:\UserX\$_\StartClient.bat" >> client.log 
    }
}
0 голосов
/ 24 января 2011

Полагаю, вы ищете '> команду <| out-file -append '</p>

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