Как записать вывод в файл, даже если переменная не существует - PullRequest
0 голосов
/ 03 марта 2020

@ AdminOfThings, спасибо за ваш ответ, но он не сработал и, похоже, усложнил мне поиск и устранение неисправностей. вот что у меня сейчас и правильно выводит в оболочку, но оставляет пустые места, куда должен записываться блок catch при экспорте в csv. есть идеи?

Function Get-LegalHolds {

$users = get-content C:\temp\users.txt

foreach ($user in $users){
Try
{
 Get-ADUser $user -Properties * | Select-Object CN,cvx-LegalSubjectToHold
}
Catch
{
 Write-Output "$user does not exist"
}
}
}

Get-LegalHolds

1 Ответ

0 голосов
/ 03 марта 2020

Я не могу сказать, что такое cvx-LegalSubjectToHold, но в целом должны применяться следующие принципы:

Я бы изменил код на что-то вроде следующего:

Function Get-LegalHolds {

    $users = Get-Content C:\temp\users.txt

    foreach ($user in $users){
        Try
        {
            Get-ADUser $user -Properties CN,cvx-LegalSubjectToHold |
                Select-Object SamAccountName,CN,cvx-LegalSubjectToHold
        }
        Catch
        {
            $user | Select-Object @{n='SamAccountName';e={$_}},CN,cvx-LegalSubjectToHold
        }
    }
}

Get-LegalHolds

Чтобы заняться экспортом неиспользуемых, вам необходимо вывести объект с именованными свойствами, которые соответствуют свойствам, найденным найденными пользователями. Объекты с несовпадающими свойствами вызывают проблемы с экспортом CSV. Вам может потребоваться настроить свойства команд Select по своему вкусу.

Я изменил -Properties, чтобы явно перечислить свойства за пределами набора по умолчанию, который вы хотите вернуть. Использование * выведет все, что не является наилучшей практикой и потребляет ненужные системные ресурсы.

...