我有以下目录结构:
C:\用户X \ A \蝙蝠
C:\用户X \ B \蝙蝠
C:\用户X \ C \蝙蝠
并且在每个Bat目录中有2个批处理文件StartClient.bat和StartServer.Bat
我想要一个powershell函数,我可以传递包含目录名[A,B]的字符串数组,然后在每个目录中调用服务器批处理文件,然后是客户端批处理文件并保存服务器的任何输出批处理文件到server.log,从客户端到client.log。
我对powershell很新,非常感谢任何帮助。
答案 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'