迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 PowerShell 中创建日志文件

作者:迹忆客 最近更新:2024/03/03 浏览次数:

系统日志记录对于跟踪在我们的计算机上执行的操作的历史记录是必不可少的。

在某些脚本语言中有多种类型的日志记录。他们有自己的内置功能来跟踪开发中的日志记录。

不幸的是,默认情况下 Windows PowerShell 没有打开日志记录。本文将向我们展示如何在运行脚本时创建和启用日志记录。


使用自定义 PowerShell 脚本将输出写入日志文件

我们可以使用简单的文本日志文件来控制运行和跟踪 PowerShell 脚本中的所有活动。此方法适用于调试错误或审核脚本操作。

如果我们想将 Windows PowerShell 命令结果写入文本日志文件,我们可以使用以下格式之一将 PS 结果重定向到文本文件:

示例代码:

Write-Output "Log Files are successfully created in $env:computername" >> C:\PS\Logs\TestLog1.txt
Add-Content -Path C:\PS\Logs\TestLog2.txt -Value "Log Files are successfully created in $env:computername"
"Log Files are successfully created in $env:computername" | Out-File -FilePath C:\PS\Logs\TestLog3.txt -Append

在所有情况下,这些片段都会在具有指定文本的文本文件中添加一个新行。

如果我们想覆盖我们的 TestLog.txt,我们可以使用 Set-Content cmdlet。但是,当我们想要设置之前脚本运行的历史记录时,这不是一个好习惯。

主要缺点是我们无法确定脚本何时将条目写入日志(发生事件)。

我们可以将当前时间戳添加到日志文件中。它将有助于识别我们何时运行脚本和特定事件。

我们可以在我们的 PowerShell 脚本中创建一个单独的函数,它将接收到的数据导出到一个文件中,并为每个事件添加时间戳以使其更方便。

示例代码:

$Logfile = "C:\PS\Logs\proccess_$env:computername.log"
function WriteLog{
    Param ([string]$LogString)
    $TimeLog = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
    $LogMessage = "$TimeLog $LogString"
    Add-Content $LogFile -value $LogMessage
}

如果我们想记录一些东西,然后调用 WriteLog 函数。

示例代码:

WriteLog "The script is running."
WriteLog "Calculating…"
Start-Sleep 20
WriteLog "The script is successfully executed."

现在我们可以在日志文件中看到每个条目的时间。

输出:

2022/01/20 18:16:36 The script is running.
2022/01/20 18:16:36 Calculating…
2022/01/20 18:16:56 The script is successfully executed.

在 PowerShell 中使用 Start-Transcript 将输出写入日志文件

PowerShell 具有本机脚本功能,可将执行的所有命令和 PowerShell 控制台中显示的输出保存到文本日志文件中。

Start-Transcript cmdlet 用于记录我们当前的 PowerShell 会话。

Start-Transcript

运行 cmdlet 后,将显示一条消息,显示记录了所有命令的输出的文件。

输出:

Transcript started, output file is C:\temp\PowerShell_transcript.LAPTOP01.8qaVt7PE.20220120183616.txt

如果我们选择将成绩单保存在其他位置,我们可以使用以下代码段指定文本文件的路径:

示例代码:

Start-Transcript -Append C:\PS\Logs\PSScriptLog.txt

-Append 选项表示脚本会将新会话记录到文件末尾。

运行一些将结果导出到控制台的 Windows PowerShell cmdlet。

例如,让我们导出当前机器上正在运行的服务列表:

Get-Service | Where-Object {$_.status -eq 'Running'}

使用以下 cmdlet 停止记录当前 PowerShell 会话:

Stop-Transcript

日志文件将显示在命令行中运行的 PowerShell 命令的完整历史记录,包括错误、警告和输出。调试复杂的 PowerShell 脚本时很方便。

你可以在 PowerShell 脚本中使用 Start-TranscriptStop-Transcript cmdlet 以本机记录所有操作和输出。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 PowerShell 中显示消息框

发布时间:2024/03/03 浏览次数:103 分类:编程语言

本文将讨论名为 Message Boxes 的 PowerShell GUI 的重要功能,我们将学习如何使用 PowerShell 编写和输出它们。

在 PowerShell 中输出信息性消息

发布时间:2024/03/03 浏览次数:74 分类:编程语言

本文将区分多个写入命令,例如写入信息、警告和错误消息,并提供我们可以在 PowerShell 中何时何地使用它们的情况。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便