Start-Transcript

在文本文件中创建某个 PowerShell 会话的全部或部分的记录。

语法

Start-Transcript
     [[-Path] <String>]
     [-Append]
     [-Force]
     [-NoClobber]
     [-IncludeInvocationHeader]
     [-UseMinimalHeader]
     [-WhatIf]
     [-Confirm] 
     [<CommonParameters>]
Start-Transcript
     [[-LiteralPath] <String>]
     [-Append]
     [-Force]
     [-NoClobber]
     [-IncludeInvocationHeader]
     [-UseMinimalHeader]
     [-WhatIf]
     [-Confirm] 
     [<CommonParameters>]
Start-Transcript
     [[-OutputDirectory] <String>]
     [-Append]
     [-Force]
     [-NoClobber]
     [-IncludeInvocationHeader]
     [-UseMinimalHeader]
     [-WhatIf]
     [-Confirm] 
     [<CommonParameters>]

说明

Start-Transcript cmdlet 在文本文件中创建某个 PowerShell 会话的全部或部分的记录。 该脚本包括用户键入的所有命令和在控制台上显示的所有输出。

默认情况下, Start-Transcript 使用默认名称将脚本存储在以下位置:

  • 在 Windows 上:$HOME\Documents
  • 在 Linux 或 macOS 上: $HOME

默认文件名为 PowerShell_transcript.<computername>.<random>.<timestamp>.txt.

从 Windows PowerShell 5.0 开始,Start-Transcript 在所有脚本的已生成文件名中包含主机名。 文件名还包含名称中的随机字符,以防止同时启动两个或多个脚本时发生覆盖或重复。 如果将脚本存储在集中位置,则包括计算机名称非常有用。 随机字符串可防止猜测文件名以获取对文件的未经授权的访问。

如果目标文件没有字节顺序标记 (BOM),则 Start-Transcript 在目标文件中默认为 Utf8NoBom 编码。

示例

示例 1:在使用默认设置的情况下启动脚本文件

Start-Transcript

此命令将启动默认文件位置中的脚本。

示例 2:在特定位置启动脚本文件

Start-Transcript -Path "C:\transcripts\transcript0.txt" -NoClobber

此命令在 C:\transcriptsTranscript0.txt 文件中启动脚本。 NoClobber 参数可防止覆盖任何现有文件。 如果 Transcript0.txt 文件已存在,该命令将失败。

示例 3:启动具有唯一名称的脚本文件,并将其存储在文件共享中

以下示例创建一个脚本文件,该文件的名称唯一性非常充分,使得该文件可以存储在一个共享位置。 该文件名基于用户名、运行 PowerShell 的计算机的主机名、PowerShell 的版本以及日期和时间构造。 脚本存储在 \\Server01\Transcripts 文件共享中。

$sharepath  = '\\Server01\Transcripts'
$username   = $env:USERNAME
$hostname   = hostname
$version    = $PSVersionTable.PSVersion.ToString()
$datetime   = Get-Date -f 'yyyyMMddHHmmss'
$filename   = "Transcript-${username}-${hostname}-${version}-${datetime}.txt"
$Transcript = Join-Path -Path $sharepath -ChildPath $filename
Start-Transcript

脚本文件的完整路径存储在 $Transcript 首选项变量中。 有关 $Transcript 首选项变量的信息,请参阅 about_Preference_Variables

参数

-Append

指示此 cmdlet 将新脚本添加到现有文件末尾。 使用 Path 参数指定文件。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

提示你在运行 cmdlet 之前进行确认。

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

允许 cmdlet 将该脚本追加到现有的只读文件。 在只读文件上使用时,该 cmdlet 会将文件权限更改为读写。 使用此参数时,cmdlet 无法覆盖安全限制。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeInvocationHeader

指示此 cmdlet 记录命令运行时的时间戳。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

指定脚本文件的位置。 与 Path 参数不同,LiteralPath 参数的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

Type:String
Aliases:PSPath, LP
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoClobber

指示此 cmdlet 不会覆盖现有文件。 默认情况下,如果脚本文件存在于指定的路径中,则 Start-Transcript 将会覆盖文件而不发出警告。

Type:SwitchParameter
Aliases:NoOverwrite
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OutputDirectory

指定要在其中保存脚本的特定路径和文件夹。 PowerShell 会自动分配脚本名称。

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

指定脚本文件的位置。 输入 .txt 文件的路径。 不允许使用通配符。 如果该路径中的任何目录不存在,命令将失败。

如果未指定路径,则 Start-Transcript 会使用 $Transcript 全局变量的值中的路径。 如果尚未创建此变量, Start-Transcript 请将脚本存储在默认位置和文件名中。

Type:String
Position:0
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseMinimalHeader

在脚本前面添加一个简短头,而不是默认包含的详细头。 此参数已在 PowerShell 6.2 中添加。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

String

此 cmdlet 将返回一个字符串,其中包含一条确认消息和输出文件的路径。

备注

若要停止脚本,请使用 Stop-Transcript cmdlet。

若要记录整个会话,请将 Start-Transcript 命令添加到配置文件中。 有关详细信息,请参阅 about_Profiles