Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Anmeldeskript in VB

Frage Entwicklung Batch & Shell

Mitglied: mschaedler1982

mschaedler1982 (Level 1) - Jetzt verbinden

27.06.2014, aktualisiert 14:56 Uhr, 1454 Aufrufe, 7 Kommentare

Hallo zusammen.

Ich habe hier ein aktuelles VB Skript was bei uns zur Anmeldung verwendet wird. Am Ende des Skripts werden diverse Notes speziefische Dateien in das P Laufwerk des Users kopiert.
Das Skript würde ich gerne um eine Kopier Funktion erweitern.

In unregelmäßigen Abständen wird eine Datei ersetzt die vom Server (UNC Pfad) auf den Client kopiert wird.

Quellpfad: \\SERVER_XY\VERZEICHNIS\ORDNER\DATEI.DLL
Zielpfad C:\Program Files (x86)\procad\profile\dbanw\Assembly\DATEI.DLL

Hat mir hierzu jemand den passenden Code?

Vielen Dank schonmal!



01.
' Zentrales Loginscript zum Mappen der Netzlaufwerke über die Gruppenzugehörigkeit 
02.
03.
' Stand XY 
04.
' EDV-Abteilung   
05.
' Update: Abfrage des Flagfiles   
06.
 
07.
 
08.
	Dim IWshShell3, WshNet, oExec, Dir, driveletter1, driveletter2, driveletter3, driveletter4, driveletter5,driveletter6,driveletter7,driveletter8 
09.
 
10.
 
11.
	Dim share1, share2, share3 ,share4 ,share5, share6,share7,share8,folder 
12.
 
13.
	driveletter1 = "R:" 
14.
	driveletter2 = "J:" 
15.
	driveletter3 = "X:" 
16.
	driveletter4 = "Q:" 
17.
	driveletter5 = "T:" 
18.
	driveletter6 = "K:" 
19.
	driveletter7 = "M:" 
20.
	driveletter8 = "S:" 
21.
	 
22.
 
23.
	share1 = "\\Server1\share1" 
24.
	share2 = "\\Server2\share2" 
25.
	share3 = "\\Server3\share3" 
26.
	share4 = "\\Server4\share4" 
27.
	share5 = "\\Server5\share5" 
28.
	share6 = "\\Server6\share6" 
29.
	share7 = "\\Server7\share7" 
30.
	share8 = "\\Server\share8" 
31.
	 
32.
 
33.
   	'Im Fehlerfall zur nächsten Zeile gehen 
34.
	On Error Resume Next 
35.
 
36.
 
37.
	Set IFileSystem = CreateObject("Scripting.FilesystemObject") 
38.
 
39.
	Set IFileSystem1 = CreateObject("Scripting.FilesystemObject") 
40.
 
41.
	Set IWshShell3 = CreateObject("WScript.Shell") 
42.
 
43.
	Set WshNet = WScript.CreateObject("WScript.Network") 
44.
	  
45.
	'Falls Anmeldung auf Terminalserver dann vorzeitiges Beenden des Loginscripts da bei neuer Farm Preferences benutzt werden 
46.
		 
47.
	 If IFileSystem.FileExists("C:\windows\scripts\ts.txt") then WScript.Quit 
48.
		 
49.
	 
50.
	Set oExec = IWshShell3.Exec("\\SERVER_XY\NETLOGON\IFMEMBER.exe /l") 
51.
 
52.
	'Im Fehlerfall zur nächsten Zeile gehen 
53.
	'On Error Resume Next 
54.
	 
55.
 
56.
 
57.
	Do while oExec.Status=0 
58.
		Dir = Dir & oExec.StdOut.ReadAll 
59.
	Loop 
60.
 
61.
 
62.
 
63.
 
64.
	'R-Laufwerk mappen 
65.
	If InStr(Dir,"GRUPPE5") then 
66.
			WshNet.MapNetworkDrive driveletter1, share1 
67.
			If err.number <>0 then 
