É possível verificar se um comando do powershell foi bem-sucedido ou não?
Exemplo:
Set-CASMailbox -Identity:blocks.5 -OWAMailboxPolicy "DoNotExists"
causou o erro:
Outlook Web App mailbox policy "DoNotExists" wasn't found. Make sure you typed the policy name correctly.
+ CategoryInfo : NotSpecified: (0:Int32) [Set-CASMailbox], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : 9C5D12D1,Microsoft.Exchange.Management.RecipientTasks.SetCASMailbox
Eu acho que deve ser possível buscar o FullyQualifiedErrorId, então tentei o seguinte:
$test = Set-CASMailbox -Identity:blocks.5 -OWAMailboxPolicy "DoNotExists"
Mas parece que o erro não é transferido para a variável de teste.
Então, qual é a maneira correta aqui de executar algo como:
$test = Set-CASMailbox -Identity:blocks.5 -OWAMailboxPolicy "DoNotExists"
if ($test -eq "error")
{
Write-Host "The Set-CASMailbox command failed"
}
else
{
Write-Host "The Set-CASMailbox command completed correctly"
}
Leia a
Set-CASMailbox
referência :OwaMailboxPolicy
parâmetro:Set-CASMailbox
caso).Leia about_CommonParameters ( os parâmetros que podem ser usados com qualquer cmdlet ), aplique
ErrorVariable
ouErrorAction
:ErrorVariable
:ErrorAction
e Try,Catch,Finally (leia about_Try_Catch_Finally como usar os blocos Try, Catch e finally para lidar com erros de terminação ):De qualquer forma, leia Write-Host Considered Harmful .
Além da resposta de JosefZ, a variável automática
$Error
contém uma série de erros, então você pode olhar para a propriedade $Error.Count para ver se ela subiu. Mas acho-ErrorVariable
que é a melhor resposta. vejaGet-Help about_AutomaticVariables
para detalhes.