Check if a command has run successfully
Try the $? automatic variable:
$share = Get-WmiObject -Class Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'"if($?){ "command succeeded" $share | Foreach-Object {...}}else{ "command failed"}
From about_Automatic_Variables
:
$? Contains the execution status of the last operation. It containsTRUE if the last operation succeeded and FALSE if it failed....$LastExitCode Contains the exit code of the last Windows-based program that was run.
you can try :
$res = get-WmiObject -Class Win32_Share -Filter "Description='Default share'"if ($res -ne $null){ foreach ($drv in $res) { $Localdrives += $drv.Path }}else{ # your error}
Or if a failure returns no standard output, that would work for an if statement:
if (! (Get-CimInstance Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'")) { 'command failed'}
Also there's now the or symbol "||" in powershell 7:
Get-CimInstance Win32_Share -ComputerName $Server.name -Credential $credentials -Filter "Description='Default share'" || 'command failed'