Приветствую!
Что-то я немного расслабился за время самоизоляции :( - туплю немного.
Подскажите, направьте, в чем может быть проблема:
Есть скрипт, логирующий вход/выход пользователя на сервера:
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
Если руками там проставить любое значение, то скрипт отрабатывает отлично и нужная запись туда добовляется.