@dshumov
Олдскул - Фигурнов форева

PowerShell почему не работает скрипт при отсутствии значения в атрибуте?

Приветствую!
Что-то я немного расслабился за время самоизоляции :( - туплю немного.
Подскажите, направьте, в чем может быть проблема:
Есть скрипт, логирующий вход/выход пользователя на сервера:
Param(
[Parameter(Position=0)]
[ValidateSet("Logon","Logoff","Unknown")]
[string]$Status="Unknown"
)
 
#no spaces in the filter
[adsisearcher]$searcher="samaccountname=$env:username"
#find the current user
$find = $searcher.FindOne()
#get the user object
[adsi]$user = $find.Path
#define a string to indicate status
$note= @("{0} {1} to {2}" -f (Get-Date),$status.ToUpper(),$env:computername)
[array]$NewVals = @()
$NewVals = $note + ($user.GetEx('url'))[0..10]
#DEBUG, output values in ISE
#$NewVals |  out-host
#update the user property
$user.PutEx(2, 'url', $NewVals ) 
#commit the change
$user.SetInfo()
#DEBUG, output values in ISE
#$user.GetEx('url')

Скрипт пишет в атрибут url когда и куда пользователь заходил. Так вот, если в этом атрибуте нет значений вообще, то выдает ошибку:
Exception calling "GetEx" with "1" argument(s): "The directory property cannot be found in the cache.
"
At \\nasta.local\SYSVOL\nasta.local\Policies\{A2FAB552-E94C-4675-9F3A-B50D0EB03516}\User\Scripts\Logon\Set-UserStatus.ps1:16 char:1
+ $NewVals = $note + ($user.GetEx('url'))[0..10]
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Если руками там проставить любое значение, то скрипт отрабатывает отлично и нужная запись туда добовляется.
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
Видимо потому, что если в атрибуте нет значений вообще, то и атрибута такого нет у конкретного юзера. Можно в этом убедиться через DSA или ADISEDIT
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы