Powershell函数用于调用来自不同目录的一组命令并将其输出保存到文件中

时间:2011-01-24 19:07:11

标签: powershell

我有以下目录结构:

C:\用户X \ A \蝙蝠
C:\用户X \ B \蝙蝠
C:\用户X \ C \蝙蝠

并且在每个Bat目录中有2个批处理文件StartClient.bat和StartServer.Bat

我想要一个powershell函数,我可以传递包含目录名[A,B]的字符串数组,然后在每个目录中调用服务器批处理文件,然后是客户端批处理文件并保存服务器的任何输出批处理文件到server.log,从客户端到client.log。

我对powershell很新,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

"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 
    }
}

答案 1 :(得分:0)

我相信你正在寻找'&gt;命令&lt; | out-file -append'