Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] ошибка при использовании значения в переменной (http://forum.oszone.net/showthread.php?t=347491)

Ageron 30-12-2020 12:51 2944614

ошибка при использовании значения в переменной
 
не могу разобраться в чем причина

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

Код:

$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 2944615

Цитата:

Цитата Ageron
если значение $User.displayname передавать через другую переменную, то все хорошо »

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

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

Ageron 30-12-2020 15:02 2944632

Цитата:

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

во 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
Цитата:

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

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

Busla 30-12-2020 17:18 2944642

вообще, аргумент Filter - это строка, а фигурные скобки - упрощённый синтаксис
попробуйте так:
Код:

Get-ADUser -Filter "displayname -eq '$($user.displayname)'"
-like вы используете не по назначению
-Properties * вам тоже не нужен

Serguei Kouzmine 31-12-2020 03:52 2944684

надо
Код:

$user  = import-csv -header displayname,<и все другие колонки по порядку> -path 'file.csv'
write-host $user.displayname

в


Время: 22:55.

Время: 22:55.
© OSzone.net 2001-