Я пытаюсь изменить сценарий, который я написал, чтобы быть модульным, в то время как я больше узнаю о создании инструмента. Я нахожусь в точке, где я пытаюсь заставить обработать ошибки и не знаю, как заставить функции вырваться. Вот что я получил:Обработка ошибок в функциях Powershell
[CmdletBinding()]
param(
[string]$DPMServerName = 'server1'
)
Function Get-Libraries {
Write-Verbose ("Getting list of libraries connected to {0}." -f $DPMServerName)
Try {
Set-Variable -Name libraries -Value (Get-DPMLibrary $DPMServerName -ErrorAction Stop | Where {$_.IsOffline -eq $False})
}
Catch [Microsoft.Internal.EnterpriseStorage.Dls.Utils.DlsException] {
Write-Error ("Cannot connect to the DPM library. It appears that the servername is not valid. The specific error message is: {0}" -f $_.Exception.Message)
Return $_.Exception.Message
}
Catch {
Write-Error ("Unknown error getting library. The specific error message is: {0}" -f $_.Exception.Message)
Return
}
Foreach ($library in $libraries) {
Write-Verbose ("Starting fast inventory on {0}" -f $library)
Start-DPMLibraryInventory -DPMLibrary $library -FastInventory -ErrorAction SilentlyContinue
}
$libraries
}
Function Update-TapeStatus ($libs) { <### add parameter "$libs" to the function ###>
Foreach ($library in $libs) {
$tapes = Get-DPMTape -DPMLibrary $library | Where {$_.Location -notmatch "*slot*"} | Sort Location
<### output the list of tapes ###>
$tapes
}
}
$liblist = Get-Libraries
If ($LASTEXITCODE) {
Write-Output $LASTEXITCODE
}
Else {
Update-TapeStatus $liblist
}
Если есть ошибка (например, получение списка библиотек), я хочу представить собственное сообщение и остановить скрипт. Я хочу сделать что-то подобное для других функций. Однако, как написано, я не получаю желаемое сообщение.
Как это сделать? Благодарю.
Какое фактическое поведение вы видите? Вы видите запись об ошибках PowerShell, или вы ничего не видите? –
Я получаю ошибку Powershell: не удалось найти тип [Microsoft.Internal.EnterpriseStorage.Dls.Utils.DlsException]: убедитесь, что сборка, содержащая этот тип, загружена ... – StackExchangeGuy