TS Finomhangolás

Végre volt időm egy elmaradt feladat pótlására. Még a TS átállás – V. cikkben írtam, hogy sehogy sem  a home mappa megadása a ADUC TS tulajdonság fülön. Ezen kívül belépéskor a TS FlexProfile futása után a csatolt meghajtók „unavailable” státuszba kerültek és piros X jelenik meg az ikonjaikon.

Egy darabig küzdöttem a problémával, aztán delegáltam a feladatot a kollégámnak. Pár nap múlva ő adott is egy megoldást, ami majdnem jól működött. Annyi hibája volt, hogy a vbscript-ből mindenáron „net use” parancsot szeretett volna használni. Csakhogy a „net use” azt szereti, ha egy adott meghajtóról, például a C:-ről indul, a GPO logon script esetén viszont ez nem teljesül. Az eredeti ötletet és vázat megtartva átfaragtam tehát a megoldást úgy, hogy „natív” Windows Scripting Host megoldásokat alkalmaztam. Itt a megoldás:

 

Const HKEY_CURRENT_USER = &H80000001

Const HIDE_WINDOW = 0

strComputer = "."

strDrive = ""

strPath = ""

strEntryName = "RemotePath"

strKeyPath = "Network"

 

On Error Resume Next

 

Set ObjADinfo = createobject("ADSystemInfo")

strUserAdPath = ObjADinfo.userName

Set objUser = GetObject("LDAP://" & strUserAdPath)

strHomeDirectory = objUser.homeDirectory

strHomeDrive = objUser.homeDrive

 

Set WshNetwork = WScript.CreateObject("WScript.Network")

Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & "rootdefault:StdRegProv")

 

WshNetwork.RemoveNetworkDrive strHomeDrive

WshNetwork.MapNetworkDrive strHomeDrive, strHomeDirectory, True

 

oReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubKeys

For Each Subkey in arrSubKeys

                If Len(subkey) = 1 Then

                                oReg.GetStringValue HKEY_CURRENT_USER, strKeyPath & "" & Subkey, strEntryName, strPath

                                WshNetwork.MapNetworkDrive Subkey & ":", strPath, True

                Else

                                oReg.GetStringValue HKEY_CURRENT_USER, strKeyPath & "" & Subkey, strEntryName, strPath

                                WshNetwork.AddprinterConnection Subkey & ":", strPath, True

                End If

Next

 

Külön szépsége a dolognak, hogy a TS átállás – melléktermék bejegyzésben leírt módszert, amellyel egy felhasználónévől egy teljes LDAP elérési utat varázslok sikerült három sorral felváltani.

 

Set ObjADinfo = createobject("ADSystemInfo")

strUserAdPath = ObjADinfo.userName

Set objUser = GetObject("LDAP://" & strUserAdPath)

 

A scirpt röviden: kinyeri az adott felhasználó tényleges home könyvtárának elérési útvonalát, illetve meghajtójelét, majd azt felcsatolja. Ezután a HKCUNetwork registry kulcs alkulcsait egy tömbbe tölti és egyesével megvizsgálja őket. Ha az alkulcs hossza egy karakter, akkor az egy meghajtó, tehát a kinyeri az elérési utat és felmappeli. Ezzel a piros X eltűnik. Ha több karakter az alkulcs, akkor az egy átirányított nyomtatóport, ilyenkor a noymtató elérési útvonalának kinyerése után az AddPrinterConnection metódussal csatlakozunk az adott nyomtatóhoz. Fontos látni, hogy a for ciklusban nincs meghajtó- illetve nyomtatóport eltávolítás. Így véletlenül sem fordulhat elő, hogy egy meghajtót sikerül eltávolítani, de aztán nem sikerül csatlakozni hozzá újból. Csak javítunk, semmi rombolás. Ja, és persze végig „On Error Resume Next”, hogy azon s akadjon fel, ha a csatlakozás nem sikerül. Megpróbáltuk.

A scriptet a GPO Logon scriptjei közé tettem, méghozzá TS FlexProfile lefutása után. Így már pontosan úgy működik minden, ahogy működnie kell.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: