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

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

Efsey 11-01-2013 23:24 2064665

Изменение части описания группы AD
 
Доброго времени суток.
Необходимо заменить часть описания группы между 3й и 4й #, само описание выглядит так : qwe#qwe#2#114-3#qwe
Содержимое файла csv - 123-123;422-423 (соответственно старое и новое значение)
Вроде должно работать, но...
Код:

$file='C:\1\1.csv'
$temp='C:\1\temp.csv'
$put='OU=testgroups,OU=tets,DC=skiffin,DC=home'
Get-content $file|out-file $temp -Encoding unicode
$header='old','new'
$csv=import-csv $temp -header $header -delimiter ";"
Get-ADGroup -filter {*} -SearchBase $put -Properties description |foreach{
$rt=[regex]::Matches($_.description,'(?=\#).(\d\d\d)(.*)(?=\#)')  #регулярное выражение читает ничиная с 3-й решётки
$rt=[string]$rt
$oldSTR=$rt.substring(1)
$csv|foreach{
if($oldSTR=$_.old){
$top=$_.new
}
else{
$top=$oldstr
}}
$newdsc=$_.description.replace('#'+$oldstr+'#','#'+$top+'#')
$vse=$oldstr+'      '+$top;
$vse  #проверка замены
Set-Adgroup $_ -replace @{description=$newdsc}
}


Kazun 12-01-2013 14:56 2065009

if($oldSTR=$_.old){ - "=" заменить на "-eq"

Efsey 12-01-2013 17:28 2065114

заменил, процесс пошел, но описание не меняет
вывод:

Код:

123-1      #123-1#
156-2      #156-2#
114-3      #114-3#
125-4      #125-4#
135-5      #135-5#
148-6      #148-6#
1400      #1400#
111-111      #111-111#
1212-1212      #1212-1212#
12883-1      #12883-1#

Нашел в чем проблема, вот работающий вариант:
Код:

$file='C:\1\1.csv'                                                                                #файл со списком
$temp='C:\1\temp.csv'
$put='OU=testgroups,OU=tets,DC=skiffin,DC=home'
Get-content $file|out-file $temp -Encoding unicode
$header='old','new'
$csv=import-csv $temp -header $header -delimiter ";"
Get-ADGroup -filter {*} -SearchBase $put -Properties description |foreach{

$rt=[regex]::Matches($_.description,'(?=\#).(\d\d\d)(.*)(?=\#)')      #выбирает начиная с 3ей # получается #123-1
$rt=[string]$rt
$oldSTR=$rt.substring(1)                              #убираю # из строки
$top='#'+$oldstr+'#'
$csv|foreach{                                              #ищу значение в списке
if($oldSTR -eq $_.old){
$top='#'+$_.new+'#'
}}
$newdsc=$_.description.replace('#'+$oldstr+'#','#'+$top+'#')          #заменяю значения
$vse=$oldstr+'      '+$top;
$vse
Set-Adgroup $_ -replace @{description=$newdsc}                    #вношу изменения в AD
}



Время: 20:57.

Время: 20:57.
© OSzone.net 2001-