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

[玩转系统] PowerShell - 写入日志文件 [4 种方法]

作者:精品下载站 日期:2024-12-14 05:25:07 浏览:16 分类:玩电脑

PowerShell - 写入日志文件 [4 种方法]


[玩转系统] PowerShell - 写入日志文件 [4 种方法]

使用成绩单

要使用 Transcript 写入日志文件:

  • 使用 Start-Transcript cmdlet 开始写入日志文件。
  • 正常执行操作而不向文件写入任何内容。
  • 使用 Stop-Transcript 停止转录。

使用成绩单:

Start-Transcript "D:\Logs\output.log" -Append
2+2
Write-Output "Logging..."
Stop-Transcript
Get-Content "D:\Logs\output.log"

输出 :

Transcript started, output file is D:\Logs\output.log
4
Logging...
Transcript stopped, output file is D:\Logs\output.log
**********************
Windows PowerShell transcript start
Start time: 20230105232520
Username: DESKTOP-N506T20\user
RunAs User: DESKTOP-N506T20\user
Configuration Name:
Machine: DESKTOP-NAME (Microsoft Windows NT 10.0.19045.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 22800
PSVersion: 5.1.19041.2364
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.19041.2364
BuildVersion: 10.0.19041.2364
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is D:\Logs\output.log
PS C:> 2+2
4
PS C> Write-Output "Logging..."
Logging...
PS C> Stop-Transcript
**********************
Windows PowerShell transcript end
End time: 20230105232537
**********************

脚本是 PowerShell 会话生成的所有命令和输出的保存记录。它对许多目的都有帮助,例如:

  • 创建 PowerShell 会话的记录。
  • 与他人分享您的工作。
  • 通过创建稍后运行的自动化脚本来自动化任务。
  • 记录 PowerShell 会话的活动。

要在 PowerShell 中使用脚本,我们可以使用 Start-Transcript cmdlet 指定文件来启动脚本,运行要包含在脚本中的命令,然后使用 Stop-Transcript cmdlet 停止脚本。成绩单保存到我们指定的文件中。

例如,我们使用 Start-Transcript cmdlet 开始将日志写入文件。然后我们执行一些虚拟命令来检查脚本是否将它们写入文件。启动转录后,我们可以使用任何命令、脚本或 cmdlet。为了停止转录,我们使用了 Stop-Transcript cmdlet。

使用 Add-Content Cmdlet

要使用 Add-Content cmdlet 写入日志文件:

  • 定义一个函数write_logFile,它将日志文件的名称和内容作为参数。
  • 使用Get-Date 获取当前日期和时间,并使用to-String() 类将其转换为字符串。
  • 使用 Add-Content cmdlet 将日志消息写入文件。
  • 使用 Get-Content cmdlet 检查日志文件是否包含日志消息。

使用添加内容 Cmdlet:

function write_logFile{
    Param ([string]$log_file, $log_message)
    $time_stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
    $log_message += $time_stamp
    Add-content $log_file -value $log_message
}
write_logFile -log_file "D:\Logs\output.log" -log_message "Writing to the log file at "
Get-Content "D:\Logs\output.log"

输出 :

Writing to log the file at 2023/01/05 21:44:58

我们创建了一个函数 write_logFile,它接受 log_filelog_message 作为参数。在函数内部,我们使用 Get-Date cmdlet,根据参数和格式选项以多种格式获取当前日期和时间。

ToString() 方法允许我们指定日期和时间的字符串表示形式。我们可以使用 ToString() 方法可用的各种格式选项:

  • "yyyy" 格式说明符包含四位数字的年份。
  • "MM" 格式说明符包含两位数字的月份。
  • "dd" 格式说明符包含两位数字的日期。
  • "HH" 格式说明符包含 24 小时格式的两位数小时。
  • "mm" 格式说明符包含带有两位数字的分钟。
  • "ss" 格式说明符包含第二个两位数字。

例如,我们提供了具有 yyyy/MM/dd HH:mm:ss 格式的 toString() 方法,并使用了加号 (+ ) 运算符将 time_stamp 连接到 log_message,创建 log_message

Add-Content cmdlet 是一个向文件添加内容的 PowerShell cmdlet。它将新内容附加到文件末尾或创建新文件并向其中添加内容。我们可以使用 Add-Content cmdlet 将文本、数字、对象或 cmdlet 或函数的输出添加到文件中。例如,我们使用此 cmdlet 将 log_message 写入 log_file

使用Write-Output Cmdlet

要写入日志文件,请使用 Write-Output cmdlet 代替 write_logFile 函数中的 Add-content

使用写入输出 Cmdlet:

function write_logFile{
    Param ([string]$log_file, $log_message)
    $time_stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
    $log_message += $time_stamp
    Write-Output $log_message >> $log_file
}
write_logFile -log_file "D:\Logs\output.log" -log_message "Writing to the log file at "
Get-Content "D:\Logs\output.log"

输出 :

Writing to the log file at 2023/01/05 22:41:49

我们在使用 `Add-Content cmdlet 将输出写入日志文件时讨论了 Get-Date cmdlet 和 toString() 方法。在本部分中,我们使用 Write-Output cmdlet 和 >> 运算符。

Write-Output cmdlet 是一个 PowerShell cmdlet,它将命令或脚本的结果发送到控制台或其他 cmdlet 或函数。它可以输出任何对象,例如字符串、数字、布尔值、数组或者 cmdlet 或函数的输出。例如,我们使用 Write-Output cmdlet 使用 >> 运算符将 log_message 写入 log_file将内容附加到文件而不是覆盖它。

使用 Out-File Cmdlet

要写入日志文件,请使用 Out-File cmdlet 代替 write_logFile 函数内的 Add-content

使用写入输出 Cmdlet:

function write_logFile{
    Param ([string]$log_file, $log_message)
    $time_stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")
    $log_message += $time_stamp
    $log_message | Out-File -FilePath $log_file -Append
}
write_logFile -log_file "D:\Logs\output.log" -log_message "Writing to the log file at "
Get-Content "D:\Logs\output.log"

输出 :

Writing to the log file at 2023/01/05 22:57:54

在本节中,我们使用了 Out-File cmdlet 和管道 (|) 运算符。 Out-File cmdlet 将任何进程、脚本或命令的输出发送到文件或创建新文件并将输出写入其中。此外,它还可以保存任何生成输出到管道的命令或表达式的输出。例如,我们使用此 cmdlet 使用 -Append 参数将 log_message 附加到 log_file 中。

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

取消回复欢迎 发表评论:

关灯