【问题标题】:Powershell start transcript errorPowershell 启动脚本错误
【发布时间】:2016-05-05 21:19:09
【问题描述】:

我正在从一个批处理文件运行一个 powershell 脚本:

try {
  Start-Transcript -path ("C:\PS\Logs\XXXX_Session_QA_" + (Get-Date).tostring("yyyyMMdd-hhmmss-tt") + ".txt")

  <Rest of the Code>
}
catch {
  stop-transcript
}

每次我运行脚本时,我都会看到错误

错误:尚未开始转录。使用 start-transcript 命令开始转录。

我浏览了之前的部分或大部分帖子,代码应该可以工作,但根本没有触发。也没有创建初始日志文件。知道为什么会发生这种情况或有任何帮助吗?

【问题讨论】:

  • 我建议您不要在所有代码周围放置一个try{}。将try{} catch{} 限制为特定命令,并将处理放在catch{} 块中仅针对该命令。否则,您无法判断代码的哪一部分失败并触发了catch{} 逻辑。

标签: windows powershell scripting try-catch transcription


【解决方案1】:

您尝试将脚本写入的位置是否存在文件夹结构?根据文档,它是必需的(见下面的斜体):

-路径

指定脚本文件的位置。输入 .txt 的路径 文件。不允许使用通配符。如果不指定路径, Start-Transcript 使用 $Transcript 全局值中的路径 多变的。如果您尚未创建此变量,则 Start-Transcript 将成绩单存储在 $Home\My Documents 目录中 \PowerShell_transcript..txt 文件。

如果路径中的任何目录不存在,则命令失败。

https://technet.microsoft.com/library/05b8f72c-ae3b-45d5-95e0-86aa1ca1908a(v=wps.630).aspx

当然,您还需要获得写入该路径的权限。

所以...如果 Start-Transcript cmdlet 抛出错误,那么您将在 catch{} 块(不可见)中捕获它,然后执行 Stop-Transcript

这大概是实际导致错误消息的原因:最终结果是您试图停止转录,而实际上它从未开始。

【讨论】:

  • 谢谢查理。那讲得通。我更改了目录路径,它确实有效。我假设运行脚本的帐户也有权限,这是错误的。我尝试了其他所有方法,除了更改它,因为它通过我的帐户成功写入文件夹。
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 2010-12-20
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多