{"id":130,"date":"2019-10-31T21:11:11","date_gmt":"2019-10-31T20:11:11","guid":{"rendered":"http:\/\/www.forlex.it\/blog\/?p=130"},"modified":"2019-11-01T10:26:34","modified_gmt":"2019-11-01T09:26:34","slug":"active-directory-script-di-logon-per-condivisioni-di-rete","status":"publish","type":"post","link":"http:\/\/www.forlex.it\/index.php\/2019\/10\/31\/active-directory-script-di-logon-per-condivisioni-di-rete\/","title":{"rendered":"Active Directory &#8211; Script di logon per condivisioni di rete"},"content":{"rendered":"\n<p>Oggi mi sono ritrovato a dover risolvere un problemino, non da poco, in un ambiente MS Active Directory. La questione era:<\/p>\n\n\n\n<p>Abbiamo <em>n utenti<\/em> di Dominio, vogliamo che ognuno, al momento del login, venga connesso automaticamente a delle <em>condivisioni di rete<\/em> (share) di competenza della propria Unit\u00e0 Organizzativa.<\/p>\n\n\n\n<p>C&#8217;\u00e8 stato chi mi ha detto &#8220;&#8230; semplice !!! &#8230;&#8221; io ho risposto &#8221; &#8230; mica tanto &#8230;&#8221; perch\u00e8 si deve :<\/p>\n\n\n\n<p>1) evitare che al momento della connessione la &#8220;lettera di unit\u00e0&#8221; sia gi\u00e0 utilizzata<\/p>\n\n\n\n<p>2) evitare che la connessione sia attiva dall&#8217;ultimo logout<\/p>\n\n\n\n<p>Ho risolto approcciando il problema come segue :<\/p>\n\n\n\n<p>innanzi tutto ho deciso di usare alcune righe di codice di VBScript, in modo da avere il mio file con estensione vbs che, importato in una Group Policy, pu\u00f2 essere eseguito da qualsisi macchina in fase di login.<\/p>\n\n\n\n<p>In pratica, ad ogni utente, in fase di logon viene passato un file <em>nomescript.vbs<\/em> che verr\u00e0 eseguito dalla macchina sulla quale si effettuta l&#8217;operazioni di accesso al Dominio. Una volta eseguito lo script, l&#8217;utente trover\u00e0 le sue condivisioni in Risorse del Computer.<\/p>\n\n\n\n<p>A questo punto, per risolvere i problemi del punto 1 e 2, siamo obbligati a profilare le macchine che abbiamo nel nostro Dominio. Immaginiamo che ogni computer abbia queste unit\u00e0 di memoria :<\/p>\n\n\n\n<p><strong> a <\/strong>= floppy;&nbsp; <strong>c<\/strong> =hard disk 1; <strong>d<\/strong> = hard disk 2; <strong>e<\/strong> = lettore dvd 1; <strong>f<\/strong> = lettore dvd 2; <strong>g<\/strong> = penna usb 1; <strong>h<\/strong> = penna usb 2;<\/p>\n\n\n\n<p>l&#8217;operazione che lo script dovr\u00e0 eseguire, quindi, sar\u00e0 quella di disconnettere tutti i drive di rete dalla lettera &#8220;i&#8221; alla lettera &#8220;z&#8221;, lo faremo con un ciclo for next, poi ricollegheremo tutte le condivisioni create ed impostate sul server che sar\u00e0 raggiungibile all&#8217;interno del Dominio attraverso un <em>semplice \\\\server<\/em>. Lo script alla fine si presentava cos\u00ec :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">' Imposto la condivisione della condivisione di rete <br>Option Explicit <br>Dim strRemotePath1, strRemotePath2, strRemotePath3, strRemotePath4 &nbsp;<br>Dim strDriveLetter1, strDriveLetter2, strDriveLetter3, strDriveLetter4 <br>Dim strDriveName1, strDriveName2, strDriveName3, strDriveName4 &nbsp;<br>Dim objNetwork, objShell, objShellApp <br>Dim CheckDrive, intDrive <br>Dim bforce, bUpdateProfile,DriveLetter <br> bforce = \"True\" <br> bUpdateProfile =\"True\" <br> <br>' Imposto i nomi dei drive ed i loro percorsi <br> <br>strDriveLetter1 = \"Z:\" <br>strDriveLetter2 = \"W:\" <br>strDriveLetter3 = \"Y:\" <br>strDriveLetter4 = \"X:\" <br> <br>strRemotePath1 = \"\\\\server\\Share1$\" <br>strRemotePath2 = \"\\\\server\\Share2$\" <br>strRemotePath3 = \"\\\\server\\archivio\" <br>strRemotePath4 = \"\\\\server\\scambio\" <br> <br>strDriveName1 = \"Gruppo Lavoro 1\" <br>strDriveName2 = \"Gruppo Lavoro 2\" <br>strDriveName3 = \"Archivio\" <br>strDriveName4 = \"Archivio - Scambio\" <br> <br>' Creo gli oggetti per lo script: <br>' objShell and objNetwork e conto i drive collegati <br>Set objShell = CreateObject(\"WScript.Shell\") <br>Set objNetwork = CreateObject(\"WScript.Network\") <br>Set objShellApp = CreateObject(\"Shell.Application\") <br>Set CheckDrive = objNetwork.EnumNetworkDrives() <br>' Uso un For ... Next loop <br>' Confronto il risultato del For con strDriveLetter <br>On Error Resume Next <br> <br>For intDrive = CheckDrive.Count - 1 to 0 Step -2 <br> DriveLetter=CheckDrive.Item(intDrive) <br> if Len(DriveLetter) = 2 And DriveLetter &gt;=\"I:\" And DriveLetter &lt;=\"Z:\" Then <br> WshNetwork.RemoveNetworkDrive DriveLetter, bforce, bUpdateProfile <br> End If <br>Next <br> <br>' disconnetto e riconnetto dopo per sicurezza <br>' Messaggio di confema &nbsp;<br>objShell.PopUp \"Disconnesso tutti i drive di rete \",2,\"Drive di rete\" <br>objNetwork.MapNetworkDrive strDriveLetter1, strRemotePath1 <br>objNetwork.MapNetworkDrive strDriveLetter2, strRemotePath2 <br>objNetwork.MapNetworkDrive strDriveLetter3, strRemotePath3 <br>objNetwork.MapNetworkDrive strDriveLetter4, strRemotePath4 <br> <br>objShell.PopUp \"Connesso il drive di rete \" &amp; strDriveLetter1 &amp; VBCrlf &amp; \"Connesso il drive di rete \" &amp; strDriveLetter2 &amp; VBCrlf &amp; \"Connesso il drive di rete \" &amp; strDriveLetter3 &amp; VBCrlf &amp; \"Connesso il drive di rete \" &amp; strDriveLetter4 &amp;VBCrlf &amp; \"Le unit\u00e0 di rete del tuo gruppo sono state riconnesse\",2, \"Drive di rete\" <br>objShellApp.NameSpace(strDriveLetter1).Self.Name=strDriveName1 <br>objShellApp.NameSpace(strDriveLetter2).Self.Name=strDriveName2 <br>objShellApp.NameSpace(strDriveLetter3).Self.Name=strDriveName3 <br>objShellApp.NameSpace(strDriveLetter4).Self.Name=strDriveName4 <br> <br>WScript.Quit<\/pre>\n\n\n\n<p>Bene, vi ricordo che questo script essendo in VB potrete usarlo in qualsiasi situazione necessitiate automatizzare questa operazione al logon, anche senza Dominio impostandolo quindi sulla vostra macchina in : Pannello di controllo &gt;&nbsp; Strumenti di amministrazione &gt; Gestione Computer &gt; Users &gt; <em>vostronomeutente<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"images\/ADLogon\/ad-logonscript.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<p>Buon lavoro !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oggi mi sono ritrovato a dover risolvere un problemino, non da poco, in un ambiente MS Active Directory. La questione era: Abbiamo n utenti di Dominio, vogliamo che ognuno, al momento del login, venga connesso automaticamente a delle condivisioni di &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"http:\/\/www.forlex.it\/index.php\/2019\/10\/31\/active-directory-script-di-logon-per-condivisioni-di-rete\/\"> <span class=\"screen-reader-text\">Active Directory &#8211; Script di logon per condivisioni di rete<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1,6],"tags":[],"_links":{"self":[{"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/posts\/130"}],"collection":[{"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/comments?post=130"}],"version-history":[{"count":1,"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/posts\/130\/revisions"}],"predecessor-version":[{"id":131,"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/posts\/130\/revisions\/131"}],"wp:attachment":[{"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/media?parent=130"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/categories?post=130"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.forlex.it\/index.php\/wp-json\/wp\/v2\/tags?post=130"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}