【问题标题】:Capturing errors in this Powershell script捕获此 Powershell 脚本中的错误
【发布时间】:2013-01-24 13:51:20
【问题描述】:

我有这个测试脚本来更改服务器列表上的管理员密码。 如果无法 ping 服务器或找不到帐户等,我已将脚本设置为记录错误。但是除此之外,我还想捕获发生的任何其他错误并将这些错误添加到日志文件。我知道您可以使用“Try and Catch”进行错误处理,但到目前为止还没有任何运气。

有人会好心告诉我怎么做吗?

这是脚本

    $date = Get-Date
$user = "Administrator"
$newpwd = "MyPassword"

     $servers = gc C:\servers.txt

foreach ($server in $servers) 
{ 


  $ping = new-object System.Net.NetworkInformation.Ping

  $Reply = $null 
  $Reply = $ping.send($server)


  if($Reply.status -like 'Success')
    {

    $Admin=[adsi]("WinNT://" + $server + "/$user, user")

    if($?) 
      {
       $Admin.SetPassword($newpwd)

     if($?)

      {Add-Content -path C:\Audit\logs\servers-reset.csv -Value "$server,  Succsess the $user password was changed. , $date"}

      else
        {Add-Content -path C:\Audit\logs\servers-reset.csv -Value "$server, Error: FAILED to change the password. , $date"}
      }  
      else
      {
      Add-Content -path C:\Audit\logs\servers-reset.csv -Value "$server, Error: The $user user account was not found on the server. , $date"}
      }    
      else
      {
      Add-Content -path C:\Audit\logs\servers-reset.csv -Value "$server, Error: Ping FAILED could not connect. , $date"
      }

【问题讨论】:

    标签: powershell try-catch


    【解决方案1】:

    如果您想在异常被抛出后立即将异常写入日志,您可以使用陷阱。在脚本中添加类似这样的内容:

    trap [Exception] {
    
        #Add message to log
        Add-Content -Path test.csv -Value "$server, $($_.Exception.Message), $(Get-Date)"
    
        #Continue script
        continue; 
    }
    

    这将记录所有异常(不是所有错误)。

    如果您想要所有错误,可以使用$Error 访问它们。它是一个数组列表,包含会话(脚本)期间的每个错误。第一项$Error[0] 是最新的错误。然而,这不是直接适合 csv 文件而不对其进行格式化的东西。

    【讨论】:

    • 谢谢你能告诉我在脚本中的什么位置?
    • 如果其他错误不正确,我想捕获异常错误并将其包含在日志中,以便我知道出了什么问题。
    • 我不明白那里的最后一个。要使用陷阱,请将代码放在您的脚本中,如果有的话,我更愿意将它放在开头,紧跟在param() 之后。在开始使用 Get-Date、Get-Content 等 cmdlet 之前
    • 好的,谢谢,我试一试....没有设置 param(),脚本和发布的一样。
    • 好的,我已经按照我的需要对其进行了排序。再次感谢格雷默
    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2016-07-07
    相关资源
    最近更新 更多