Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1138 connectés 

  FORUM HardWare.fr
  Windows & Software
  Win 10

  Scripts de demarrage de session

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Scripts de demarrage de session

n°3386303
gasimoto
Posté le 09-11-2020 à 17:03:50  profilanswer
 

Bonjour,
 
j'ai un script VBS qui supprime mes lecteurs réseaux et les récréé en fonction de mes groupes utilisateurs.
Il fonctionne bien quand je le lance sur ma session mais en GPO sur ouverture de session il ne voit pas mes lecteurs réseaux et n'en créé pas. Pourtant, mon groupe et mon nom d'utilisateur est bien récupéré.
 
' En cas d erreur le script continu
'On error resume next
 
' Declaration des variables
Dim WshNetwork,oShell
 
' Declaration des objets
Set WshNetwork = WScript.CreateObject("WScript.Network" )
Set oShell = CreateObject("WScript.Shell" )
 
Log "Debut du programme"
 
'WScript.Sleep(6000)
 
' Get a 60 seconds delay
Delay 60
 
Log "Fin du delai"
 
' Mappage du lecteur I
If isMember("DSI" ) Then
 'Wscript.Echo "DSI"
 Log "DSI"
    mapDrive "I", "\\192.168.127.1\informatique"
Else
 'Wscript.Echo "Pas DSI"
 Log "Pas DSI"
End If
 
' Check for error, then show message.
' If Err.Number <> 0 Then
    ' Msg = "Error # " & Str(Err.Number) & " was generated by " _
            ' & Err.Source & Chr(13) & Err.Description
    ' 'MsgBox Msg, , "Error", Err.Helpfile, Err.HelpContext
    ' Log Msg
' End If
 
Log "Fin du programme"
 
'#####################################################
' Functions secondaires
'#####################################################
 
Function Delay( seconds )
 Dim wshShell, strCmd
 Set wshShell = CreateObject( "WScript.Shell" )
 strCmd = wshShell.ExpandEnvironmentStrings( "%COMSPEC% /C (TIMEOUT.EXE /T " & seconds & " /NOBREAK)" )
 wshShell.Run strCmd, 0, 1
 Set wshShell = Nothing
End Function  
 
Function Log(message)
 '*** Préparation de l'environnement
 Const ForAppending = 8
 Set fso = WScript.CreateObject("Scripting.FileSystemObject" )
 FichierTXT = "c:\temp\log.txt"
 
 '*** Création du fichier texte "c:\log.txt"
 Set NewFichier = fso.OpenTextFile(FichierTXT, ForAppending, True)
 
 '*** Ajout de données dans la variable "data".
 data = Day(Now)& "."& Month(Now)& "."& Day(Now)& "."& Year(Now)& " "& Hour(Now)& ":"& Minute(Now)& ":"& Second(Now)& " | " & message
 
 '*** Ecriture des données de la variable "data" dans le fichier texte.
 NewFichier.WriteLine(data)
 
 '*** Destruction des objets
 NewFichier.Close
 Set fso = Nothing
 
 'WScript.Quit
End Function
 
 
Function IsMember(groupName)
    If IsEmpty(groupListD) then
        Set groupListD = CreateObject("Scripting.Dictionary" )
        groupListD.CompareMode = 1
        ADSPath = EnvString("userdomain" ) & "/" & EnvString("username" )
  Log "User : " & ADSPath
        Set userPath = GetObject("WinNT://" & ADSPath & ",user" )
        For Each listGroup in userPath.Groups
            groupListD.Add listGroup.Name, "-"
        Next
    End if
    IsMember = CBool(groupListD.Exists(groupName))
End Function
 
Function EnvString(variable)
    variable = "%" & variable & "%"
    EnvString = oShell.ExpandEnvironmentStrings(variable)
End Function
 
