Como verificar se um comando do powershell foi bem sucedido ou não?

2

É 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 de realizar 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"
}
    
por Sonnenbiene 13.07.2017 / 23:29

1 resposta

1

Leia Set-CASMailbox reference :

  • Parâmetro OwaMailboxPolicy :

The OwaMailboxPolicy parameter specifies the Outlook on the web mailbox policy for the mailbox. You can use any value that uniquely identifies the Outlook on the web mailbox policy. For example:

  • Name
  • Distinguished name (DN)
  • GUID

The name of the default Outlook on the web mailbox policy is Default.

Leia about_CommonParameters ( parâmetros que podem ser usados com qualquer cmdlet ), aplique ErrorVariable ou ErrorAction :

ErrorVariable :

Set-CASMailbox -Identity:blocks.5 -OWAMailboxPolicy "DoNotExists" -ErrorVariable test
if ($test.Count -neq 0)      ### $test.GetType() is always ArrayList
{
    Write-Host "The Set-CASMailbox command failed: $test"
}
else
{
    Write-Host "The Set-CASMailbox command completed correctly"
}

ErrorAction e Try, Catch, Finally (leia about_Try_Catch_Finally como usar os blocos Try, Catch e Finally para tratar erros de terminação ):

try {
    Set-CASMailbox -Identity:blocks.5 -OWAMailboxPolicy "DoNotExists"  -ErrorAction Stop
                ### set action preference to force terminating error:  ↑↑↑↑↑↑↑↑↑↑↑↑ ↑↑↑↑
    Write-Host "The Set-CASMailbox command completed correctly"
}  
catch {
    Write-Host "The Set-CASMailbox command failed: $($error[0])"  -ForegroundColor Red
}

Em qualquer caso, leia Write-Host considerado prejudicial .

    
por 14.07.2017 / 01:17