Автор: BlackCK
Дата сообщения: 03.10.2006 11:16
Есть такой скрипт. Вернее HTA приложение.
Нужен для сбора информации о пользователяз домена. Он у них стартует они заполняют необходимые поля и Ага.. Оно записывается в AD.
А вот собственно в чём проблема. На некоторых компах по какой то мне неведомой причине отрабатывает строка
Set Net = CreateObject("WSCript.Network")
strUserName = Net.Username
В следствии чего я не получаю имя пользователя и ldap запрос не проходит...
Это пол беды...Попробывал на машине где это не пашет подставить имя пользователя руками. Всё делалось из под админских прав, как на локаьной машине, так и в домене.
При подстановке логина руками Ldap работает но затыкается в другой точке:
Set objUser = GetObject ("LDAP://"&objRecordSet.fields("DistinguishedName").value)
"LDAP://"&objRecordSet.fields("DistinguishedName").value - проверял, формируется как положено. А GetObject не отрабатывает. А это необходимо для записи данных в AD.
Проверял На двух рядом стоящих тачках, обе 2000 SP4 полный набор хотфиксов и т.п. на одной пашет, на другой нет... Уже башку сломал.... Идеи есть? Поделитесь? В логах машины пусто... не в апликейшине не в системе.. нигде... ругается в обоих случаях на немогу создать объект и т.п. ...
[more=Код скрипта...]
<HTML>
<TITLE>Редактирование дополнительной информации о пользователе</TITLE>
<HTA:APPLICATION
ID="oHTA"
APPLICATIONNAME="InfUser_HTA"
SCROLL="yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="normal"
>
<HEAD>
<script language="VBScript">
Function QuitScript
Self.close()
End Function
</script>
</HEAD>
<BODY bgcolor="#BAC7BB" text="#000000">
<div class="Section1">
<p class="MsoNormal" align="center" style="margin:-2px; "><font face="Arial" size="2">
<span style="font-family: Times New Roman; font-weight: 700">Уважаемые коллеги!</span></font></p>
<p class="MsoNormal" align="center" style="margin:-2px; ">
<font size="2"><span style="font-family: Times New Roman; font-weight: 700">Просим Вас</span></font><font face="Arial" size="2"><span style="font-family: Times New Roman; font-weight: 700">
заполнить представленные
данные.
</span></font></p>
<p class="MsoNormal" align="center" style="margin: -2px">
<font face="Arial" size="2">
<span style="font-family: Times New Roman; font-weight: 700">
Эта форма будет
появляться каждый раз при входе в сеть, до тех пор пока Вы не
заполните все обязательные для заполнения поля.
Обязательные поля помечены "*"
</span>
</font>
</div>
<p class="MsoNormal" align="center" style="margin: -2px">
<font face="Arial" size="2">
<span style="font-family: Times New Roman; font-weight: 700">
Не заполненные обязательные поля выделены красным цветом.
</span>
</font>
</div>
<p>
<font size="2" face="Times New Roman">
<script language="VBScript">
'Размеры окна
Self.resizeTo 555,540
'Отрисовка окна в центре экрана
Self.moveTo screen.width/2-700/2, screen.height/2-550/2
dim objRecordSet,company_name, pdo,Tt,tow,telFinal
Function Main()
tt=""
pdo=""
tow=""
On Error Resume Next
Set Net = CreateObject("WSCript.Network")
strUserName = Net.Username
dtStart = TimeValue(Now())
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<LDAP://dc=domain,dc=int>;(&(objectCategory=User)" & "(samAccountName=" & strUserName & "));samAccountName,DistinguishedName,HomePhone,TelephoneNumber,FacsimileTelephoneNumber,Mobile,DisplayName,Company,Department,l,PhysicalDeliveryOfficeName,StreetAddress,Title;subtree"
Set objRecordSet = objCommand.Execute
If (IsNull(objRecordSet.fields("PhysicalDeliveryOfficeName").value)=true) or (objRecordSet.fields("PhysicalDeliveryOfficeName").value = "-") then
document.all.PhysicalDeliveryOfficeName.value="-"
PDO="*"
Else
document.all.PhysicalDeliveryOfficeName.value = objRecordSet.fields("PhysicalDeliveryOfficeName").value
End If
If (IsNull(objRecordSet.fields("Title").value) = true) or (objRecordSet.fields("Title").value="-") or (instr(objRecordSet.fields("Title").value,"#")=0) then
document.all.Title_2.value="-"
Tt="*"
Else
document.all.Title_2.value = objRecordSet.fields("Title").value
End If
If IsNull(objRecordSet.fields("Mobile").value)=true then
document.all.TelephoneNumberMobile.value="-"
Else
document.all.TelephoneNumberMobile.value =objRecordSet.fields("Mobile").value
End If
If IsNull(objRecordSet.fields("FacsimileTelephoneNumber").value)=true then
document.all.TelephoneNumberMobInt.value="-"
Else
document.all.TelephoneNumberMobInt.value =objRecordSet.fields("FacsimileTelephoneNumber").value
End If
If IsNull(objRecordSet.fields("TelephoneNumber").value)=true then
document.all.TelephoneNumberInt.value ="-"
Else
document.all.TelephoneNumberInt.value =objRecordSet.fields("TelephoneNumber").value
End If
If (IsNull(objRecordSet.fields("HomePhone").value)=true) or (objRecordSet.fields("HomePhone").value="-") then
document.all.TelephoneNumberTown.value = "-"
tow="*"
Else
document.all.TelephoneNumberTown.value = objRecordSet.fields("HomePhone").value
End If
End Function
Function Write()
Const ADS_PROPERTY_UPDATE = 2
Set objUser = GetObject ("LDAP://"&objRecordSet.fields("DistinguishedName").value)
If document.all.TelephoneNumberMobile.value="" then
objUser.Put "mobile","-"
Else
TEL2NUM(document.all.TelephoneNumberMobile.value)
objUser.Put "mobile",telFinal
End If
If document.all.TelephoneNumberMobInt.value="" then
objUser.Put "FacsimileTelephoneNumber","-"
Else
TEL2NUM(document.all.TelephoneNumberMobInt.value)
objUser.Put "FacsimileTelephoneNumber",telfinal
End If
If document.all.TelephoneNumberTown.value="" then
objUser.Put "HomePhone","-"
Else
TEL2NUM (document.all.TelephoneNumberTown.value)
objUser.Put "HomePhone",telfinal
End If
If document.all.TelephoneNumberInt.value="" then
objUser.Put "TelephoneNumber","-"
Else
TEL2NUM (document.all.TelephoneNumberInt.value)
objUser.Put "TelephoneNumber", telfinal
End If
If document.all.PhysicalDeliveryOfficeName.value="" then
objUser.Put "PhysicalDeliveryOfficeName","-"
Else
objUser.Put "PhysicalDeliveryOfficeName",document.all.PhysicalDeliveryOfficeName.value
End If
If document.all.Title_2.value="" then
objUser.Put "Title","-"
Else
objUser.Put "Title",document.all.Title_2.value
End If
objUser.SetInfo
QuitScript()
End Function
Function TEL2NUM(telstr)
TelFinal=""
For i=0 to len(telstr)-1
if IsNumeric(mid(telstr,i+1,1)) then
TelFinal=telFinal+mid(telstr,i+1,1)
End If
next
if telfinal="" then telfinal= "-"
End Function
main
</SCRIPT>
</font>
</p>
<TABLE align=center cellSpacing=1 cellPadding=2 width='100%' border=2>
<tr>
<td width='30%'>
<font face="Times New Roman">
<a><font size="2">ОСБ:</font></a><font size="2"> </font></font>
</td>
<td width='68%'>
<font size="2" face="Times New Roman">
<SCRIPT language="VBScript">
If IsNull(objRecordSet.fields("Company").value)=true then
document.write "-"
Else
document.write objRecordSet.fields("Company").value
End If
</script>
</font>
</td>
</tr>
<tr>
<td width='30%'><a><font size="2" face="Times New Roman">Подразделение:</font></a></td>
<td width='68%'>
<font size="2" face="Times New Roman">
<SCRIPT language="VBScript">
If IsNull(objRecordSet.fields("Department").value)=true then
document.write "-"
Else
document.write objRecordSet.fields("Department").value
End If
</script>
</font>
</td>
</tr>
<tr>
<td width='30%'><font face="Times New Roman"><font size="2">ФИО сотрудника</font><a><font size="2">:</font></a></font></td>
<td width='68%'>
<font size="2" face="Times New Roman">
<SCRIPT language="VBScript">
If IsNull(objRecordSet.fields("DisplayName").value)=true then
document.write "-"
Else
document.write objRecordSet.fields("DisplayName").value
End If
</script>
</font>
</td>
</tr>
<tr>
<td width='30%'><a><font size="2" face="Times New Roman"><SCRIPT language="VBScript">
if tt = "*" then Document.write "<font color=#FF0000>"
</script>Должность*:</font></a></td>
<td width='68%'>
<font size="1" face="Times New Roman">
<select size="1" name="Title_2" id="Title_2" title="Должность">
<option value="-">-</option>
<option value="#11 Управляющий">Управляющий</option>
<option value="#12 1-й Зам. Управляющего">1-й Зам. Управляющего</option>
<option value="#13 Заместитель управляющего">Заместитель управляющего</option>
<option value="#14 И.о.заместителя управляющего">И.о.заместителя управляющего</option>
<option value="#21 Начальник отдела">Начальник отдела</option>
<option value="#22 Зам. начальника отдела">Зам. начальника отдела</option>
<option value="#31 Начальник сектора">Начальник сектора</option>
<option value="#41 Главный ревизор">Главный ревизор</option>
<option value="#41 Главный инженер">Главный инженер</option>
<option value="#41 Главный инспектор">Главный инспектор</option>
<option value="#41 Главный экономист">Главный экономист</option>
<option value="#41 Главный юрисконсульт">Главный юрисконсульт</option>
<option value="#15 Главный бухгалтер">Главный бухгалтер</option>
<option value="#21 Зам.Главного бухгалтера">Зам.Главного бухгалтера</option>
<option value="#42 Ведущий ревизор">Ведущий ревизор</option>
<option value="#42 Ведущий инженер">Ведущий инженер</option>
<option value="#42 Ведущий инспектор">Ведущий инспектор</option>
<option value="#42 Ведущий экономист">Ведущий экономист</option>
<option value="#42 Ведущий юрисконсульт">Ведущий юрисконсульт</option>
<option value="#43 Старший ревизор">Старший ревизор</option>
<option value="#43 Старший инженер">Старший инженер</option>
<option value="#43 Старший инспектор">Старший инспектор</option>
<option value="#43 Старший кассир">Старший кассир</option>
<option value="#43 Старший контролер">Старший контролер</option>
<option value="#43 Старший контролер-кассир ">Старший контролер-кассир</option>
<option value="#43 Старший экономист">Старший экономист</option>
<option value="#43 Старший юрисконсульт">Старший юрисконсульт</option>
<option value="#44 Ревизор">Ревизор</option>
<option value="#44 Инженер">Инженер</option>
<option value="#44 Инспектор">Инспектор</option>
<option value="#44 Кассир">Кассир</option>
<option value="#44 Консультант">Консультант</option>
<option value="#44 Контролер-кассир">Контролер-кассир</option>
<option value="#44 Экономист">Экономист</option>
<option value="#44 Юрисконсульт">Юрисконсульт</option>
<option value="#21 Заведующий">Заведующий</option>
<option value="#22 Заместитель заведующего">Заместитель заведующего</option>
<option value="#23 Секретарь руководителя">Секретарь руководителя</option>
<option value="#51 Прочие">Прочие</option>
</select></font><font face="Times New Roman" size="2"> </font>
</td>
</tr>
</table>
<font size="2" face="Times New Roman"><b>Телефоны</b>
<br>
<b>Вводить только цифры, код города не вводить.</b>
<br>
</font>
<TABLE align=center cellSpacing=1 cellPadding=2 width='100%' border=2>
<tr>
<td width='30%'>
<font face="Times New Roman">
<a><font size="2">
<SCRIPT language="VBScript">
if Tow = "*" then Document.write "<font color=#FF0000>"
</script>городской*:</font></a><font size="2"> </font></font>
</td>
<td width='68%'>
<font face="Times New Roman" size="1">
<input name="TelephoneNumberTown" type="text" id="TelephoneNumberTown" title="Номер телефона городской" size=35></font><font face="Times New Roman" size="2">
</font>
</td>
</tr>
<tr>
<td width='30%'>
<font face="Times New Roman">
<a><font size="2">сотовый:</font></a><font size="2"> </font></font>
</td>
<td width='68%'>
<font face="Times New Roman" size="1">
<input name="TelephoneNumberMobile" type="text" id="TelephoneNumberMobile" title="Номер телефона сотовый" size=35></font><font face="Times New Roman" size="2">
</font>
</td>
</tr>
<tr>
<td width='30%'>
<font face="Times New Roman">
<a><font size="2">внутренний:</font></a><font size="2"> </font></font>
</td>
<td width='68%'>
<font face="Times New Roman" size="1">
<input name="TelephoneNumberInt" type="text" id="TelephoneNumberInt" title="Номер телефона внутренний" size=35></font><font face="Times New Roman" size="2">
</font>
</td>
</tr>
<tr>
<td width='30%'>
<font face="Times New Roman">
<a><font size="2">микросотовый:</font></a><font size="2"> </font></font>
</td>
<td width='68%'>
<font face="Times New Roman" size="1">
<input name="TelephoneNumberMobInt" type="text" id="TelephoneNumberMobInt" title="Номер телефона микросотовый" size=35></font><font face="Times New Roman" size="2">
</font>
</td>
</tr>
</table><font size="2" face="Times New Roman"><b>Адрес</b>:<br>
</font>
<TABLE align=center cellSpacing=1 cellPadding=2 width='100%' border=2>
<tr>
<td width='30%'>
<font face="Times New Roman">
<a><font size="2">Город/Населённый пункт:</font></a><font size="2"> </font>
</font>
</td>
<td width='68%'>
<font size="2" face="Times New Roman">
<SCRIPT language="VBScript">
If IsNull(objRecordSet.fields("l").value)=true then
document.write "-"
Else
document.write objRecordSet.fields("l").value
End If
</script>
</font>
</td>
</tr>
<tr>
<td width='30%'>
<font face="Times New Roman">
<a><font size="2">Улица/дом:</font></a><font size="2"> </font></font>
</td>
<td width='68%'>
<font size="2" face="Times New Roman">
<SCRIPT language="VBScript">
If IsNull(objRecordSet.fields("StreetAddress").value)=true then
document.write "-"
Else
document.write objRecordSet.fields("StreetAddress").value
End If
</script>
</font>
</td>
</tr>
<tr>
<tr>
<td width='30%'>
<font face="Times New Roman">
<a><font size="2">
<SCRIPT language="VBScript">
if PDO = "*" then Document.write "<font color=#FF0000>"
</script>Номер кабинета*:</font></a><font size="2"> </font></font>
</td>
<td width='68%'>
<font face="Times New Roman" size="1">
<input name="PhysicalDeliveryOfficeName" type="text" id="PhysicalDeliveryOfficeName" title="Комната" size=35></font><font face="Times New Roman" size="2">
</font>
</td>
</tr>
</table>
<div class="Section1">
</div>
<font face="Times New Roman" size="1">
<input type="submit" name="Submit" value=" ОК " onClick = "Write()"><font face="Times New Roman" size="2">
</font><font face="Times New Roman" size="1">
<input id=quitbutton class="button" type="submit" name="Отмена" value="Отмена" onClick = "Write()"></font><font face="Times New Roman" size="2">
<SCRIPT language="VBScript">
main
</script>
</font></font>
</BODY>
</HTML>
[/more]