diff --git a/functions/DiskSmartInfo.functions.internal.ps1 b/functions/DiskSmartInfo.functions.internal.ps1 index a6d3255..a6d7e9f 100644 --- a/functions/DiskSmartInfo.functions.internal.ps1 +++ b/functions/DiskSmartInfo.functions.internal.ps1 @@ -21,6 +21,11 @@ function inGetDiskSmartInfo $initialOffset = 2 $attributeLength = 12 + $errorParameters = @{ + ErrorVariable = 'cimInstanceErrors' + ErrorAction = 'SilentlyContinue' + } + $parameters = @{} if ($Session) @@ -28,10 +33,10 @@ function inGetDiskSmartInfo $parameters.Add('CimSession', $Session) } - if (($disksSmartData = Get-CimInstance -Namespace $namespaceWMI -ClassName $classSmartData @parameters @cimErrorParameters) -and - ($disksThresholds = Get-CimInstance -Namespace $namespaceWMI -ClassName $classThresholds @parameters @cimErrorParameters) -and - ($disksFailurePredictStatus = Get-CimInstance -Namespace $namespaceWMI -ClassName $classFailurePredictStatus @parameters @cimErrorParameters) -and - ($diskDrives = Get-CimInstance -ClassName $classDiskDrive @parameters @cimErrorParameters)) + if (($disksSmartData = Get-CimInstance -Namespace $namespaceWMI -ClassName $classSmartData @parameters @errorParameters) -and + ($disksThresholds = Get-CimInstance -Namespace $namespaceWMI -ClassName $classThresholds @parameters @errorParameters) -and + ($disksFailurePredictStatus = Get-CimInstance -Namespace $namespaceWMI -ClassName $classFailurePredictStatus @parameters @errorParameters) -and + ($diskDrives = Get-CimInstance -ClassName $classDiskDrive @parameters @errorParameters)) { if ($ShowHistory) { @@ -178,6 +183,10 @@ function inGetDiskSmartInfo inUpdateHistoricalData -disksSmartData $disksSmartData -disksThresholds $disksThresholds -diskDrives $diskDrives -session $Session } } + else + { + inReportErrors -CimErrors $cimInstanceErrors + } } function inOverwriteAttributes @@ -450,13 +459,28 @@ function inGetHistoricalData } } +# function inReportErrors +# { +# foreach ($cimSessionError in $Script:cimSessionErrors) +# { +# $message = "ComputerName: ""$($cimSessionError.OriginInfo.PSComputerName)"". $($cimSessionError.Exception.Message)" +# $exception = [System.Exception]::new($message, $cimSessionError.Exception) +# $errorRecord = [System.Management.Automation.ErrorRecord]::new($exception, $cimSessionError.FullyQualifiedErrorId, $cimSessionError.CategoryInfo.Category, $cimSessionError.TargetObject) +# $PSCmdlet.WriteError($errorRecord) +# } +# } + function inReportErrors { - foreach ($cimSessionError in $Script:cimSessionErrors) + Param ( + $CimErrors + ) + + foreach ($cimError in $CimErrors) { - $message = "ComputerName: ""$($cimSessionError.OriginInfo.PSComputerName)"". $($cimSessionError.Exception.Message)" - $exception = [System.Exception]::new($message, $cimSessionError.Exception) - $errorRecord = [System.Management.Automation.ErrorRecord]::new($exception, $cimSessionError.FullyQualifiedErrorId, $cimSessionError.CategoryInfo.Category, $cimSessionError.TargetObject) + $message = "ComputerName: ""$($cimError.OriginInfo.PSComputerName)"". $($cimError.Exception.Message)" + $exception = [System.Exception]::new($message, $cimError.Exception) + $errorRecord = [System.Management.Automation.ErrorRecord]::new($exception, $cimError.FullyQualifiedErrorId, $cimError.CategoryInfo.Category, $cimError.TargetObject) $PSCmdlet.WriteError($errorRecord) } } diff --git a/functions/DiskSmartInfo.functions.ps1 b/functions/DiskSmartInfo.functions.ps1 index 6ce432a..f839058 100644 --- a/functions/DiskSmartInfo.functions.ps1 +++ b/functions/DiskSmartInfo.functions.ps1 @@ -29,10 +29,14 @@ function Get-DiskSmartInfo begin { - $Script:cimSessionErrors = @() + # $Script:cimSessionErrors = @() - $Script:cimErrorParameters = @{ - ErrorVariable = '+Script:CimSessionErrors' + # $Script:cimErrorParameters = @{ + # ErrorVariable = '+Script:CimSessionErrors' + # ErrorAction = 'SilentlyContinue' + # } + $errorParameters = @{ + ErrorVariable = 'cimSessionErrors' ErrorAction = 'SilentlyContinue' } @@ -150,8 +154,9 @@ function Get-DiskSmartInfo { foreach ($scd in $sessionsComputersDisks) { - if ($scd.ComputerName -and -not ($scd.CimSession = New-CimSession -ComputerName $scd.ComputerName @cimErrorParameters)) + if ($scd.ComputerName -and -not ($scd.CimSession = New-CimSession -ComputerName $scd.ComputerName @errorParameters)) { + inReportErrors -CimErrors $cimSessionErrors continue } @@ -178,6 +183,6 @@ function Get-DiskSmartInfo } } - inReportErrors + # inReportErrors } }