Войти

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


Ageron
30-12-2020, 12:51
не могу разобраться в чем причина

если выполнять код, выходит ошибка. хотя переменная содержит правильное значение

$Users = Import-Csv -Path C:\1C Script\userTitle.csv -Delimiter ';'
foreach ($User in $Users) {
Get-ADUser -Filter {displayName -like $User.displayname} -Properties * | Set-ADUser -Title $User.titleGood
}


Get-ADUser : Не найдено свойство "displayname" в объекте типа "System.Management.Automation.PSCustomObject".
строка:3 знак:1
+ Get-ADUser -Filter {displayName -like $User.displayname} -Properties ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUs er



а если значение $User.displayname передавать через другую переменную, то все хорошо.
можно как то без отдельной переменной это использовать?

$Users = Import-Csv -Path C:\1C Script\userTitle.csv -Delimiter ';'
foreach ($User in $Users) {
$userdisplayname = $User.displayname
Get-ADUser -Filter {displayName -like $userdisplayname} -Properties * | Set-ADUser -Title $User.titleGood
}

Busla
30-12-2020, 13:10
если значение $User.displayname передавать через другую переменную, то все хорошо »
не работает и молчит - это не "всё хорошо"

у вас в первой строке путь с пробелом не окавычен, поэтому в переменных мусор, а не данные

Ageron
30-12-2020, 15:02
у вас в первой строке путь с пробелом не окавычен, поэтому в переменных мусор, а не данные »

во 2м коде, тоже без кавычек, но работает.
дело не в пути


выполнение на другой машине, выдает ошибку

$Users = Import-Csv -Path "C:\Distrib\userTitle.csv" -Delimiter ';'
foreach ($User in $Users) {
Get-ADUser -Filter {displayName -like $User.displayname} -Properties *
}



Get-ADUser : Не найдено свойство "displayname" в объекте типа "System.Management.Automation.PSCustomObject".
C:\Users\testuser17\Desktop\Безымянный1.ps1:3 знак:1
+ Get-ADUser -Filter {displayName -like $User.displayname} -Properties ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUs er

не работает и молчит - это не "всё хорошо" »

2й код работает

Busla
30-12-2020, 17:18
вообще, аргумент Filter - это строка, а фигурные скобки - упрощённый синтаксис
попробуйте так:
Get-ADUser -Filter "displayname -eq '$($user.displayname)'"
-like вы используете не по назначению
-Properties * вам тоже не нужен

Serguei Kouzmine
31-12-2020, 03:52
надо
$user = import-csv -header displayname,<и все другие колонки по порядку> -path 'file.csv'
write-host $user.displayname


в




© OSzone.net 2001-2012