查找 Net-backup 故障代码及其各自的消息
Find Net-backup failure code and it's respective messages
我有一个名为 NetBackupPS.psm1 的 powershell 模块,它只有 0-255 范围的状态代码和网络备份作业的相应消息。我需要网络备份作业中的所有状态代码及其各自的消息。然后只有我可以使用我的 powershell 脚本获取所有错误消息并将其报告给我的客户。
我正在使用的 NetBackupPS 模块:
https://github.com/lazywinadmin/NetBackupPS/blob/master/NetBackupPS.psm1
我的脚本:
$server = xxxxxxxxxxx
$Username = YYYYYYYYYY
$password=zzzzzzzzzzzz
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$secpasswd
$netbackupfailed=Invoke-Command -ComputerName $server -Credential $mycreds -ScriptBlock {
Import-Module "C:\Program Files\WindowsPowerShell\Modules\NetBackupPS.psm1"
$full= Get-NetBackupJob -Full|?{$_.status -ne ""}
$failed=$full|select ID,jobid,jobtype,status,@{n='fail';e={Get-NetBackupStatusCode -StatusCode ($_.status)}},schedule,client,@{n='Started';e={((Get-Date 01.01.1970)+([System.TimeSpan]::fromseconds(($_.started - 18000)))).ToString('yyy-MM-dd HH:mm:ss')}},@{n='Ended';e={((Get-Date 01.01.1970)+([System.TimeSpan]::fromseconds(($_.ended -18000)))).ToString('yyy-MM-dd HH:mm:ss')}},schedule_type
$failed
}
$netbackupfailed
上面的代码returns出错了
@{n='fail';e={Get-NetBackupStatusCode -StatusCode ($_.status)}}
行。因为在 NetBackupPS 模块中只包含 255 个错误代码及其各自的消息。如果状态代码大于 255,则会给出类似
的错误
greater than maximum range
我需要一个解决方案来获取所有错误代码的错误消息。
我不是 NetBackup 方面的专家,但有几点需要指出。首先要获得对您问题的最佳回答,请尝试格式化您的代码以提高可读性。我在更改以下几个小项目时冒昧地这样做:
$server = xxxxxxxxxxx
$Username = YYYYYYYYYY
$password=zzzzzzzzzzzz
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$secpasswd
$ScriptBlock =
{
Import-Module "C:\Program Files\WindowsPowerShell\Modules\NetBackupPS.psm1"
$full= Get-NetBackupJob -Full |
Where-Object{ $_.status -ne "" }
$failed = $full |
Select-Object ID, jobid, jobtype, status,
@{n = 'fail'; e = { Get-NetBackupStatusCode -StatusCode $_.status } },
schedule, client,
@{n = 'Started'; e = { ( (Get-Date 01.01.1970) + ( New-TimeSpan -Seconds ($_.started - 18000) )).ToString('yyy-MM-dd HH:mm:ss') } },
@{n = 'Ended'; e = { ( (Get-Date 01.01.1970) + ( New-TimeSpan -Seconds ($_.ended -18000) )).ToString('yyy-MM-dd HH:mm:ss') } },
schedule_type
$failed
}
$netbackupfailed = Invoke-Command -ComputerName $server -Credential $mycreds -ScriptBlock $ScriptBlock
$netbackupfailed
Note: I only did this to help me read it.
现在在 NetBackupPS.psm1 的第 1230 - 1236 行,您会发现:
param (
[parameter(Mandatory = $true,
HelpMessage = "Enter status code number (ex: 15) ",
ValueFromPipelineByPropertyName = $true,
Position = 0)]
[ValidateRange(0, 255)]
[int]$StatusCode
您可以尝试修改允许范围!
现在在第 1241 - 1497 行,您会发现一个很长的 switch 语句,它似乎定义了每个状态代码的文本。您可能想在此处添加您期望的状态代码,并确保它们在您之前重新定义的范围内。
免责声明:我强烈建议您联系该模块的作者。我不会轻率地修改别人的代码,你永远不知道代码中的东西是如何协同工作的。我所说的一切都是基于对 .psm1 文件代码的有限审查。此外,如果您有来自 NetBackup 的合法状态代码,但设计者未提供 he/she 可能需要更新他们的工作等...
更新
我还发现 this,看起来像是使用 NEtBackup Rest API 构建的编译 C# cmdlet 的较新模块。无论您是否用于此项目,都可能值得一试。
我有一个名为 NetBackupPS.psm1 的 powershell 模块,它只有 0-255 范围的状态代码和网络备份作业的相应消息。我需要网络备份作业中的所有状态代码及其各自的消息。然后只有我可以使用我的 powershell 脚本获取所有错误消息并将其报告给我的客户。
我正在使用的 NetBackupPS 模块:
https://github.com/lazywinadmin/NetBackupPS/blob/master/NetBackupPS.psm1
我的脚本:
$server = xxxxxxxxxxx
$Username = YYYYYYYYYY
$password=zzzzzzzzzzzz
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$secpasswd
$netbackupfailed=Invoke-Command -ComputerName $server -Credential $mycreds -ScriptBlock {
Import-Module "C:\Program Files\WindowsPowerShell\Modules\NetBackupPS.psm1"
$full= Get-NetBackupJob -Full|?{$_.status -ne ""}
$failed=$full|select ID,jobid,jobtype,status,@{n='fail';e={Get-NetBackupStatusCode -StatusCode ($_.status)}},schedule,client,@{n='Started';e={((Get-Date 01.01.1970)+([System.TimeSpan]::fromseconds(($_.started - 18000)))).ToString('yyy-MM-dd HH:mm:ss')}},@{n='Ended';e={((Get-Date 01.01.1970)+([System.TimeSpan]::fromseconds(($_.ended -18000)))).ToString('yyy-MM-dd HH:mm:ss')}},schedule_type
$failed
}
$netbackupfailed
上面的代码returns出错了
@{n='fail';e={Get-NetBackupStatusCode -StatusCode ($_.status)}}
行。因为在 NetBackupPS 模块中只包含 255 个错误代码及其各自的消息。如果状态代码大于 255,则会给出类似
的错误greater than maximum range
我需要一个解决方案来获取所有错误代码的错误消息。
我不是 NetBackup 方面的专家,但有几点需要指出。首先要获得对您问题的最佳回答,请尝试格式化您的代码以提高可读性。我在更改以下几个小项目时冒昧地这样做:
$server = xxxxxxxxxxx
$Username = YYYYYYYYYY
$password=zzzzzzzzzzzz
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$secpasswd
$ScriptBlock =
{
Import-Module "C:\Program Files\WindowsPowerShell\Modules\NetBackupPS.psm1"
$full= Get-NetBackupJob -Full |
Where-Object{ $_.status -ne "" }
$failed = $full |
Select-Object ID, jobid, jobtype, status,
@{n = 'fail'; e = { Get-NetBackupStatusCode -StatusCode $_.status } },
schedule, client,
@{n = 'Started'; e = { ( (Get-Date 01.01.1970) + ( New-TimeSpan -Seconds ($_.started - 18000) )).ToString('yyy-MM-dd HH:mm:ss') } },
@{n = 'Ended'; e = { ( (Get-Date 01.01.1970) + ( New-TimeSpan -Seconds ($_.ended -18000) )).ToString('yyy-MM-dd HH:mm:ss') } },
schedule_type
$failed
}
$netbackupfailed = Invoke-Command -ComputerName $server -Credential $mycreds -ScriptBlock $ScriptBlock
$netbackupfailed
Note: I only did this to help me read it.
现在在 NetBackupPS.psm1 的第 1230 - 1236 行,您会发现:
param (
[parameter(Mandatory = $true,
HelpMessage = "Enter status code number (ex: 15) ",
ValueFromPipelineByPropertyName = $true,
Position = 0)]
[ValidateRange(0, 255)]
[int]$StatusCode
您可以尝试修改允许范围!
现在在第 1241 - 1497 行,您会发现一个很长的 switch 语句,它似乎定义了每个状态代码的文本。您可能想在此处添加您期望的状态代码,并确保它们在您之前重新定义的范围内。
免责声明:我强烈建议您联系该模块的作者。我不会轻率地修改别人的代码,你永远不知道代码中的东西是如何协同工作的。我所说的一切都是基于对 .psm1 文件代码的有限审查。此外,如果您有来自 NetBackup 的合法状态代码,但设计者未提供 he/she 可能需要更新他们的工作等...
更新
我还发现 this,看起来像是使用 NEtBackup Rest API 构建的编译 C# cmdlet 的较新模块。无论您是否用于此项目,都可能值得一试。