Function mapDrive(letter,path) ' if the letter is already in use, we first unmount the drive
 'This is the filesystem object, we'll be using the
 'FolderExists method.
 Set objFSO = CreateObject("Scripting.FileSystemObject" )
 'Wscript.Echo "Mounting " & letter & ":" & path
 Log "Mounting " & letter & ":" & path
 'Path exists
 If  objFSO.FolderExists(path) Then
    Log "Share Exists"
 Else
  Log "Share Does Not Exist"  
 End If
 '*** Destruction des objets
 Set objFSO = Nothing
 
 Set colDrives = wshNetwork.EnumNetworkDrives  
 For i = 0 to colDrives.Count-1 Step 2
  Log "Lecteur reseau " & i & " " & colDrives.Item(i)
  If colDrives.Item(i) =  letter & ":" Then
   'Fermeture de la liaison
   'Wscript.Echo "Fermeture de la liaison"
   Log "Fermeture de la liaison " & colDrives.Item(i)
   WshNetwork.RemoveNetworkDrive letter & ":", True, True
  End If
 Next
 'Création de la liaison
 'Wscript.Echo "Creation de la liaison " & letter & ":" & path
 Log "Creation de la liaison " & letter & ":" & path
 
 Err.Clear
 On Error Resume Next
  wshNetwork.MapNetworkDrive letter & ":" , path, True
  'Error traps
  If Err <> 0 Then
    Select Case Err.Number
   Case -2147023694
     'Persistent connection so try a second time
     On Error Goto 0
     WshNetwork.RemoveNetworkDrive strLocalDrive, True, True
     WshNetwork.MapNetworkDrive letter & ":" , path, True
     Log "Second attempt to map drive " & letter & " to " & path
   Case Else
     On Error GoTo 0
     Log " - ERROR: Failed to map drive " & letter & " to " & path
    End Select
    Err.Clear
  End If
End Function


Message édité par gasimoto le 09-11-2020 à 17:09:40
mood
Publicité
Posté le 09-11-2020 à 17:03:50  profilanswer
 

n°3386305
gasimoto
Posté le 09-11-2020 à 17:08:27  profilanswer
 

Log en GPO :
 
9.11.9.2020 16:43:42 | Debut du programme
9.11.9.2020 16:44:43 | Fin du delai
9.11.9.2020 16:44:43 | User : M/toto
9.11.9.2020 16:44:43 | DSI
9.11.9.2020 16:44:43 | Mounting I:\\192.168.127.1\informatique
9.11.9.2020 16:44:43 | Share Exists
9.11.9.2020 16:44:43 | Creation de la liaison I:\\192.168.127.1\informatique
9.11.9.2020 16:44:43 | Fin du programme


Message édité par gasimoto le 09-11-2020 à 17:09:27
n°3386306
Je@nb
Modérateur
Kindly give dime
Posté le 09-11-2020 à 17:10:50  profilanswer
 

on est en 2020, ça fait au moins 10 ans qu'on fait pas de scripts (et encore moins en VBS) pour monter des share réseaux...
utilise les GPP (group policy preferences)

n°3386307
gasimoto
Posté le 09-11-2020 à 17:11:22  profilanswer
 

Log en exécution directe :
 
9.11.9.2020 16:47:59 | Debut du programme
9.11.9.2020 16:48:59 | Fin du delai
9.11.9.2020 16:48:59 | User : M/toto
9.11.9.2020 16:48:59 | DSI
9.11.9.2020 16:48:59 | Mounting I:\\192.168.127.1\informatique
9.11.9.2020 16:48:59 | Share Exists
9.11.9.2020 16:48:59 | Lecteur reseau 0 I:
9.11.9.2020 16:48:59 | Fermeture de la liaison I:
9.11.9.2020 16:48:59 | Lecteur reseau 2 J:
9.11.9.2020 16:48:59 | Lecteur reseau 4 K:
9.11.9.2020 16:48:59 | Lecteur reseau 6 L:
9.11.9.2020 16:48:59 | Lecteur reseau 8 M:
9.11.9.2020 16:48:59 | Lecteur reseau 10 S:
9.11.9.2020 16:48:59 | Lecteur reseau 12 T:
9.11.9.2020 16:48:59 | Creation de la liaison I:\\192.168.127.1\informatique
9.11.9.2020 16:48:59 | Fin du programme

