我有一个遍历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
并没有允许您停止特定文件的开关。
也许有不同的方法吗?
答案 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