在 PowerShell 中创建日志文件
系统日志记录对于跟踪在我们的计算机上执行的操作的历史记录是必不可少的。
在某些脚本语言中有多种类型的日志记录。他们有自己的内置功能来跟踪开发中的日志记录。
不幸的是,默认情况下 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-Transcript
和 Stop-Transcript
cmdlet 以本机记录所有操作和输出。
相关文章
在 Windows PowerShell 中获取命令行参数
发布时间:2024/03/04 浏览次数:358 分类:编程语言
-
本文将解释我们如何使用 PowerShell 的参数函数处理命令行参数,参数如何工作,我们如何使用 PowerShell 参数将值传递给参数,以及定义参数的基本方法是什么。
Windows PowerShell 中的 Base64 编码
发布时间:2024/03/04 浏览次数:332 分类:编程语言
-
本文将展示如何编码和解码 base64 字符串。Windows PowerShell 当前版本没有本机命令,因此我们将向你展示如何执行此操作的替代方法。
在 Windows PowerShell 中写入输出
发布时间:2024/03/04 浏览次数:259 分类:编程语言
-
本文将向你展示如何在 Windows PowerShell 中编写或打印输出。本文还将区分多个 write cmdlet 并解释它们的意义。
在 Windows PowerShell 中设置 PATH 环境变量
发布时间:2024/03/04 浏览次数:350 分类:编程语言
-
本文将展示在 Windows PowerShell 中设置路径环境变量的正确方法。本文还展示了如何在持久性和非持久性方法中设置变量。
在 Windows PowerShell 中打印环境变量
发布时间:2024/03/04 浏览次数:869 分类:编程语言
-
本文将讨论什么是环境变量以及如何使用多个 Windows PowerShell 命令打印它们。
在 PowerShell 中注释代码
发布时间:2024/03/04 浏览次数:363 分类:编程语言
-
本文将展示在 Windows PowerShell 中注释代码的多种方法。本文还介绍了注释代码时的一些最佳实践。
在 PowerShell 中执行 LDAP 查询
发布时间:2024/03/04 浏览次数:304 分类:编程语言
-
本文将深入了解如何使用 Active Directory 过滤器和 LDAP 过滤器。