2016-09-02 6 views
0

Я пытаюсь подавить ошибку в следующем заявлении:фиксировано iSuppressing Powershell ошибки

$notes = Get-AdGroup $permissiongroup -Properties info 
$notes | Select-Object -expandproperty info -ErrorAction SilentlyContinue 

Это, чтобы увидеть, если есть информация в поле «Примечание» в AD.

Если нет информации, я (логически) получить следующее сообщение об ошибке:

Select-Object : Cannot process argument because the value of argument "obj" is null. Change the value of argument "obj" to a non-null value. At line:1 char:10 + $notes | Select-Object -ErrorAction 0 -expandproperty info + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Select-Object], PSArgumentNullException + FullyQualifiedErrorId : ArgumentNull,Microsoft.PowerShell.Commands.SelectObjectCommand

Как подавить эту ошибку? SilentlyContinue, похоже, не работает?

ОБНОВЛЕНИЕ Исправлено с помощью try/catch, спасибо.

+0

Какую версию Powershell вы используете? Кажется, я помню, что это известная ошибка в версии 3. – crownedjitter

ответ

1

Использование PowerShell попытаться/поймать, чтобы справиться с этим

+0

У вас есть предложения? Я не могу заставить его работать – Kevin

+0

try { $ notes = Get-AdGroup $ permissiongroup -Properties info $ notes | Select-Object -expandproperty info -ErrorAction SilentlyContinue } catch {} – Jimbo

0

Вы могли бы попробовать что-то вроде:

$notes | ? {$_.info -ne $null} | Select-Object -expandproperty info 
+0

Таким образом, я не получаю сообщение об ошибке, но я все еще получаю вывод. Поскольку следующий оператор, который использует переменную $ notes, зависит от того, есть ли вход или нет ввода, это не будет работать. – Kevin

+1

@Kevin вам нужно решить, что вам нужно, потому что для чего это показано на вопросе, это «как подавить ошибку и двигаться вперед», но теперь вы говорите, что не хотите подавлять ошибку , Если следующий оператор зависит от того, что результат имеет, то проверьте в этом месте свойства, мощность и т. Д., Которые вам нужны. – mjsr

+0

Вы правы, но то, что происходит сейчас, не является тем, что необходимо. Ошибка подавляется, но создает неправильный вывод. Если есть выход, он должен вернуть его, что работает. Но когда атрибут info пуст, я возвращаю другую информацию. В следующем операторе if/else зависит от того, есть ли какой-либо вывод или нет (-eq $ null trigger). Надеюсь, это станет более ясным :) Thx за помощь до сих пор! – Kevin