68.
				'MsgBox "Laufwerk konnte nicht verbunden werden!" & err.Description 
69.
			End If 
70.
	End If 
71.
 
72.
	'J-Laufwerk mappen 
73.
	If InStr(Dir,"GRUPPE6") then 
74.
			WshNet.MapNetworkDrive driveletter2, share2 
75.
			If err.number <>0 then 
76.
				'MsgBox "Laufwerk konnte nicht verbunden werden!" & err.Description 
77.
			End If 
78.
	End If 
79.
 
80.
	'X-Laufwerk mappen 
81.
	If InStr(Dir,"GRUPPE1") then 
82.
			WshNet.MapNetworkDrive driveletter3, share3 
83.
			If err.number <>0 then 
84.
				'MsgBox "Laufwerk konnte nicht verbunden werden!" & err.Description 
85.
			End If 
86.
	End If 
87.
 
88.
	'Q-Laufwerk mappen 
89.
	If InStr(Dir,"GRUPPE7") then 
90.
			WshNet.MapNetworkDrive driveletter4, share4 
91.
			If err.number <>0 then 
92.
				'MsgBox "Laufwerk konnte nicht verbunden werden!" & err.Description 
93.
			End If 
94.
	End If 
95.
 
96.
	'T-Laufwerk mappen 
97.
	If InStr(Dir,"GRUPPE2") then 
98.
			WshNet.MapNetworkDrive driveletter5, share5 
99.
			If err.number <>0 then 
100.
				'MsgBox "Laufwerk konnte nicht verbunden werden!" & err.Description 
101.
			End If 
102.
	End If 
103.
 
104.
	'K-Laufwerk mappen 
105.
	If InStr(Dir,"GRUPPE3") then 
106.
			WshNet.MapNetworkDrive driveletter6, share6 
107.
			If err.number <>0 then 
108.
				'MsgBox "Laufwerk konnte nicht verbunden werden!" & err.Description 
109.
			End If 
110.
	End If 
111.
 
112.
	'M-Laufwerk mappen 
113.
	If InStr(Dir,"GRUPPE4") or InStr(Dir,"vredenu.lg.pictures_l") then 
114.
 
115.
 
116.
	   		'WshNet.RemoveNetworkDrive driveletter7,true,true 
117.
	   		WshNet.MapNetworkDrive driveletter7, share7 
118.
 
119.
 
120.
 
121.
	End If 
122.
 
123.
	'S-Laufwerk mappen( KOM-Archiv ) 
124.
	If InStr(Dir,"GRUPPE5") then 
125.
			WshNet.MapNetworkDrive driveletter8, share8 
126.
			If err.number <>0 then 
127.
				'MsgBox "Laufwerk konnte nicht verbunden werden!" & err.Description 
128.
			End If 
129.
	End If 
130.
 
131.
   
132.
 
133.
 
134.
 
135.
 
136.
 
137.
 
138.
'Notesdaten am Freitag sichern 
139.
if weekday(date) = 6 then 
140.
 
141.
	On Error Resume next 
142.
 
143.
	'Falls kein Thinclient 
144.
	If not IFileSystem.FileExists("C:\windows\ts.txt")then 
145.
		'Ordner erstellen 
146.
		If not IFileSystem.FolderExists("P:\NotesEDV")then 
147.
			IFileSystem.CreateFolder "P:\NotesEDV" 
148.
		end if 
149.
		'Backup auf P:\NotesEDV 
150.
		IFileSystem.CopyFile "C:\Notes\Data\*.id","P:\NotesEDV\",true 
151.
		IFileSystem.CopyFile "C:\Notes\Data\names.nsf","P:\NotesEDV\",true 
152.
		IFileSystem.CopyFile "C:\Notes\Data\bookmark.nsf","P:\NotesEDV\",true 
153.
		IFileSystem.CopyFile "C:\Notes\Data\desktop*.*","P:\NotesEDV\",true 
154.
		IFileSystem.CopyFile "C:\Notes\notes.ini","P:\NotesEDV\",true 
