IT Bloguje - pomoc pro všechny IT nadšence
VBS

VBS LoginScript mapování disků a tiskáren pomocí AD skupin

VBS
Napsal uživatel Ondřej Soukup   
Neděle, 01 Březen 2009

Pokud potřebujete u uživatelů během přihlašování mapovat sdílené disky nebo tiskárny dle AD skupin, do kterých jsou uživatelé přiřazeni a zobrazovat samotný stav mapování, je možné použít wbs script pro samotné přihlášení a html stránku pro zobrazování stavu. Ukázková tvorba přihlašovacího vbs scriptu: Ukázka spočívá v mapování centrální tiskárny a disků X: Y: pro všechny uživatele Domain Users a disku T: s jiným umístěním pro uživatele G_CZ_Production a G_CZ_Sales.

VBS LoginScript mapování disků a tiskáren pomocí AD skupin s grafickým rozhraním

alt

(obsah souboru login.vbs)


On Error Resume Next
Dim WshNetwork, asdPath, User
Dim strMappedDrives, strStatus
Dim IE

Const ADS_READONLY_SERVER = 4
 
' Zobrazeni IE status window

Call CreateIE()
strStatus = "Logon Script v1.0 " & Date()
ie.document.all.wstatus.InnerText = strMsg3

' Ziskani Username

Set WSHNetwork = WScript.CreateObject("WScript.Network")
strUser = ""
While strUser = ""
    strUser = WSHNetwork.UserName
Wend

ie.document.all.Msg1.InnerText = strUser


' -----------------------------------------------------------
' --- Zrušení kontroly signatury u exe files ----------------
' -----------------------------------------------------------
Set Shell = CreateObject("Wscript.Shell")
Shell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Download\CheckExeSignatures","no","REG_SZ"
Shell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Download\RunInvalidSignatures","1","REG_DWORD"

' -----------------------------------------------------------
' --- Mapování tiskárny \\server\Phaser8560
' -----------------------------------------------------------
Set Wshnetwork = CreateObject("WScript.Network")
WshNetwork.addwindowsPrinterConnection "\\server\Phaser8560"
WshNetwork.SetDefaultprinter "\\server\Phaser8560"
strpl = "Xerox Phaser 8560"
ie.document.all.Msg2.InnerText = strpl
' -----------------------------------------------------------
' --- Odmapování síťových disků X: Y: T
' -----------------------------------------------------------

Set Apl = WScript.CreateObject("WScript.Shell")
Apl.Run "net use x: /delete", 7
Apl.Run "net use y: /delete", 7
Apl.Run "net use t: /delete", 7
strpl = "done..."
ie.document.all.Msg3.InnerText = strpl
' -----------------------------------------------------------

call main()

strStatus = strStatus & vbCRLF & "Network Logon Complete..."
ie.document.all.wstatus.InnerText = strStatus


' Zavreni IE Status window

If not ie.document.all.holdit.checked Then
Wscript.Sleep 600
    ie.quit()
End if

' Konec LogOn Scriptu

Public Sub Main()

' -----------------------------------------------------------
' --- WinNT://pantherstudio.local změňte na název domény
' -----------------------------------------------------------

  'Main loop to detect group that user belongs to
  adsPath = "WinNT://pantherstudio.local/" & strUser
  Set dso = GetObject("WinNT:")
  Set objUser = dso.OpenDSObject(adsPath,"","", ADS_READONLY_SERVER)
  For Each Prop In objUser.groups
    Select Case Prop.Name

' -----------------------------------------------------------
' --- Ověřování uživatelů bude na základě skupin Domain Users, G_CZ_Production, G_CZ_Sales
' -----------------------------------------------------------

      Case "Domain Users"
        Call DomainUsers()
       
       Case "G_CZ_Production"
        Call Production()

       Case "G_CZ_Sales"
        Call Sales()

      'etc
    End Select
  Next 'Prop
   
End Sub
' ----------------------------
'Mapování disku Y: X: pro uživatele skupiny Domain Users
' ----------------------------
Sub DomainUsers()

  strStatus = strStatus & vbCRLF & "Member of Domain Users..."
  ie.document.all.wstatus.InnerText = strStatus

  MapDrive "X:", "\\pantherstudio.local\images"
  MapDrive "Y:", "\\pantherstudio.local\shared"
End Sub
' ----------------------------
' Mapování disku T: pro uživatele skupiny G_CZ_Production
' ----------------------------
Sub Production()

  strStatus = strStatus & vbCRLF & "Member of Production..."
  ie.document.all.wstatus.InnerText = strStatus

  MapDrive "T:", "\\server\FTP_Production"
End Sub

' ----------------------------
' Mapování disku T: pro uživatele skupiny G_CZ_Sales
' ----------------------------
Sub Sales()

  strStatus = strStatus & vbCRLF & "Member of Production..."
  ie.document.all.wstatus.InnerText = strStatus

  MapDrive "T:", "\\server\FTP_Sales"
End Sub

' ----------------------------
' Spuštění grafického zobrazení, opravte skutečnou cestu k souboru login.htm, Wscript.Sleep 1200= čas zpoždění scriptu
' ----------------------------
Sub CreateIE()

  On Error Resume Next
  Set IE = CreateObject("InternetExplorer.Application")
  With IE
    .navigate "\\server\shared\LoginScript\login.htm"
    .resizable=0
    .height=332
    .width=307
    .menubar=0
    .toolbar=0
    .statusBar=0
    .visible=1
  End With
  Do while ie.Busy
    ' wait for page to load
    Wscript.Sleep 1200
  Loop

End Sub
' -----------------------------------------------------------
Sub MapDrive(strDrive,strShare)

    On Error Resume Next
    WSHNetwork.MapNetworkDrive strDrive, strShare

    If Err.Number Then

        WSHNetwork.RemoveNetworkDrive strDrive
        WSHNetwork.MapNetworkDrive strDrive, strShare

    End If

    strMappedDrives = strMappedDrives & strDrive & " "
    ie.document.all.Msg4.InnerText = strMappedDrives

End Sub

Hotovou ukázku si stáhněte zde

 
Potřebujete pomoc?

V případě problémů, či žádosti o radu je možné se kdykoliv přímo obrátit na naše konzultanty:

GAUZY, s.r.o.
 

Ondřej Soukup
Solution Consultant
Tel.: +420 224 400 013
Mob.: +420 775 142 899
E-mial: soukup@gauzy.cz