gpt4 book ai didi

powershell - 如何在 Powershell 中记录错误?

转载 作者:行者123 更新时间:2023-12-03 08:17:48 25 4
gpt4 key购买 nike

[1] 我正在尝试为我的 PowerShell 脚本创建错误日志。我需要创建一个函数,以便我可以直接调用该函数而不是使用 Write-Host,并且我在脚本中遇到的任何错误都可以直接记录到日志文件中。
[2] 我使用了以下方法,但似乎不适用于每个 PowerShell 脚本。

function WriteLog
{
Param ([string]$LogString)
$LogFile = "C:\$(gc env:computername).log"
$DateTime = "[{0:MM/dd/yy} {0:HH:mm:ss}]" -f (Get-Date)
$LogMessage = "$Datetime $LogString"
Add-content $LogFile -value $LogMessage
}

WriteLog "This is my log message"
[3] 任何人都可以建议一种更简单的方法来处理将错误记录到文件中吗?

最佳答案

您的用例离您不远了。
您根本不需要 Write-Host 。根据您使用的 PS 版本,当您通过管道或其他地方发送数据时,Write-Host 并不谨慎
如果您在管道中发送内容,Write-Host 在旧的 v5x 之前的版本中就很糟糕,因为它清除了缓冲区,所以他们会注意到发送。在 v5x 中
和更高。根据 Monad/PowerShell 的创始人/创建者。
• 写主机有害

  • https://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful/
  • https://devblogs.microsoft.com/scripting/understanding-streams-redirection-and-write-host-in-powershell
  • https://powershell.org/2012/06/how-to-use-write-host-without-endangering-puppies-or-a-manifesto-for-modularizing-powershell-scripts
  • PowerShell Best Practice #3: Avoid Write-Host

  • 根据 Monad/Powershell 的创始人/创建者,它现在写入信息流。
    However, this thought has been changed since the v5x stuff.
    您可以使用直接日志记录
    Tee-Object
    Export-Csv -Append
    Out-File -Append
    ... 和其他 redirection options .
    您还可以创建并写入您自己的事件日志...
    New-EventLog -LogName LogonScripts -Source ClientScripts
    Write-EventLog LogonScripts -Source ClientScripts -Message 'Test Message' -EventId 1234 -EntryType Warning
    ...然后像读取任何其他事件日志一样稍后读取它。
    有很多示例(脚本和模块)可以按原样使用所有 Web 并根据需要开始或调整,甚至是通过 Microsoft powershellgallery.com 进行的示例。
  • ScriptLogger 2.0.0
  • Write-Log: A Simple Logging Function for your PowerShell - Scripts: Download - Write-Log.ps1 :
  • Write-Log PowerShell Logging Function: Download - Function-Write-Log.ps1 :
  • Logging 2.4.9

  • 你的帖子中的注意点。这...
    $LogFile = "C:\$(gc env:computername).log"
    ...只需简化为...
    $LogFile = "C:\$($Env:COMPUTERNAME).log"

    关于powershell - 如何在 Powershell 中记录错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64016547/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com