在Powershell中启动多个笔录

时间:2019-11-19 10:38:04

标签: powershell

我有一个遍历CSV文件并为文件中的每一行创建一个AD用户的脚本。我想为整个主作业提供第一笔成绩单,并为创建用户的每个循环提供单独的第二笔成绩单。

它可能看起来像这样:

start transcript MASTER
    import CSV file
    foreach line in CSV file
    start transcript UserX
        create the user
    stop transcript userX
stop transcript MASTER

在Powershell中,这种行为(“嵌套”抄本中的抄本)是否可能? Start-Transcript命令允许您将文件保存到特定的-Path,但是Stop-Transcript并没有允许您停止特定文件的开关。

也许有不同的方法吗?

2 个答案:

答案 0 :(得分:2)

仅进行了一些测试,就不能停止特定的测试,但是可以使用Start-Transcript开始多个笔录。 Stop-Transcript将停止最近启动的笔录。我在这里测试了这段代码:

Start-Transcript -Path log1.log
"cool"
Start-Transcript -Path log2.log
'hello
neato'
Stop-Transcript -?
Stop-Transcript # stops the log2.log transcript
Stop-Transcript # stops the log1.log transcript

可能不是您想要听到的,但是我能够通过此测试确定任何“父”笔录将捕获子笔录的输出。因此,log2.log仅包含“ hello neato”和Stop-Transcript的帮助对话框,而log1.log也包含此内容及其自身的输出。


如果要向文件和管道同时输出不同操作的结果,请read up on how redirection works并利用Tee-Object同时输出到管道和文件。 / p>

答案 1 :(得分:0)

仅供以后参考,我留下了更完整的代码来演示用户循环之前,之中和之后的日志记录。感谢Bender the Greatest提供的解决方案。

Start-Transcript -Path "C:\logs\master_job.txt"
Write-Host "this is the maine program"
Write-Host "starting to work on users..."

foreach ($user in (1..10))
{
Write-Host "`n`n"
Start-Transcript -Path "C:\logs\user$user.txt"
Write-Host "working on user number $user"
Write-Host "adding more values to User $user"
Stop-Transcript
}

Write-Host "`n`ndoing some work after working on all users"
Write-Host "even more work"

Stop-Transcript