Кроме SHELL есть ещё команда RUN, запускающая внешнюю программу ассинхронно, т.е. скрипт продолжает работу не дожидаясь завершения той программы.
» Автоматизация администрирования. Скрипты на KIX
А реально с помощью KiXtart назначить права папке?
Идея какая: логинится юзер в домене - проверяется есть ли у него личная папка на сервере. Если нет - то создаётся с правом доступа только ему великолепному...
Такое можно?
Кстати, у меня почему-то @USERID возвращает 0 (ноль)
Идея какая: логинится юзер в домене - проверяется есть ли у него личная папка на сервере. Если нет - то создаётся с правом доступа только ему великолепному...
Такое можно?
Кстати, у меня почему-то @USERID возвращает 0 (ноль)
AlexSSS
Smitis
Спасибо, огромное, коллеги!!!
Добавлено:
MaTpockuHKoT
назначить права к папке можно с помощью команды cacls, но она будет внешняя для кикса. и потребует соответствующих прав для создания самой папки. logon-script запускается с правами логинящегося юзверя, так что прав на создание папки у него быть не должно. лучше, все же, хоум-драйвы создавать отдельной порцедурой при чек-ине пользователя.
Smitis
Спасибо, огромное, коллеги!!!
Добавлено:
MaTpockuHKoT
назначить права к папке можно с помощью команды cacls, но она будет внешняя для кикса. и потребует соответствующих прав для создания самой папки. logon-script запускается с правами логинящегося юзверя, так что прав на создание папки у него быть не должно. лучше, все же, хоум-драйвы создавать отдельной порцедурой при чек-ине пользователя.
Цитата:
А реально с помощью KiXtart назначить права папке?
Идея какая: логинится юзер в домене - проверяется есть ли у него личная папка на сервере. Если нет - то создаётся с правом доступа только ему великолепному...
Такое можно?
если у самого пользователя есть права на создание папки и изменение прав, то можно. И проще всего это сделать с помощью утилиты cacls
Опишу, как это делается у нас. На сервере есть папка Personal, на которую у пользователей стоят права на просмотр, разрешение на создание папок и полный доступ к создателю. А скрипт просто проверяет, есть ли личная папка у пользователя. если нет, создает ее. При этом автоматически получая права на нее. Личная папка у нас по названию совпадает с @UserID
недостаток - теоретически пользователь может сам вручную понаделать для себя папок в каталоге личных папок. Но реально этого у нас ни разу не было. Да и отследить это просто
vadimo
AlexSSS
Ребята, спасибо за ответы.
Что такое за утилита cacls?
Кстати, я уже кое-что сделал. Кучу ифов понаставил, чтобы при отсутствии связи скрипт не тупил. Зацените, мб что-то надо подправить... Глянь плиз мудрым взглядом.
; Подключение домашнего диска пользователя
CLS
Dim $nam_user,$home_fold,$u_fold,$pub_fold,$pub_ook
$nam_user=@FullName
$home_fold="\\BIRD\Home\"
$pub_fold="\\BIRD\Public"
$pub_ook="\\BIRD\For_OOK"
$u_fold=$home_fold+$nam_user
IF EXIST($u_fold)=0 ;Проверяем доступность домашней папки пользователя
IF EXIST($home_fold)=0 ;Проверяем доступность каталога домашних папок
"Домашний каталог "+$home_fold+" недоступен!"
ELSE ;если каталог доступен, то создаём папку и монтируем диск
MD $u_fold
USE M: /DELETE
USE M: $u_fold
ENDIF
ELSE ; если доступна папка, монтируем диск
USE M: /DELETE
USE M: $u_fold
ENDIF
; Подключение диска Public
IF EXIST($pub_fold)=1 ;Проверяем доступность
USE P: /DELETE
USE P: $pub_fold
ENDIF
; Подключение для ООК
IF INGROUP("ook") and EXIST($pub_ook)=1 ;Проверяем доступность и принадлежность к группе ООК
USE O: /DELETE
USE O: $pub_ook
ENDIF
AlexSSS
Ребята, спасибо за ответы.
Что такое за утилита cacls?
Кстати, я уже кое-что сделал. Кучу ифов понаставил, чтобы при отсутствии связи скрипт не тупил. Зацените, мб что-то надо подправить... Глянь плиз мудрым взглядом.
; Подключение домашнего диска пользователя
CLS
Dim $nam_user,$home_fold,$u_fold,$pub_fold,$pub_ook
$nam_user=@FullName
$home_fold="\\BIRD\Home\"
$pub_fold="\\BIRD\Public"
$pub_ook="\\BIRD\For_OOK"
$u_fold=$home_fold+$nam_user
IF EXIST($u_fold)=0 ;Проверяем доступность домашней папки пользователя
IF EXIST($home_fold)=0 ;Проверяем доступность каталога домашних папок
"Домашний каталог "+$home_fold+" недоступен!"
ELSE ;если каталог доступен, то создаём папку и монтируем диск
MD $u_fold
USE M: /DELETE
USE M: $u_fold
ENDIF
ELSE ; если доступна папка, монтируем диск
USE M: /DELETE
USE M: $u_fold
ENDIF
; Подключение диска Public
IF EXIST($pub_fold)=1 ;Проверяем доступность
USE P: /DELETE
USE P: $pub_fold
ENDIF
; Подключение для ООК
IF INGROUP("ook") and EXIST($pub_ook)=1 ;Проверяем доступность и принадлежность к группе ООК
USE O: /DELETE
USE O: $pub_ook
ENDIF
MaTpockuHKoT
> Что такое за утилита cacls?
входит в состав XP
Start-->Run-->cmd-->cacls
> Что такое за утилита cacls?
входит в состав XP
Start-->Run-->cmd-->cacls
2AlexSSS - спасибо.
Заметил "интересную" вещь с русскими буквами в строковых переменных. Например:
CLS
Dim $a
$a="Ё"
$a
Выдаёт на экран набор символов (смайлик и бубну). А вот если сделать вот так:
CLS
Dim $a
$a="Ё "
$a
или в строке присутствует любой символ, отличный от нашего алфавита (причём неважно в каком месте) - тогда всё нормально.
Версия KiXtart 4.60 Beta 2a
Кто-нибудь наблюдал подобное? И как это лечить?
Заметил "интересную" вещь с русскими буквами в строковых переменных. Например:
CLS
Dim $a
$a="Ё"
$a
Выдаёт на экран набор символов (смайлик и бубну). А вот если сделать вот так:
CLS
Dim $a
$a="Ё "
$a
или в строке присутствует любой символ, отличный от нашего алфавита (причём неважно в каком месте) - тогда всё нормально.
Версия KiXtart 4.60 Beta 2a
Кто-нибудь наблюдал подобное? И как это лечить?
MaTpockuHKoT
Цитата:
Глюк.
В версии 4.53 всё нормально.
Цитата:
Выдаёт на экран набор символов (смайлик и бубну). А вот если сделать вот так
Глюк.
В версии 4.53 всё нормально.
Начинаю тихо звереть....
Мало того, что ни с того ни с сего ситуация с русскими буквами резко ухудшилась (они теперь всегда так отображаются), так ещё и скрипт при логоне стартует когда ему вздумается.
Первоначально во вкладке "Профиль" учётки юзера АД прописал kix32. В папке \NETLOGON рядом с kix32.exe лежал и файлик kixtart.kix в котором скрипт. Всё нормально запускалось.
А тут - бац и нифига. При логоне моргает стартанувший kix и всё. Скрипт не идёт.
Прописал в профиле kix32.exe kixtart.kix - заработало, но не у всех
Скоро поедет крыша...
Мало того, что ни с того ни с сего ситуация с русскими буквами резко ухудшилась (они теперь всегда так отображаются), так ещё и скрипт при логоне стартует когда ему вздумается.
Первоначально во вкладке "Профиль" учётки юзера АД прописал kix32. В папке \NETLOGON рядом с kix32.exe лежал и файлик kixtart.kix в котором скрипт. Всё нормально запускалось.
А тут - бац и нифига. При логоне моргает стартанувший kix и всё. Скрипт не идёт.
Прописал в профиле kix32.exe kixtart.kix - заработало, но не у всех
Скоро поедет крыша...
MaTpockuHKoT
Может стОит юзать последний проверенный релиз, а не бету?
Может стОит юзать последний проверенный релиз, а не бету?
Да я разобрался.
Дело оказалось в самой АД, которая из двух сереверов, и тут рюхнулась реплика. А логон шёл то с одного, то с другого...
Ща заработало...
Дело оказалось в самой АД, которая из двух сереверов, и тут рюхнулась реплика. А логон шёл то с одного, то с другого...
Ща заработало...
Задача поставила меня в тупик, нужно при логоне пользователя @userid прописывать в сведения о пользователе в Office. Дело в том, что у меня на машинах есть Office2k и Office 3k, ну я думал хранятся себе данные в ветке какой-нить об имени пользователя, но всё не так просто http://support.microsoft.com/kb/290528/ru
В принципе можно сразу на все офисы писать в реестр, менять "UserName"=hex:41,00,6c,00,65,00,78,00,38,00,00,00 но ведь имя надо как-то в такую строку преобразовать в в REG_BINARY ...
PS Нужно для того, чтобы оффис в создаваемых документах проставлял реальное имя пользователя.
...Всё, сваял...
$LE=LEN(@USERID)
:LOOPLE
$LE=($LE-1)
$x=DECTOHEX (Asc(SUBSTR(@USERID, LEN(@USERID)-$LE, 1)))
$ren=$ren+$x+"00"
IF ($LE > 0) GOTO LOOPLE ELSE $ren=$ren+"0000" ENDIF
Writevalue ("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo", "UserName", $ren, "REG_BINARY")
Writevalue ("HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\UserInfo", "UserName", $ren, "REG_BINARY")
Writevalue ("HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\UserInfo", "UserName", $ren, "REG_BINARY")
PPS Мне не очень нравятся последние 3 строчки, может можно узнавать как-то где офис и записывать конкретно, а не создавать ненужные ветки?
В принципе можно сразу на все офисы писать в реестр, менять "UserName"=hex:41,00,6c,00,65,00,78,00,38,00,00,00 но ведь имя надо как-то в такую строку преобразовать в в REG_BINARY ...
PS Нужно для того, чтобы оффис в создаваемых документах проставлял реальное имя пользователя.
...Всё, сваял...
$LE=LEN(@USERID)
:LOOPLE
$LE=($LE-1)
$x=DECTOHEX (Asc(SUBSTR(@USERID, LEN(@USERID)-$LE, 1)))
$ren=$ren+$x+"00"
IF ($LE > 0) GOTO LOOPLE ELSE $ren=$ren+"0000" ENDIF
Writevalue ("HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo", "UserName", $ren, "REG_BINARY")
Writevalue ("HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Common\UserInfo", "UserName", $ren, "REG_BINARY")
Writevalue ("HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Common\UserInfo", "UserName", $ren, "REG_BINARY")
PPS Мне не очень нравятся последние 3 строчки, может можно узнавать как-то где офис и записывать конкретно, а не создавать ненужные ветки?
Вопрос, можно ли на kix сделать следующее:
Юзеру копируется файл
Если файл уже есть на ПК, копирование не происходит
??
Добавлено:
вопрос отменяется..
но есть другой
написал скрипт, все ок работает, но есть засада с путями
RUN "c:\Documents and Settings\user\Local Settings\Temp\program.exe"
работает нормально, а если напишу -
RUN "\%TEMP%\Bginfo.exe"
то не работает..
Как выйти из положения, подскажите..
Юзеру копируется файл
Если файл уже есть на ПК, копирование не происходит
??
Добавлено:
вопрос отменяется..
но есть другой
написал скрипт, все ок работает, но есть засада с путями
RUN "c:\Documents and Settings\user\Local Settings\Temp\program.exe"
работает нормально, а если напишу -
RUN "\%TEMP%\Bginfo.exe"
то не работает..
Как выйти из положения, подскажите..
ra1n
> RUN "\%TEMP%\Bginfo.exe" - не работает..
? "\%TEMP%\Bginfo.exe"
теперь понятно?
> RUN "\%TEMP%\Bginfo.exe" - не работает..
? "\%TEMP%\Bginfo.exe"
теперь понятно?
здравствуйте!
нужно выполнить проверку наличия ярлыка на рабочем столе пользователя
и если нет - создать(или переписать откуда нито)
IF EXIST (%UserProfile% + "\Рабочий стол\1С Предприятие.lnk")
DISPLAY %UserProfile% + "\Рабочий стол\users.txt"
ENDIF
на строчку DISPLAY %UserProfile% не обращайте внимание, это просто пока для проверки
здесь будет действие создания или копирования ярлыка
вопрос номер раз - каким символом заменить пробел в имени ярлыка "1С Предприятие" а то скрипт не понимает его(пробел)
и второй, можно ли средствами KiXtart создать ярлык(потому как у пользователей по разному обозван системный диск проще было бы оперировать %SystemDrive%)
Добавлено:
странно, сейчас имя с пробелом нормально отработало
но как создать ярлык пока не знаю
нужно выполнить проверку наличия ярлыка на рабочем столе пользователя
и если нет - создать(или переписать откуда нито)
IF EXIST (%UserProfile% + "\Рабочий стол\1С Предприятие.lnk")
DISPLAY %UserProfile% + "\Рабочий стол\users.txt"
ENDIF
на строчку DISPLAY %UserProfile% не обращайте внимание, это просто пока для проверки
здесь будет действие создания или копирования ярлыка
вопрос номер раз - каким символом заменить пробел в имени ярлыка "1С Предприятие" а то скрипт не понимает его(пробел)
и второй, можно ли средствами KiXtart создать ярлык(потому как у пользователей по разному обозван системный диск проще было бы оперировать %SystemDrive%)
Добавлено:
странно, сейчас имя с пробелом нормально отработало
но как создать ярлык пока не знаю
лови готовый код, который делает ярлыки
Код:
DIM $res
DIM $WSHShell, $DesktopPath
$WSHShell = CreateObject("WScript.Shell")
$DesktopPath = $WSHShell.SpecialFolders("Desktop")
$ShortcutName = "$DesktopPath\мой супер ярлык.lnk"
IF not exist($ShortcutName)
$MyShortcut = $WSHShell.CreateShortcut($ShortcutName)
$MyShortcut.TargetPath = "m:\common\soft\permit\start.exe"
$MyShortcut.WorkingDirectory = "m:\common\soft\permit"
$MyShortcut.WindowStyle = 4
$MyShortcut.Save()
endif
Код:
DIM $res
DIM $WSHShell, $DesktopPath
$WSHShell = CreateObject("WScript.Shell")
$DesktopPath = $WSHShell.SpecialFolders("Desktop")
$ShortcutName = "$DesktopPath\мой супер ярлык.lnk"
IF not exist($ShortcutName)
$MyShortcut = $WSHShell.CreateShortcut($ShortcutName)
$MyShortcut.TargetPath = "m:\common\soft\permit\start.exe"
$MyShortcut.WorkingDirectory = "m:\common\soft\permit"
$MyShortcut.WindowStyle = 4
$MyShortcut.Save()
endif
спасибо
скрипт отрабатывается без ошибок но найти ярлык не могу :'(
скрипт отрабатывается без ошибок но найти ярлык не могу :'(
а так?
Код:
DIM $res
DIM $WSHShell, $DesktopPath
$WSHShell = CreateObject("WScript.Shell")
$DesktopPath = $WSHShell.SpecialFolders("Desktop")
$ShortcutName = "$DesktopPath\мой супер ярлык.lnk"
IF not exist($ShortcutName)
$MyShortcut = $WSHShell.CreateShortcut($ShortcutName)
$MyShortcut.TargetPath = "c:\windows\notepad.exe"
$MyShortcut.WindowStyle = 4
$MyShortcut.Save()
endif
Код:
DIM $res
DIM $WSHShell, $DesktopPath
$WSHShell = CreateObject("WScript.Shell")
$DesktopPath = $WSHShell.SpecialFolders("Desktop")
$ShortcutName = "$DesktopPath\мой супер ярлык.lnk"
IF not exist($ShortcutName)
$MyShortcut = $WSHShell.CreateShortcut($ShortcutName)
$MyShortcut.TargetPath = "c:\windows\notepad.exe"
$MyShortcut.WindowStyle = 4
$MyShortcut.Save()
endif
ооо!
все заработало!
спасиба!!!
все заработало!
спасиба!!!
Цитата:
Сбор информации об железе компьютера
Предварительно скачивается программа mvSysInfo с http://idb.newmail.ru/programs.html
программа работает под любой Win операционкой, начиная с Win95. Скрипт легко переделать под использование любой другой программы, собирающей информацию об железе.
mvSysInfo записывается в подкаталог _Admin пути, который вы задали в $PathLog
Вызов этого скрипта записывается в конец предыдущего скрипта перед EXIT
Call "k_hardware.kix"
Ссылка не найдена,подскажите,где ещё можно её достать?
п.с. а на русском языке есть инструкция ?
xttp://archive.rin.ru/more/6091.html/
а на русском в администрировании вообще очень мало исрукций, а то что есть - только сбивает, иногда лучше никакой
xttp://narod.yandex.ru/100.xhtml?neoprogs.narod.ru/Utils/05_06_01/mvSysInfo.exe
вот ещё на всякий случай, а то действительно с этой версией всё мёртво
а на русском в администрировании вообще очень мало исрукций, а то что есть - только сбивает, иногда лучше никакой
xttp://narod.yandex.ru/100.xhtml?neoprogs.narod.ru/Utils/05_06_01/mvSysInfo.exe
вот ещё на всякий случай, а то действительно с этой версией всё мёртво
Интересно начиналась тема, точнее она так и не началась потому как не написано с чего начинать, сразу полезли вопросы про скрипты.
У меня есть следующая задача подключать пользователям домена при входе в систему два сетевых диска.
1-это общая папка (диск)
2-личная папка (диск) для каждого пользователя.
Как это можно сделать с чего начать? Интересует не просто скрипт а куда его положить чтобы он запускался куда положить KIX и т.д.
У меня есть следующая задача подключать пользователям домена при входе в систему два сетевых диска.
1-это общая папка (диск)
2-личная папка (диск) для каждого пользователя.
Как это можно сделать с чего начать? Интересует не просто скрипт а куда его положить чтобы он запускался куда положить KIX и т.д.
ss777
> Интересует не просто скрипт а куда его положить
> чтобы он запускался куда положить KIX и т.д.
для KIX-а эти вопросы решаются аналогично любым другим логонным скриптам
1. проще всего поместить KIX и скрипты на \\DomainController\Netlogon
2. запуск скриптов прописывается или на каждого пользователя через оснастку Active Directory Users and Computers или через политики
подробнее см. в основной ветке по скриптам (ссылка в первом сообщении)
> Интересует не просто скрипт а куда его положить
> чтобы он запускался куда положить KIX и т.д.
для KIX-а эти вопросы решаются аналогично любым другим логонным скриптам
1. проще всего поместить KIX и скрипты на \\DomainController\Netlogon
2. запуск скриптов прописывается или на каждого пользователя через оснастку Active Directory Users and Computers или через политики
подробнее см. в основной ветке по скриптам (ссылка в первом сообщении)
Помогите новичку. Нужен скрипт по проверке неработающих ссылок в сетевом окружении (nethood).
Вот маленький скрипт, вроде работает если исчезает расшаренный ресурс на другом ПК.
Function DropBadLinkNetHood()
dim $WSHShell, $FSO, $Folder, $File, $Text, $Sortcut
$FSO = CreateObject("Scripting.FileSystemObject")
$WSHShell = CreateObject("WScript.Shell")
$Folder = $FSO.GetFolder($WSHShell.SpecialFolders("NetHood"))
for each $File In $Folder.Subfolders
$Sortcut = $WSHShell.CreateShortcut($File.files.item("target.lnk"))
if not exist($Sortcut.TargetPath)
$File.Delete(true)
endif
next
$ = MessageBox($Text,"")
EndFunction
Если этот ресурс был на ПК где запускается скрипт, то не работает. Как средствами kix или wsh проверить расшарена папка на данном ПК или нет?
Вот маленький скрипт, вроде работает если исчезает расшаренный ресурс на другом ПК.
Function DropBadLinkNetHood()
dim $WSHShell, $FSO, $Folder, $File, $Text, $Sortcut
$FSO = CreateObject("Scripting.FileSystemObject")
$WSHShell = CreateObject("WScript.Shell")
$Folder = $FSO.GetFolder($WSHShell.SpecialFolders("NetHood"))
for each $File In $Folder.Subfolders
$Sortcut = $WSHShell.CreateShortcut($File.files.item("target.lnk"))
if not exist($Sortcut.TargetPath)
$File.Delete(true)
endif
next
$ = MessageBox($Text,"")
EndFunction
Если этот ресурс был на ПК где запускается скрипт, то не работает. Как средствами kix или wsh проверить расшарена папка на данном ПК или нет?
Подскажите плиз... как с помощью kix проверить я вляется ли принтер подключенным по умолчанию...
При входе пользователя, я удаляю все принтеры... и хочу запомнить принтер, бывший по умолчанию в перем $DefPrinter
$Index=0
$Printer=""
$DefPrinter=""
Do
$Printer = lcase(ENUMKEY("HKEY_CURRENT_USER\Printers\Connections\", $Index))
if SetDefaultPrinter($Printer) = 0
$DefPrinter=$Printer
EndIf
$defpr1="\\" + right(left($Printer,10),8) + "\" + right($Printer,len($Printer)-11)
$del=DelPrinterConnection($defpr1)
$Index = $Index + 1
Until Len($Printer) = 0
дальше, я подключаю принтеры....
и если принтер бывший по умолчанию, снова входит в список подключенных, я делаю его по умолчанию...
Проблема в том, что
if SetDefaultPrinter($Printer) = 0
$DefPrinter=$Printer
EndIf
не срабатывает.... тоесть происходит не проверка принтера на использование по умолчанию.... а просто по очереди всем принтерам присваивается значение по умолчанию... и соответственно невозможно восстановить какой принтер использовался по умолч
При входе пользователя, я удаляю все принтеры... и хочу запомнить принтер, бывший по умолчанию в перем $DefPrinter
$Index=0
$Printer=""
$DefPrinter=""
Do
$Printer = lcase(ENUMKEY("HKEY_CURRENT_USER\Printers\Connections\", $Index))
if SetDefaultPrinter($Printer) = 0
$DefPrinter=$Printer
EndIf
$defpr1="\\" + right(left($Printer,10),8) + "\" + right($Printer,len($Printer)-11)
$del=DelPrinterConnection($defpr1)
$Index = $Index + 1
Until Len($Printer) = 0
дальше, я подключаю принтеры....
и если принтер бывший по умолчанию, снова входит в список подключенных, я делаю его по умолчанию...
Проблема в том, что
if SetDefaultPrinter($Printer) = 0
$DefPrinter=$Printer
EndIf
не срабатывает.... тоесть происходит не проверка принтера на использование по умолчанию.... а просто по очереди всем принтерам присваивается значение по умолчанию... и соответственно невозможно восстановить какой принтер использовался по умолч
Сорри не в тот топ пульнул
Исправляет некорректное имя автора в Office 2003 на ФИО (displayName) из AD.
Собственно баг в кодировке при добавлении в реестр. Коллеги как исправить?
(видимо ldap utf > реестр 1251)
Код: Set fs = CreateObject("Scripting.FileSystemObject")
set WshShell = WScript.CreateObject("WScript.Shell")
' get UserName
strName = WshShell.ExpandEnvironmentStrings("%USERNAME%")
On Error Resume Next
' Constants for the NameTranslate object.
Const ADS_NAME_INITTYPE_DOMAIN = 1
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1179 = 1
Set objNetwork = CreateObject("Wscript.Network")
' Determine DNS domain name from RootDSE object.
Set objRootDSE = GetObject("LDAP://RootDSE")
If Err.Number <> 0 Then
Wscript.Quit
End If
strDNSDomain = objRootDSE.Get("defaultNamingContext")
' Use the NameTranslate object to find the NetBIOS domain name from the
' DNS domain name.
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_TYPE_NT4, strDNSDomain
objTrans.Set ADS_NAME_TYPE_1179, strDNSDomain
strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)
' Remove trailing backslash.
strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)
' Use the NameTranslate object to convert the NT user name to the
' Distinguished Name required for the LDAP provider.
objTrans.Init ADS_NAME_INITTYPE_DOMAIN, strNetBIOSDomain
objTrans.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1179)
' Bind to the user object in Active Directory with the LDAP provider.
Set objUser = GetObject("LDAP://" & strUserDN)
'Get Common name
strUsername=objUser.Get("displayName") & ", " & objUser.Get("telephoneNumber")
'strUsername= objUser.cn
'WScript.Echo strUsername
'Convert Initials to HEX
For i = 1 to Len(strName)
strInitialsHex = strInitialsHex & "," & Hex(Asc(Mid(strName, i, 1))) & ",00"
Next
strInitialsHex = Right(strInitialsHex , Len(strInitialsHex ) -1)
strInitialsHex = strInitialsHex & ",00,00"
'Convert Username to HEX
For i = 1 to Len(strUsername)
strUsernameHex = strUsernameHex & "," & Hex(Asc(Mid(strUsername, i, 1))) & ",00"
Next
strUsernameHex = Right(strUsernameHex, Len(strUsernameHex) -1)
strUsernameHex = strUsernameHex & ",00,00"
' Create temporary registry file
Const OverwriteIfExist = -1
Const FailIfExist = 0
Const OpenAsASCII = 0
Const OpenAsUnicode = -1
Const OpenAsDefault = -2
sTmpFile = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\UserInfo.reg"
Set fFile = fs.CreateTextFile(sTmpFile, OverwriteIfExist, OpenAsASCII)
' Write to the temporary registry file
fFile.WriteLine "Windows Registry Editor Version 5.00"
fFile.WriteLine
fFile.WriteLine "[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo]"
fFile.WriteLine """UserName""=hex:" & strUsernameHex
fFile.WriteLine """UserInitials""=hex:" & strInitialsHex
fFile.Close
' Import the registry file
WshShell.Run "regedit /s " & sTmpFile, 0, True
' Delete the temporary registry file
fs.DeleteFile sTmpFile
Исправляет некорректное имя автора в Office 2003 на ФИО (displayName) из AD.
Собственно баг в кодировке при добавлении в реестр. Коллеги как исправить?
(видимо ldap utf > реестр 1251)
Код: Set fs = CreateObject("Scripting.FileSystemObject")
set WshShell = WScript.CreateObject("WScript.Shell")
' get UserName
strName = WshShell.ExpandEnvironmentStrings("%USERNAME%")
On Error Resume Next
' Constants for the NameTranslate object.
Const ADS_NAME_INITTYPE_DOMAIN = 1
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1179 = 1
Set objNetwork = CreateObject("Wscript.Network")
' Determine DNS domain name from RootDSE object.
Set objRootDSE = GetObject("LDAP://RootDSE")
If Err.Number <> 0 Then
Wscript.Quit
End If
strDNSDomain = objRootDSE.Get("defaultNamingContext")
' Use the NameTranslate object to find the NetBIOS domain name from the
' DNS domain name.
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_TYPE_NT4, strDNSDomain
objTrans.Set ADS_NAME_TYPE_1179, strDNSDomain
strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)
' Remove trailing backslash.
strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)
' Use the NameTranslate object to convert the NT user name to the
' Distinguished Name required for the LDAP provider.
objTrans.Init ADS_NAME_INITTYPE_DOMAIN, strNetBIOSDomain
objTrans.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1179)
' Bind to the user object in Active Directory with the LDAP provider.
Set objUser = GetObject("LDAP://" & strUserDN)
'Get Common name
strUsername=objUser.Get("displayName") & ", " & objUser.Get("telephoneNumber")
'strUsername= objUser.cn
'WScript.Echo strUsername
'Convert Initials to HEX
For i = 1 to Len(strName)
strInitialsHex = strInitialsHex & "," & Hex(Asc(Mid(strName, i, 1))) & ",00"
Next
strInitialsHex = Right(strInitialsHex , Len(strInitialsHex ) -1)
strInitialsHex = strInitialsHex & ",00,00"
'Convert Username to HEX
For i = 1 to Len(strUsername)
strUsernameHex = strUsernameHex & "," & Hex(Asc(Mid(strUsername, i, 1))) & ",00"
Next
strUsernameHex = Right(strUsernameHex, Len(strUsernameHex) -1)
strUsernameHex = strUsernameHex & ",00,00"
' Create temporary registry file
Const OverwriteIfExist = -1
Const FailIfExist = 0
Const OpenAsASCII = 0
Const OpenAsUnicode = -1
Const OpenAsDefault = -2
sTmpFile = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\UserInfo.reg"
Set fFile = fs.CreateTextFile(sTmpFile, OverwriteIfExist, OpenAsASCII)
' Write to the temporary registry file
fFile.WriteLine "Windows Registry Editor Version 5.00"
fFile.WriteLine
fFile.WriteLine "[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo]"
fFile.WriteLine """UserName""=hex:" & strUsernameHex
fFile.WriteLine """UserInitials""=hex:" & strInitialsHex
fFile.Close
' Import the registry file
WshShell.Run "regedit /s " & sTmpFile, 0, True
' Delete the temporary registry file
fs.DeleteFile sTmpFile
Уважаемые!
Нужен скрипт простой, но с заковыркой. Желательно в batch-пакете, но может быть и на kix кто-то знает. ПОдскажите, как сделать?
Задача:
При запуске скрипта в папке F:\Archive создается новая папка с названием, которое должно содержать текущую дату (Типа "archive_19.04.2009"), и затем в эту созданную папку копируется файл back_full.bkf из папки F:\Backup. Всё!
Подскажите готовое решение, или скажите как подставить в имя создаваемой папки текущую дату?
Спасибо откликнувшимся.
Нужен скрипт простой, но с заковыркой. Желательно в batch-пакете, но может быть и на kix кто-то знает. ПОдскажите, как сделать?
Задача:
При запуске скрипта в папке F:\Archive создается новая папка с названием, которое должно содержать текущую дату (Типа "archive_19.04.2009"), и затем в эту созданную папку копируется файл back_full.bkf из папки F:\Backup. Всё!
Подскажите готовое решение, или скажите как подставить в имя создаваемой папки текущую дату?
Спасибо откликнувшимся.
AlexeyZet
Как-то так:
cd F:\Archive
md archive_%date%
copy F:\Backup\back_full.bkf F:\Archive\archive_%date%
Как-то так:
cd F:\Archive
md archive_%date%
copy F:\Backup\back_full.bkf F:\Archive\archive_%date%
мужыки а как сделать так шоб для группы пользователей в домене запускался экзешник на всех компах введенных в домен кроме одного ?
mupybup
ну так делай любые условия, испольуя @wksta и @Ingroup()
ну так делай любые условия, испольуя @wksta и @Ingroup()
Предыдущая тема: включение DHCP на клиентах через GPO
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.