PDA

Показать полную графическую версию : [решено] как использовать ошибку в предыдущей команде для условия


milligan
25-06-2014, 20:01
Как указать в условии ошибку предыдущей команды?

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
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
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
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
Не отлавливает(((

Kazun
26-06-2014, 12:58
Я говорю отлавливает. И чья правда?

http://i.imgur.com/E4tkacN.jpg

milligan
26-06-2014, 13:08
Что не так?

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

milligan
26-06-2014, 13:57
Не работает в 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
А где блок try{} ?

milligan
26-06-2014, 14:06
Дико извиняюсь) пошел за кофем!
Огромное спс ВАМ




© OSzone.net 2001-2012