PDA

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


Efsey
11-01-2013, 23:24
Доброго времени суток.
Необходимо заменить часть описания группы между 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
if($oldSTR=$_.old){ - "=" заменить на "-eq"

Efsey
12-01-2013, 17:28
заменил, процесс пошел, но описание не меняет
вывод:


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
}




© OSzone.net 2001-2012