155.
		'Cache.ndk löschen für Fatclients 
156.
 
157.
		If IFileSystem.FileExists("C:\Notes\data\cache.ndk")then 
158.
			IFileSystem.DeleteFile "C:\Notes\data\cache.ndk",true 
159.
		end if 
160.
 
161.
	'ID's kopieren falls Fatclient && ICA-ClientUser sowie erstellungsdatumsabhängig 
162.
		If IFileSystem.FolderExists("P:\TSNotes\de\data")then 
163.
 
164.
			Set folder = IFileSystem.GetFolder("C:\Notes\Data") 
165.
 
166.
			Set file = folder.Files 
167.
 
168.
			For Each item In file 
169.
 
170.
	  			if IFileSystem.getextensionname(item.Name) = "id" then 
171.
				'Nur ID-File kopieren falls Erstellungsdatum auf C jünger ist als das auf P 
172.
					help = "P:\TSNotes\de\Data\" & item.Name 
173.
					'msgbox help 
174.
 
175.
					Set Pdrivedat = IFileSystem1.getfile(help) 
176.
	  				if item.DateLastModified > Pdrivedat.DateLastModified then 
177.
	  					IFileSystem.CopyFile item,"P:\TSNotes\de\data\",true 
178.
 
179.
	  				end if 
180.
 
181.
	  			end if 
182.
 
183.
			Next 
184.
 
185.
	    end if 
186.
 
187.
	end if 
188.
 
189.
'Cache.ndk für Thinclients löschen 
190.
	If IFileSystem.FileExists("P:\TSNotes\de\data\cache.ndk")then 
191.
		IFileSystem.DeleteFile "P:\TSNotes\de\data\cache.ndk",true 
192.
	end if 
193.
 
194.
 
195.
end if 
196.
    	'allokierten Speicher der Objekte freigeben 
197.
    	Set WshNet = nothing 
198.
	Set IWshShell3 = nothing 
199.
	Set IFileSystem = nothing 
Mitglied: colinardo
27.06.2014, aktualisiert um 14:37 Uhr
Moin,
in unregelmäßigen Abständen wird eine Datei ersetzt die vom Server (UNC Pfad) auf den Client kopiert wird.
definiere unregelmäßig ?
ansonsten so
01.
if IFileSystem.FileExists("\\SERVER_XY\VERZEICHNIS\ORDNER\DATEI.DLL") then 
02.
    IFileSystem.CopyFile "\\SERVER_XY\VERZEICHNIS\ORDNER\DATEI.DLL", "C:\Program Files (x86)\procad\profile\dbanw\Assembly\", true 
03.
end if
Grüße Uwe

p.s. bitte überprüfe ob du in deinem Code-Post nicht zu viel aus deiner Firma preis gibst. Wir hatten hier schon Fälle da ließ ein User alle seine Beiträge löschen weil er einfach zu viel preisgegeben hat ! Merci.
Bitte warten ..
Mitglied: mschaedler1982
27.06.2014 um 14:38 Uhr
Unregelmäßig heißt für mich 1 mal im Quartal. Gibt es noch eine bessere Variante?
Bitte warten ..
Mitglied: colinardo
27.06.2014, aktualisiert um 14:45 Uhr
Zitat von mschaedler1982:
Gibt es noch eine bessere Variante?
was meinst du mit besser ??? was funktioniert denn nicht ?
Bitte warten ..
Mitglied: mschaedler1982
27.06.2014 um 14:54 Uhr
Ich habe den Code überarbeitet, die Gruppennamen sind und verallgemeinert. Danke für den Hinweis!

