Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования. Часть 2

Автор: YNY
Дата сообщения: 11.01.2008 05:56

Цитата:
mistx
тебе
Цитата:
veryom
дал "рыбу", а ты вопросы... сыпешь.

strComputer для каждого Set oReg=GetObject() свой, если надо по списку компов, то формируй массив и цикл.
Автор: veryom
Дата сообщения: 11.01.2008 07:18
mistx

Цитата:
указывать машины через запятую ?


Цитата:
Проверить доступность машины, например, при помощи пинга.Если коннект есть, то подсоединиться к машине и изменить нужную ветку реестра.Повторить предыдущие пункты по числу машин в сети.
Нужно использовать цикл по IP-адресам машин сети, например с 192.168.45.1 до 192.168.45.254. Т.е. как сказал YNY:
Цитата:
strComputer для каждого Set oReg=GetObject() свой, если надо по списку компов, то формируй массив и цикл.



Цитата:
Если нужно изменить несколько значений в одном ключе, например сделать автологон на всех машинах в домене, то просто можно добавить несколько strValue?

Нет. Этим ты перезапишешь значение ключа. Нужно указать значения через какой-нибудь разделитель.


Цитата:
Что означает 82?

Это просто пример установки в ключе реестра HKLM\SOFTWARE\System Admin Scripting Guide\DWORD Value Name значения 82. Можешь подставить что-нибудь свое.
Автор: mistx
Дата сообщения: 11.01.2008 15:44
veryom
Спасибо! буду переваривать

YNY

Цитата:
strComputer для каждого Set oReg=GetObject() свой


если не трудно для тех, кто в танке
что значит свой Set oReg=GetObject()?
Какие именно параметры я сюда должен вставить?
GetObject("LDAP://dc=nwtraders,dc=msft")
на живой пример бы посмотреть
Автор: WSQ
Дата сообщения: 12.01.2008 16:22
Вопрос снял сам
Автор: veryom
Дата сообщения: 12.01.2008 21:05
WSQ

Цитата:
меняю имя группы на название группы с пробелом "Опытные пользователи" - скрипт не работает. Как же записать имя группы с пробелом?

Попробуй имя группы в одинарных кавычках.
Автор: YNY
Дата сообщения: 14.01.2008 08:06

Цитата:
mistx


куда уж "живее" чем то что было указанно???

[b]Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")[b]


Цитата:
что значит свой Set oReg=GetObject()?
--- это значит, что мне было влом (для тех кто умеет читать) переписывать соотоветствующую строку от
Цитата:
veryom
!

лучше чем массив IP это вызов твоего скрипта меняющего ключики из другова скрипта, который бежит по LDAP, т.к. не прийдется лишней работы делать, да и DHCP тоды никак не повлияет, в общем будет более программерски)!

(...бежит по LDAP... -- есть на страницах см. внимательно, не ленисьЯ)
Автор: Vladimir54
Дата сообщения: 14.01.2008 22:17
Ребят, подскажите как написать скрипт, чтобы при его запуске например выдавалось сообщение "В данный момент работает программа Антиюзер!!!" При этом скрипт должен запускаться у пользователя, имеющего права "Пользователь"
Автор: veryom
Дата сообщения: 14.01.2008 22:30
Vladimir54

WScript.Echo "В данный момент работает программа Антиюзер!!!"
Автор: Vladimir54
Дата сообщения: 14.01.2008 22:34
veryom
Здравствуйте, спасибо, вы мне уже какой раз помогаете, кстати помоему програмку с кабелем вы написали на скрипте

Добавлено:
veryom
А скрипт разве будет запускать с компа пользователя, который добавлен в группу "Пользователи"
Автор: veryom
Дата сообщения: 14.01.2008 23:17
Vladimir54

Лучше так:
Код: MsgBox "В данный момент работает программа Антиюзер!!!", 16, "Предупреждение"
Автор: Vladimir54
Дата сообщения: 14.01.2008 23:27
veryom
Решил юзверей попугать, чтобы работой занимались, а не играми и болтологией
Автор: YDOG
Дата сообщения: 15.01.2008 06:55
Может быть вы мне поможете..
Есть программка, которую должна быть постоянно запущена на компьютере.
(система видеонаблюдения), а ее постоянно сворачивают. Как сделать чтобы скрипт отслеживал это и разворачивал на весь экран снова? Толкните в нужном направлении.
Автор: hamet2000
Дата сообщения: 16.01.2008 01:36
как в vbs узнать именно dns имя компьютера типа computer.test.com ?
Автор: YNY
Дата сообщения: 16.01.2008 04:39
hamet2000
nslookup _ip_
а затем редактируй
Автор: cluster
Дата сообщения: 17.01.2008 11:24

Код: set objGroup = GetObject("LDAP://" & strGroup1)
objGroup.Remove("LDAP://" & strMemberDN)
Автор: PhoenixUA
Дата сообщения: 17.01.2008 13:48
cluster
А проверкой ?
[more]
Set objRootDSE = GetObject("LDAP://RootDSE")
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_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_1779, 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.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strNTName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)

' Bind to the user object in Active Directory with the LDAP provider.
Set objUser = GetObject("LDAP://" & strUserDN)

If (IsMember(objUser, "group") = True) Then
...
End If
...

Function IsMember(objADObject, strGroup)
' Function to test for group membership.
' objADObject is a user or computer object.
' strGroup is the NT Name of the group to test.
' objGroupList is a dictionary object with global scope.
' Returns True if the user or computer is a member of the group.
' Subroutine LoadGroups is called once for each different objADObject.

If (IsEmpty(objGroupList) = True) Then
Set objGroupList = CreateObject("Scripting.Dictionary")
End If
If (objGroupList.Exists(objADObject.sAMAccountName & "\") = False) Then
Call LoadGroups(objADObject, objADObject)
objGroupList. Add objADObject.sAMAccountName & "\", True
End If
IsMember = objGroupList.Exists(objADObject.sAMAccountName & "\" _
& strGroup)
End Function
[/more]
Автор: Starley25
Дата сообщения: 18.01.2008 12:48
Господа!

Сильно извиняюсь - далек от знаний в области скриптописания.
Может кто-нить поможет: необходим скрипт для создания (занесения) в журнал (EventViewer) события в Aplication либо в System.

С уважением Starley25.

P.S. Извиняюсь за беспокойство - сам нашел.
Автор: mistx
Дата сообщения: 19.01.2008 14:12
Интересует скрипт, который бы изменял разрешение экрана (1024х768 и 800х600)
Применительно как для домена так и для рабочей группы.
Прочитал на Hey, Scripting Guy!, что нет такого скрипта, который бы изменял разрешение.
Какие еще есть способы сделать это?
Может кто-нибудь видел административный шаблон для AD.

За любую помощь благодарен.
Автор: cluster
Дата сообщения: 19.01.2008 23:40
mistx
скрипта не встречал, но есть утилиты, например NirComLine. На удалённую машину либо через политику, либо через [MORE=psexec.exe]вызов программ и др. на удалённой машине. утилита входит в состав набора PsTools.zip[/MORE] применять.
Автор: leonski
Дата сообщения: 20.01.2008 00:26
Господа script гуру, пожалуйста подскажите (а ещё лучше дайте готовый рабочий скрипт на vbscript, powershell или dos batch file для создания home folders для уже созданных заранее юзеров в Win2003 Active Directoty домене. Тоесть, пользователи уже созданы, нужно теперь создать им home папки на файл сервере. Папка должна быть создана и зашарена с именем юзера. В добавок ко всему, доступ к home папке имеет только тот юзер для которого она была создана. Заранее спасибо
Автор: G14
Дата сообщения: 20.01.2008 09:41
leonski
http://www.scriptinganswers.com/archive/articles/VBScriptthatcreatesHomeFolder-Helpneeded.htm
Автор: leonski
Дата сообщения: 21.01.2008 03:17
[
Цитата:
leonski
http://www.scriptinganswers.com/archive/articles/VBScriptthatcreatesHomeFolder-Helpneeded.htm
Спасибо за линк. К сожалению данный скрипт не делает share на папки. Не будешь же вручную зашаривать 300 home folders. В добавок ко всему, данный скрипт у меня не хочет работать. Так как я только начал заниматься vbscript-ами то мозгов пока не хватает почему он не работает

Привожу пример срипа внизу (я его просто скопировал с вышеуказанного линка)

Const WAIT_ON_RETURN = True
Const HIDE_WINDOW = 0
Const USER_ROOT_UNC = "\\Server1\users"
' Const strDomainName = "testdomain"

Dim objDomain
Dim objUser
Dim vReturn

Dim WshShell, WshNetwork, objFS, strUser

Set WshShell = Wscript.CreateObject("Wscript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set objFS = CreateObject("Scripting.FileSystemObject")

ReDim vReturn(0)

' Connect to the domain
' Set objDomain = GetObject("WinNT://" & strDomainName)

Set objDomain = GetObject(LDAP://OU=Test Users,DC=test,DC=local)
' apply a filter to retrieve only objects of class User
' objDomain.Filter = Array("User")

' iterate all user objects within the container
For Each objUser In objDomain

If objUser.class = "user" then

If Trim(vReturn(0)) <> "" Then
ReDim Preserve vReturn(UBound(vReturn) + 1)
End If
vReturn(UBound(vReturn)) = objUser.samAccountName

strUser = objUser.samAccountName

Call objFS.CreateFolder(USER_ROOT_UNC & "\" & strUser)
Call WshShell.Run("cacls " & USER_ROOT_UNC & "\" & strUser & _
" /e /g Administrator:F", HIDE_WINDOW, WAIT_ON_RETURN)
Call WshShell.Run("cacls " & USER_ROOT_UNC & "\" & strUser & _
" /e /g " & strUser & ":C", HIDE_WINDOW, WAIT_ON_RETURN)

End If
Next

Set objUser = Nothing
Set objDomain = Nothing
GetComputerUsers = vReturn
==

Выбивает ошибку в строке Set objDomain = GetObject(LDAP://OU=Test Users,DC=testdomain,DC=local), PrimalScript ругается и говорит вот это: Microsoft VBScript compilation error: Expected ')' Заменил строку вот этим: Set objDomain = GetObject("LDAP://OU=Test Users,DC=testdomain,DC=local") - Поставил "..." между LDAP Теперь ругается вот этим: (null): Unspecified error В чём проблема! Подсобите с советом пожалуйста.

Автор: Etalon
Дата сообщения: 21.01.2008 10:20
leonski
А зачем Вам именно 300 шар. Сделайте одну шару, с доступом "изменить" для всех пользователей. И в этой шаре 300 домашних папок пользователей и уже на эти папки раздайте для каждого пользователя свои права с помощью NTFS
Выглядеть это будет примерно так
\\Server\Users
|
Vasya
|
Petya
|
Masha
...
|
Dima


На PowerShell получение списка пользователей и создание папок в уже сушествующей шаре \\Server\Users будет выглядеть примерно так. Сам протестировать, к сожалению, пока не могу

Код:
$strFilter = "user"

$Domain = [adsi]"LDAP://OU=Test Users,DC=testdomain,DC=local"
$Searcher = New-Object System.DirectoryServices.DirectorySearcher
$Searcher.SearchRoot = $Domain
$Searcher.SearchScope = "Subtree"
$Searcher.PageSize = 1000

$Searcher.Filter = "(objectCategory=$strFilter)"

$s = ""

$Searcher.FindAll() | ForEach-Object -Process {
    $Entry = $_.GetDirectoryEntry()
new-item -path "\\Server\Users" -name $Entry.sAMAccountName -type "directory"
}
Автор: YNY
Дата сообщения: 21.01.2008 11:26

Цитата:
Теперь ругается вот этим: (null): Unspecified error

1-- TU="Test Users" , Set objDomain = GetObject("LDAP://OU=" & TU & ",DC=testdomain,DC=local")

2--Set objDomain = GetObject("LDAP://OU=" & "Test Users" & ",DC=testdomain,DC=local")
Автор: Romanov_Ilya
Дата сообщения: 21.01.2008 16:20

Цитата:
jONES1979

Цитата:
Const ADS_UF_PASSWORD_CANT_CHANGE = &H40
Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000

Flag = objUser.Get("UserAccountControl")
newFlag = Flag or ADS_UF_PASSWORD_CANT_CHANGE
newFlag = newFlag or ADS_UF_DONT_EXPIRE_PASSWD
objUser.Put "userAccountControl", newFlag

Пасиба, но не ставится галка "Пользователь не может менять пароль"


    Const ADS_UF_PASSWORD_CANT_CHANGE = &h0040
    Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
    Flag = objUser.Get("UserFlags")
    newFlag = Flag or ADS_UF_PASSWORD_CANT_CHANGE
    newFlag = newFlag or ADS_UF_DONT_EXPIRE_PASSWD
    objUser.Put "UserFlags", newFlag
    objUser.SetInfo

Работает Всё Удачи!
Автор: mistx
Дата сообщения: 21.01.2008 20:23
cluster

Цитата:
скрипта не встречал, но есть утилиты, например NirComLine. На удалённую машину либо через политику, либо через psexec.exe применять.


просмотрел справку по psexec.exe, что-то не нашел как изменить дисплей.
Какой именно синтаксис у нее?
Автор: leonski
Дата сообщения: 22.01.2008 02:07

Цитата:
Set objDomain = GetObject("LDAP://OU=" & "Test Users" & ",DC=testdomain,DC=local")
YNY большое спасибо. Уря заработало. Как теперь привентить строку в скрипт чтобы ещё и зашаривало папку с именем пользователя плюс делала её скрытой (добавляла к имени шары $ знак) О-о-очень нужно! Заранее большое спасибо.

Цитата:
А зачем Вам именно 300 шар. Сделайте одну шару
Дело в том что в компании такие вот свои заморочки (не я их придумывал). Домашняя папка пользователя должна быть скрыта в сети. Как говорится, что бы всякие умники не видели то что им не нужно видеть на файл сервере.
Автор: Etalon
Дата сообщения: 22.01.2008 08:59
leonski
После некоторых размышлений родился такой вот сценарий
На сервере Server вручную создаём папку Users и предоставляем её в общий доступ
Предоставляем права на общую папку Users
Администраторы: "Полный доступ"
Пользователи" "Изменение"
Предоставляем права NTFS
Администраторы: "Полный доступ"
Запускаем на выполнение, приведённый ниже сценарий.
Сценарий написан на Windows PowerShell

Код:
$strFilter = "user"
$Domain = [adsi]"LDAP://OU=Test Users,DC=testdomain,DC=local"
$Searcher = New-Object System.DirectoryServices.DirectorySearcher
$Searcher.SearchRoot = $Domain
$Searcher.SearchScope = "Subtree"
$Searcher.PageSize = 1000
$Searcher.Filter = "(objectCategory=$strFilter)"

[System.Security.AccessControl.DirectorySecurity]$ACL = Get-Acl -Path '"\\Server\Users"

$Searcher.FindAll() | ForEach-Object -Process {
    $Entry = $_.GetDirectoryEntry()
    $Folder = new-item -path "\\Server\Users" -name $Entry.sAMAccountName.ToString() -type "directory"
    
    $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule($Entry.userPrincipalName, "Modify", "Allow")

    $ACL.AddAccessRule($AccessRule)
    set-acl -aclobject $ACL -path $Folder
    $ACL.RemoveAccessRuleAll($AccessRule)

}
Автор: YNY
Дата сообщения: 23.01.2008 05:03

Цитата:
leonski
на страницах ранее есть примеры зашаривания папок и отключения их
Автор: zaratustra
Дата сообщения: 01.02.2008 08:14
прошу прощения за глупый вопрос
вин2к3
3 сетевые - локалка и 2 провайдера
+2 подключаемых соединения - к каждому провайдеру, один IP статический, второй IP динамический

пров2 - PPP адаптер:
IP-адрес . . . . . . . . . . . . : 81.169.ууу.ууу
Маска подсети . . . . . . . . . . : 255.255.255.255
Основной шлюз . . . . . . . . . . : 81.169.ууу.ууу

в таблице маршрутизации прописаны 2 статических маршрута:
Сетевой адрес Маска Адрес шлюза Метрика
0.0.0.0 0.0.0.0 81.169.ууу.ууу 3
81.169.147.0 255.255.255.0 81.169.ууу.ууу 1

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

Сетевой адрес Маска Адрес шлюза Метрика
0.0.0.0 0.0.0.0 81.169.ххх.ххх 3
81.169.147.0 255.255.255.0 81.169.ххх.ххх 1

как этот процесс можно автоматизировать?
определить IP на этом интерфейсе
если меняется, удалить стат.маршруты в таблице маршрутизации
забить новые с новым IP
перезапустить подключение

пробовал копать в сторону netsh /? не сильно вышло..

зы: "решения" типа забить ручками любой полученный адрес в свойства TCP/IP не подходят - пробовал - по оканчанию срока аренды не соединяется - сбрасываешь "получать автоматически" - выдает новый IP и подключается
с провайдером договориться про стат.адрес тоже не удалось - услуги как таковой не предоставляют

заранее спасибо

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

Предыдущая тема: BackUp Win2003Serer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.