当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 PowerShell 中使用 Start-Transcript

作者:精品下载站 日期:2024-12-14 03:42:33 浏览:12 分类:玩电脑

如何在 PowerShell 中使用 Start-Transcript


自动运行 PowerShell 脚本时,您将需要一种方法来记录发生的任何错误或警告。一种选择是创建自己的日志函数,但还有一种更简单的方法,即 Start-Transcript cmdlet。

Start-Transcript cmdlet 将会话期间发生的所有情况写入日志文件。这些是您在 PowerShell 会话中输入的命令以及通常出现在控制台中的所有输出。您可以在正常的 PowerShell 会话期间使用它,但它对于创建日志文件更有用。

在本文中,我们将了解如何使用 Start-Transcript cmdlet。

在 PowerShell 中使用 Start-Transcript

PowerShell 中的 Start-Transcript cmdlet 使用起来非常简单。它只带有几个参数,默认情况下,您甚至不必指定文件路径。

-Path

转录(日志)文件的位置

-Append

将内容附加到现有文件

-Force

使用只读标志覆盖文件

-NoClobber

防止覆盖现有文件

-IncludeInvocationHeader

将时间戳添加到日志文件中的命令

-UseMinimalHeader

前置一个短标头而不是完整标头 (PS6+)

-OutputDirectory

指定输出目录(文件名将自动创建)

在 PowerShell 中使用 Start-Transcript cmdlet 有两种方法。您可以在 PowerShell 会话中启动脚本或将其包含在脚本中。

如果没有任何参数,记录将保存在用户的文档文件夹中。文件名将自动生成,由设备名称、随机字符和时间戳组成。

c:\users\name\documents\PowerShell_transcript.DEVICENAME.qp9EOTN2.20220301132612.txt

当两个 PowerShell 会话同时启动时,随机字符可确保文件名是唯一的。

要启动转录,我们只需使用 cmdlet Start-Transcript 即可。然后,在执行完要运行的脚本后,我们可以使用 Stop-Transcript 停止转录。

[玩转系统] 如何在 PowerShell 中使用 Start-Transcript

脚本还将包含您在控制台中看到的所有信息,包括非常详细的标题,其中包含您所使用的主机的信息:

[玩转系统] 如何在 PowerShell 中使用 Start-Transcript

路径和输出目录

当您仅在自己的计算机上使用 PowerShell 时,默认路径非常有用。但大多数时候您希望集中日志文件。有两个选项,我们可以使用 -Path 参数或 -OutputDirectory 参数。

对于路径,我们需要指定完整路径,包括文件名。当您希望脚本有一个日志文件并将所有记录附加到一个文件中时,这非常有用。

# Append the transcript to a mfastatus-result.log file.
Start-Transcript -Path c:\logfiles\mfastatus-result.log -Append

# Or use -NoClobber to prevent overwriting of existing files
Start-Transcript -Path c:\logfiles\mfastatus-result.log -NoClobber

您还可以使用不带附加的 -path 参数,但请记住,默认情况下 Start-Transcript 参数将覆盖文件中的任何现有内容。

另一种选择是使用 -OutputDirectory 参数。这样我们就可以指定要存储日志文件的目录,并允许 cmdlet 创建唯一的文件名。

Start-Transcript -OutputDirectory c:\temp\logfiles

# Result:
Transcript started, output file is c:\temp\logfiles\PowerShell_transcript.WIN11-LAB02.uftVAXsv.20220301045218.txt

最小标题

每个转录本都以完整详细的标题开头,其中包含有关主机的信息。当使用它来记录自动运行的脚本时,此信息有点太多了。在 PowerShell 6 及更高版本中,我们可以使用参数 -UseMinimalHeader 来实现此目的。

这会将标头信息限制为仅记录开始时的时间戳:

Start-Transcript -OutputDirectory c:\temp\logfiles -UseMinimalDeader

# Start of transcript with minimalheader
**********************
PowerShell transcript start
Start time: 20220301135543
**********************

包含调用标头

调用标头包括记录中每个步骤或命令之前的时间戳。当您有一个需要一些时间才能运行的大型脚本时,这尤其有用。

Start-Transcript -OutputDirectory c:\temp\logfiles -IncludeInvocationHeader

**********************
Transcript started, output file is c:\temp\logfiles\PowerShell_transcript.WIN11-LAB02.VKwZ2RF5.20220301050111.txt
**********************
Command start time: 20220301050122 
**********************
PS C:\> .\Temp\Test-SMTP.ps1

在 PowerShell 脚本中使用 Start-Transcript

除了从 PowerShell 终端手动启动脚本之外,您当然还可以在脚本中包含 cmdlet。只需使用 Start-Transcript 启动 PowerShell 脚本,并使用 Stop-Transcript 结束脚本:

Start-Transcript -OutputDirectory c:\temp\Logfiles -UseMinimalHeader

# Your script here

Stop-Transcript

总结

当您调试自动运行的新脚本时,Start-Transcript cmdlet 是一个很好的工具。就我个人而言,我不太使用它,我更喜欢将日志函数与 Try-Catch 块相结合,例如在脚本内部,以实现更好的错误处理。

当您想要使用脚本查看命令历史记录时,请记住,您还可以使用 PowerShell 中的 Get-History cmdlet。这将显示您在 PowerShell 会话期间输入的所有命令。

如果您有任何疑问,请在下面发表评论。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