n°3386309
gasimoto
Posté le 09-11-2020 à 17:13:28  profilanswer
 

Je@nb a écrit :

on est en 2020, ça fait au moins 10 ans qu'on fait pas de scripts (et encore moins en VBS) pour monter des share réseaux...
utilise les GPP (group policy preferences)


Je fais avec mes connaissances et j'aimerai comprendre tout de même

n°3386315
Ryo-Ohki
10th Rabbit
Posté le 09-11-2020 à 18:11:09  profilanswer
 

Tu es admin de ton poste ?
 
Si c'est le cas ce qui se produit c'est que le script de login de la GPO s'exécute dans le contexte élevé (comme si tu faisais clic droit -> exécuter en tant qu'admin). Le script marche et monte bien le disque I sauf que tu ne le vois pas dans ton contexte limité par l'UAC avec le jeton Administrator purgé.
 
Par contre si tu le lances à la main pour tester ou en login avec un utilisateur simple, le script marchera comme attendu...
 
C'est by design malheureusement.
https://pcloadletter.co.uk/2010/05/ [...] rk-drives/
 
Donc bonne solution -> Group Policy Preference.


---------------
The Lapin, reloaded  |  "Anything can happen in Formula One, and it usually does." -- Murray Walker
n°3386338
gasimoto
Posté le 09-11-2020 à 22:34:33  profilanswer
 

Effectivement et avec l'UAC désactivée
 
Merci pour cette réponse étayée et claire  ;)

n°3386347
nex84
Dura lex, sed lex
Posté le 10-11-2020 à 09:04:51  profilanswer
 

Ryo-Ohki a écrit :


C'est by design malheureusement heureusement.


 [:moundir]


---------------
#TeamNoBidouille || Come to the Dark Side, we have cookies || Mangez 5 fruits et légumes par an ! || Le digital, c'est les doigts
n°3386372
Ryo-Ohki
10th Rabbit
Posté le 10-11-2020 à 13:42:50  profilanswer
 

Heureusement ? Je ne sais pas. Ca veut dire qu'en tant qu'admin ton login script s'exécute sans restriction de contexte et qu'il peut mettre le dawa si un petit malin a profité d'une faille pour y rajouter du contenu. En gros tu perds ta dernière protection contre un contenu malicieux.
 
Je vois surtout ça comme un défaut de sécurité, m'enfin bon.
 
(bon après si un pirate a accès en modif au login script il a surement aussi accès aux GPO donc il a moyen d'y aller plus franco sur l'ensemble du domaine, mais bon un UAC bypass c'est déjà bien crade)


Message édité par Ryo-Ohki le 10-11-2020 à 13:48:28

---------------
The Lapin, reloaded  |  "Anything can happen in Formula One, and it usually does." -- Murray Walker
n°3386446
nex84
Dura lex, sed lex
Posté le 12-11-2020 à 09:22:04  profilanswer
 

Heureusement que Windows gère des contextes d'exécution différents ainsi que l'élévation de privilèges.


---------------
#TeamNoBidouille || Come to the Dark Side, we have cookies || Mangez 5 fruits et légumes par an ! || Le digital, c'est les doigts
mood
Publicité
Posté le 12-11-2020 à 09:22:04  profilanswer
 

n°3386492
Ryo-Ohki
10th Rabbit
Posté le 12-11-2020 à 20:12:52  profilanswer
 

Pas compris ta remarque.


---------------
The Lapin, reloaded  |  "Anything can happen in Formula One, and it usually does." -- Murray Walker

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Win 10

  Scripts de demarrage de session

 

Sujets relatifs
Désactiver lancement au démarrage Steam et DiscordComment activer démarrage rapide en VM invité ?
Windows, LAG démarrage, HELPdémarrage windows GPT efi
Problème démarrage w10sLancer vidéo rapidement au démarrage
Pb Explorer au démarrage Windows 7fenetre cmd.exe au demarrage windows 10
Comportements erratiques à l'extinction et au démarrage (Résolu)scripts de demarrage de session
Plus de sujets relatifs à : Scripts de demarrage de session


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR