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

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

Ybik1810 27-12-2019 09:19 2902444

Скрипт входа для пользователей домена
 
Доброго времени суток. Столкнулся с задачей на VBS: нужно написать скрипт который запускает программу в зависимости от принадлежности пользователя к доменной группе. Есть 3 юзера (User1, User2, User3) и 2 группы (Group1, Group2). User1 состоит в Group1, User2 в Group2, а User3 и в Group1 и в Group2. В итоге при входе Userу1 открывается одна программа, Userу2 другая, а Userу3 выбор из этих 2 программ, т.к. состоит в 2ух группах. Как реализовать сию задачу? У меня получилось 3 разных файла, но как сделать так чтобы скрипт проверял юзера на принадлежность незнаю. Помогите, прошу.
Код:

Для User1
With CreateObject(“WScript.Shell”)
.Run “mspaint.exe”
End With

Для User2
With CreateObject(“WScript.Shell”)
.Run “notepad.exe”
End With

Для User3
Dim msg
With CreateObject(“WScript.Shell”)
        msg = MsgBox(“Да – запустить Блокнот” & vbCrLf & _
  “Нет – запустить Paint”, _
vbYesNo, “Выбор программы”)
        Select Case msg
          Case vbYes
                .Run “notepad.exe”
        Case vbNo
                .Run “mspaint.exe”
        End Select
End With


DJ Mogarych 27-12-2019 10:46 2902454

Это реализуется фильтром безопасности в GPO безо всяких скриптов.

Ybik1810 27-12-2019 11:22 2902458

Знаю, но суть задачи именно в написании скрипта

Ybik1810 27-12-2019 12:44 2902477

Не могу понять почему он не работает
Код:

Function GpRunObject(strGpName)
Set RunObj = wscript.createobject("wscript.shell")
'запуск текстового CMD
RubObj.run ("notepad.bat")
wscript.Quit
End Function

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
UserDomain = WshNetwork.UserDomain
Set UserObj = GetObject("WinNT://" & UserDomain & "/" & WshNetwork.UserName)
For Each GroupObj in UserObj.Groups

If GroupObj.Name = "Первый отдел" Then

Dim Msg, Style, Title, Response, MyString
Dim WSHShell

Msg = "Готовы поработать?"
Style = vbYesNo + vbQuestion + vbDefaultButton2
Title = "Добрый день"
Response = MsgBox(Msg, Style, Title)
if Response = vbYes Then
MyString = "Да"
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "notepad.bat", 0, false
Else
MyString = "Нет"
End if
End if

If GroupObj.Name = "Второй отдел" Then
Msg = "Готовы поработать?"
Style = vbYesNo + vbQuestion + vbDefaultButton2
Title = "Добрый день"
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
MyString = "Да"
Set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "paint.bat", 0, false
Else
MyString = "Нет"
End if
end if
Next


Charg 27-12-2019 20:23 2902551

Цитата:

Цитата Ybik1810
но суть задачи именно в написании скрипта »

Тогда зачем старый дряхлый vbs?
Вот на powershell например:
Код:

if ($env:USERNAME -in @((Get-LocalGroupMember -Group "group1").Name.Split('\')[1]))
{
    Write-Output "user in group1, run program1"
    Start-Process -FilePath "cmd.exe"
}
elseif (($env:USERNAME -in @((Get-LocalGroupMember -Group "group2").Name.Split('\')[1])))
{
    Write-Output "user in group2, run program1"
    Start-Process -FilePath "cmd.exe"
}



Время: 21:49.

Время: 21:49.
© OSzone.net 2001-