Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] как использовать ошибку в предыдущей команде для условия (http://forum.oszone.net/showthread.php?t=284178)

milligan 25-06-2014 20:01 2368471

как использовать ошибку в предыдущей команде для условия
 
Как указать в условии ошибку предыдущей команды?

Код:

Param(
[string] $csv
)

Import-Csv $csv | ForEach-object -process `
{`
$EEA =  $_.E
    New-MailContact `
            -ExternalEmailAddress $EEA `
                -Name $_.N `
                -Alias $_.A `
                -FirstName $_.FN `
                -Initials $_.I `
                -LastName $_.LN `
                -OrganizationalUnit $_.OU
Out-Null | Get-Contact $_.A | if Get-Contact = ?EROR? then echo "Такого контакта нет" Else Set-Contact -Department $_.D} `
}


Kazun 26-06-2014 08:08 2368644

Код:

Import-Csv $csv | ForEach-object -process `
{`
$EEA =  $_.E
        try {
    New-MailContact `
            -ExternalEmailAddress $EEA `
                -Name $_.N `
                -Alias $_.A `
                -FirstName $_.FN `
                -Initials $_.I `
                -LastName $_.LN `
                -OrganizationalUnit $_.OU -ErrorAction Stop | Set-Contact -Department $_.D
        }
        catch {
                "$_"
        }
}


milligan 26-06-2014 12:09 2368712

The operation couldn't be performed because object '***' couldn't be found on '*******'.
+ CategoryInfo : NotSpecified: (:) [Get-Contact], ManagementObjectNotFoundException
+ FullyQualifiedErrorId : C5209E5F,Microsoft.Exchange.Management.RecipientTasks.GetContact
+ PSComputerName : *******

Что записать в cath?

catch [System.Management.Automation.ManagementObjectNotFoundException] {
write-host 'CommandNotFoundException'
}

непроходит

Kazun 26-06-2014 12:33 2368721

1) Какой смысл использовать Get-Contact?
2) Как-то так:

Код:

try {
        Get-Contact $_.A -ErrorAction Stop | Set-Contact -Department $_.D
}
catch {
        if($_.CategoryInfo.Reason -eq "ManagementObjectNotFoundException") {
                "Такого контакта нет"
        }
}


milligan 26-06-2014 12:49 2368726

Не отлавливает(((

Kazun 26-06-2014 12:58 2368730

Я говорю отлавливает. И чья правда?


milligan 26-06-2014 13:08 2368736

Вложений: 1
Что не так?

Kazun 26-06-2014 13:10 2368738

Подозреваю , что сначала были пробы catch [System.Management.Automation.ManagementObjectNotFoundException] и прочие. Так что для начала рестарт шелла с нуля и вывод.

milligan 26-06-2014 13:57 2368756

Не работает в Exchange shell попробовал просто из Powershell -psconsolefile "C:\Program Files\Microsoft\Exchange Server\V14\Bin\exshell.psc1" все получилось

но если запускаю скрипт - вылетает на первой же записи с той же ошибкой

Код:

Param(
[string] $csv
)

Import-Csv $csv | ForEach-object -process `
{
$EEA =  $_.E
    Get-Contact $_.A -ErrorAction Stop
    catch {
        if($_.CategoryInfo.Reason -eq "ManagementObjectNotFoundException") {
Write-Host "Такого контакта нет" -ForeGround Magenta
}
}
}


Kazun 26-06-2014 14:01 2368757

А где блок try{} ?

milligan 26-06-2014 14:06 2368758

Дико извиняюсь) пошел за кофем!
Огромное спс ВАМ


Время: 14:52.

Время: 14:52.
© OSzone.net 2001-