捕获此Powershell脚本中的错误
我有这个测试脚本来更改服务器列表上的管理员密码。 我已将脚本设置为在服务器无法ping'd或找不到帐户等情况下记录错误。但是除此之外,我希望捕获发生的任何其他错误,并将其添加到日志文件中。我知道您可以使用“尝试并捕获”来处理错误,但到目前为止还没有任何运气 有没有人能告诉我怎么做 这是剧本捕获此Powershell脚本中的错误,powershell,try-catch,Powershell,Try Catch,我有这个测试脚本来更改服务器列表上的管理员密码。 我已将脚本设置为在服务器无法ping'd或找不到帐户等情况下记录错误。但是除此之外,我希望捕获发生的任何其他错误,并将其添加到日志文件中。我知道您可以使用“尝试并捕获”来处理错误,但到目前为止还没有任何运气 有没有人能告诉我怎么做 这是剧本 $date = Get-Date $user = "Administrator" $newpwd = "MyPassword" $servers = gc C:\servers.txt
$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"
}
如果要在抛出异常后立即将异常写入日志,可以使用陷阱。在脚本中添加如下内容:
trap [Exception] {
#Add message to log
Add-Content -Path test.csv -Value "$server, $($_.Exception.Message), $(Get-Date)"
#Continue script
continue;
}
这将记录所有异常(并非所有错误)
如果需要所有错误,可以使用
$Error
访问它们。它是一个arraylist,包含会话(脚本)期间的所有错误。第一项$Error[0]
是最新的错误。但是,如果不格式化csv文件,就无法将其直接放入csv文件。谢谢你能告诉我在脚本中的位置吗?如果其他错误不正确,我想捕获异常错误并将其包含在日志中,这样我就知道出了什么问题。我不明白最后一个错误。要使用陷阱,请将代码放在脚本中,我更愿意将其放在开头,就在param()
之后。在您开始使用诸如Get Date
,Get Content
之类的cmdlet之前,我会尝试一下……不要设置param(),脚本已发布。好的,我已根据需要对其进行排序。再次感谢格雷默