Ja ich mein. Es gibt ja zig möglichkeiten um Dateien zu kopieren. Nun bei dem Anmeldeskript wird jedesmal die Datei kopiert ohne das sie wirklich erneurt wurde.
Berücksichtigen müsste man auch noch ob Windows 7 32 / 64 Bit und Windows XP 32 / 64 Bit vorhanden ist. Kann man auch eine Prüfroutine einbauen die quasi die Version oder das Datum der Datei prüft und nur wenn es eine neuere Datei ist den Kopiervorgang startet?
Bitte warten ..
Mitglied: colinardo
27.06.2014, aktualisiert um 15:22 Uhr
das könnte dann insgesamt so aussehen:
01.
Dim strPathLocal, strFileRemote, f_remote, f_local, fso, objShell 
02.
Set fso = CreateObject("Scripting.Filesystemobject") 
03.
Set objShell = CreateObject("Wscript.Shell") 
04.
 
05.
'RemoteFile 
06.
strFileRemote = "\\SERVER_XY\VERZEICHNIS\ORDNER\DATEI.DLL" 
07.
 
08.
'je nach OS-Bitnes den lokalen Pfad setzen 
09.
If is64Bit() Then 
10.
	strPathLocal = objShell.ExpandEnvironmentStrings("%programfiles(x86)%") & "\procad\profile\dbanw\Assembly\"	 
11.
Else 
12.
	strPathLocal = objShell.ExpandEnvironmentStrings("%programfiles%") & "\procad\profile\dbanw\Assembly\" 
13.
End If 
14.
 
15.
' nur wenn beide Dateien existieren ... 
16.
If fso.FileExists(strFileRemote) And fso.FileExists(strPathLocal & fso.GetFileName(strFileRemote)) Then 
17.
	'Dateireferenzen holen 
18.
	Set f_remote = fso.GetFile(strFileRemote) 
19.
	Set f_local = fso.GetFile(strPathLocal & fso.GetFileName(strFileRemote)) 
20.
	 
21.
	'Dateien vergleichen und nur kopieren wenn Remote-Datei neuer ist 
22.
	If f_remote.DateLastModified > f_local.DateLastModified Then 
23.
		fso.CopyFile strFileRemote, strPathLocal, True		 
24.
	End If 
25.
End If 
26.
 
27.
'Funktion zum überprüfen ob 64bit 
28.
Function is64Bit() 
29.
	Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
30.
	Set colItems = objWMIService.ExecQuery("Select OSArchitecture from Win32_OperatingSystem") 
31.
	For Each objItem in colItems 
32.
		If LCase(objItem.OSArchitecture) = "64-bit" Then 
33.
			is64Bit = True 
34.
		Else 
35.
			is64Bit = False 
36.
		End If  
37.
	Next 
38.
End Function
-edit- noch was korrigiert
Bitte warten ..
Mitglied: manuel-r
27.06.2014 um 15:25 Uhr
bei dem Anmeldeskript wird jedesmal die Datei kopiert ohne das sie wirklich erneurt wurde.

Das kann man auch mit VBScript realisieren. In der Praxis ist mir das regelmäßig zu aufwändig das Dateidatum gegeneinander zu prüfen. Ich helfe mir dann immer mit einen run indem ich damit ein ganz normales xcopy mit der Option /d aufrufe. Ist zwar quick&dirty aber es erfüllt seinen Zweck.

Berücksichtigen müsste man auch noch ob Windows 7 32 / 64 Bit und Windows XP 32 / 64 Bit vorhanden ist.
Die Prozessorarchitektur kannst du ermitteln indem du mit deinem Script auf die Systemvariable %PROCESSOR_ARCHITECTURE% prüfst. Bei AMD64 hast du 64Bit und bei x86 32Bit. An die OS-Version kommst du mit Win32_OperatingSystem.Version; an das Servicepack mit Win32_OperatingSystem.ServicePackMajorVersion.

Manuel
Bitte warten ..
Mitglied: mschaedler1982
02.07.2014 um 13:20 Uhr
Funktioniert! Einwandfrei!! Danke!!!
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Router & Routing
gelöst Empfehlung günstiges ADSL2+ nur Modem (10)

Frage von TimMayer zum Thema Router & Routing ...

Server-Hardware
Lenovo Server System X 3650 M5 Festplatten (9)

Frage von Hendrik2586 zum Thema Server-Hardware ...