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

kopieren mit WSH

Frage Entwicklung

Mitglied: xm-bit

xm-bit (Level 2) - Jetzt verbinden

10.11.2009, aktualisiert 16:28 Uhr, 3283 Aufrufe, 5 Kommentare

Hi und guten morgen,

ich habe da mal eine kleine Herausforderung.

Ich möchte in mein vorhandenes Loginscript, eine Aktion einfügen, mit der ich eine Datei von einem Fileserver, an einen bestimmten Ort im Benutzerprofil kopiere.
Die vorhandene Datei soll dann überschrieben werden.

Was schön wäre, wenn das irgendwo in einem Logfile mit aufgeführt wird.

Hier ist erstmal mein Loginscript:

01.
Dim strComputerName   
02.
Dim strUserName   
03.
Dim strDomainName   
04.
Dim strPrintSRV  
05.
Dim strPrintSRV2  
06.
 
07.
Dim objADSysInfo   
08.
Dim wshNetwork   
09.
Dim WshShell   
10.
Dim WshSysEnv   
11.
Dim oShell   
12.
Dim oShFolder   
13.
Dim objUser   
14.
Dim objOU   
15.
Dim rootDSE   
16.
Dim oPq   
17.
Dim ws  
18.
 
19.
Set wshNetwork = WScript.CreateObject( "WScript.Network" )   
20.
Set WshShell = WScript.CreateObject("WScript.Shell")   
21.
Set WshProcEnv = WshShell.Environment("Process")   
22.
Set WshUserEnv = WshShell.Environment("USER")   
23.
Set objADSysInfo = CreateObject("ADSystemInfo")   
24.
Set oShell = CreateObject("Shell.application") 				  
25.
Set oShFolder = oShell.Namespace(17)   
26.
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName)   
27.
Set objOU = GetObject(objUser.parent)   
28.
Set objFSO = CreateObject("Scripting.FileSystemObject")   
29.
strPrintSRV = "printsrv"  
30.
Server1 = "DC-Server"   
31.
Server2 = "file-Server"   
32.
 
33.
'Warten bis der Anmeldename des Users ermittelt wurde   
34.
Do While wshNetwork.username = ""   
35.
   WScript.Sleep 5   
36.
Loop   
37.
 
38.
strComputerName = wshNetwork.computerName   
39.
strUserName = wshNetwork.userName   
40.
strDomainName = wshNetwork.userDomain   
41.
 
42.
'##### vorhandene Laufwerke löschen   
43.
 
44.
On Error Resume Next   
45.
 
46.
wshNetwork.RemoveNetworkDrive "I:", True, True   
47.
wshNetwork.RemoveNetworkDrive "J:", True, True   
48.
wshNetwork.RemoveNetworkDrive "K:", True, True   
49.
wshNetwork.RemoveNetworkDrive "L:", True, True   
50.
wshNetwork.RemoveNetworkDrive "H:", True, True   
51.
wshNetwork.RemoveNetworkDrive "N:", True, True   
52.
wshNetwork.RemoveNetworkDrive "O:", True, True   
53.
wshNetwork.RemoveNetworkDrive "Z:", True, True   
54.
wshNetwork.RemoveNetworkDrive "P:", True, True   
55.
wshNetwork.RemoveNetworkDrive "Q:", True, True   
56.
wshNetwork.RemoveNetworkDrive "S:", True, True   
57.
wshNetwork.RemoveNetworkDrive "W:", True, True   
58.
wshNetwork.RemoveNetworkDrive "X:", True, True   
59.
wshNetwork.RemoveNetworkDrive "M:", True, True   
60.
 
61.
'##### für jeden gültige Laufwerke mappen   
62.
'wshNetwork.MapNetworkDrive "I:", "\\"&Server2&"\User\"& strUserName   
63.
'wshNetwork.MapNetworkDrive "L:", "\\"&Server2&"\AUS"   
64.
wshNetwork.MapNetworkDrive "V:", "\\" & Server2 & "\Vorlagen"  
65.
wshNetwork.MapNetworkDrive "X:", "\\" & Server1 & "\Xerox"  
66.
 
67.
'Drucker mappen  
68.
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\BrotherH"  
69.
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\KyoceraF"  
70.
 
71.
'##### Gruppenabhängige Laufwerke mappen   
72.
 
73.
For Each prop In objUser.groups 
74.
 
75.
'* ACHTUNG! Gruppennamen immer GROSS schreiben   
76.
Select Case UCase(prop.cn)   
77.
 
78.
Case "MITARBEITER"   
79.
	wshNetwork.MapNetworkDrive "K:", "\\" & Server2 & "\Kanzleiverwaltung"  
80.
	wshNetwork.MapNetworkDrive "M:", "\\" & Server2 & "\Mandantenstamm"  
81.
	wshNetwork.MapNetworkDrive "P:", "\\" & Server2 & "\Software"  
82.
 
83.
Case "GESCHÄFTSLEITUNG"   
84.
  wshNetwork.MapNetworkDrive "I:", "\\" & Server2 & "\Kanzlei_intern"  
85.
 
86.
'Case "HR"   
87.
  'wshNetwork.MapNetworkDrive "L:", "\\"&Server2&"Groups$\Profile"   
88.
 
89.
End Select   
90.
Next  
hier ist der Teil, den ich gerne einfügen würde.
Aber ich bin mir nicht sicher, wie ich das integrieren kann...
Da ich noch nicht so die Erfahrung im Scripting habe...

01.
Option Explicit 
02.
'Deklaration der Variablen 
03.
 
04.
Dim FSO 
05.
'Konstanten definieren 
06.
Const DateiNameQuelle = "beispiel.txt" 
07.
Const DateiNameZiel = "bespiel.txt" 
08.
'Objekt erzeugen 
09.
Set FSO = CreateObject("Scripting.FileSystemObject") 
10.
If FSO.FileExists(DateiNameQuelle) Then 
11.
	'kopieren mit Copyfile 
12.
	FSO.CopyFile DateiNameQuelle, DateiNameZiel, True 
13.
	WScript.Echo DateiNameQuelle & "wurde nach" & _ 
14.
	DateiNameZiel & "kopiert" 
15.
	 
16.
Else  
17.
	WScript.Echo DateiNameQuelle & " ist nicht vorhanden " 
18.
End If

Bei "beispiel.txt" kann ich dort auch komplette Pfade angeben, ich denke schon oder??

Wenn ihr noch weitere Details benötigt, sag es mir einfach...

mfg
Sascha
Mitglied: TsukiSan
11.11.2009 um 05:44 Uhr
hallo SasHW2K3,

(2-er Codeschnippsel von dir!)

genau Pfadangabe nötig:
01.
DateiNameQuelle = "C:\Quelle\beispiel.txt"  
02.
Const DateiNameZiel = "C:\Ziel\bespiel.txt" 
Wenn du die Zieldatei gnadenlos überschreiben willst dann kannst du dir
01.
If FSO.FileExists(DateiNameQuelle) Then
sparen!

Zum Mittloggen einfach ab deiner Zeile 09
01.
Set MyLogFile = FSO.CreateTextFile("C:\MyLogFile.txt", TRUE) 
02.
MyLogFile.Close 
03.
Set MyLogFile = FSO.OpenTextFile("C:\MyLogFile.txt",8)
einfügen und in deine freie Zeile 15
01.
MyLogFile.WriteLine (DateiNameQuelle & "wurde nach" & _  
02.
                                       DateiNameZiel & "kopiert")
nach Zeile 18 dann noch
01.
MyLogFile.Close
eingeben

Wann du was kopieren möchtest (an welcher Stelle deines Scriptes) ist mir nicht ganz schlüssig, aber du kannst das einsetzen, woimmer du möchtest.

Gruss

Tsuki
Bitte warten ..
Mitglied: xm-bit
11.11.2009 um 09:09 Uhr
Hallo Tsuki,

danke erstmal für deine Antwort.

Das kopieren ist Unabhängig von den Gruppenmitgliedschaften. Mir ging es darum, nicht einfach irgendwo etwas reinzusetzen, sondern, die Teile dort reinzusetzen, das das Script dann auch nicht zu undurchsichtig wird. Wie schohn gesagt, ich fange erst an, mich mit der Materie Scripting, etwas intensiver zu befassen.

Darum stelle ich halt viele Fragen, auf die ich im ersten Schritt, die Antwort nicht finde.
Ich möchte halt, das das Script sauber aufgebaut, auch nen guten Eindruck macht.

Ich werde es mal testen, und dann das Ergebnis posten.


Ergebnis:

01.
'Option Explicit 
02.
 
03.
'Deklaration der Variablen 
04.
Dim FSO 
05.
Dim MyLogFile 
06.
 
07.
'Konstanten definieren 
08.
Const DateiNameQuelle = "D:\test.txt" 
09.
Const DateiNameZiel = "D:\test\" 
10.
'Objekt erzeugen 
11.
Set FSO = CreateObject("Scripting.FileSystemObject") 
12.
If FSO.FileExists(DateiNameQuelle) Then  
13.
	'kopieren der Datei 
14.
	FSO.CopyFile DateiNameQuelle, DateiNameZiel, True  
15.
	'WScript.Echo DateiNameQuelle & " wurde nach " & _  
16.
	'DateiNameZiel & " kopiert "  
17.
Else  
18.
	WScript.Echo DateiNameQuelle & " ist nicht gefunden worden" 
19.
	 
20.
End If 
21.
 
22.
Set MyLogFile = FSO.CreateTextFile("D:\MyLogFile.txt", True)  
23.
'Set MyLogFile = FSO.OpenTextFile("D:\MyLogFile.txt", 8) 
24.
MyLogFile.WriteLine (Date & " " & Time & " " & DateiNameQuelle & " wurde nach " & _ 
25.
	DateiNameZiel & " kopiert ") 
26.
 
27.
MyLogFile.Close
so funktioniert es schon ganz gut, aber wie bekomme ich es nun hin, das im Logfile, für jede Aktion eine neue Zeile angefangen wird.

Momentan wird die erste Zeile überschreiben..

mfg
Sascha
Bitte warten ..
Mitglied: bastla
11.11.2009 um 11:09 Uhr
Hallo SasHW2k3!
wie bekomme ich es nun hin, das im Logfile, für jede Aktion eine neue Zeile angefangen wird.
Indem Du auf die Zeile 22 (ersatzlos streichen) zugunsten der Zeile 23 (Kommentar entfernen) verzichtest. (De facto wird nicht die Zeile, sondern wegen "CreateTextFile" die gesamte Datei überschrieben / neu erstellt).

Zur Sicherheit (für den Fall, dass es das Logfile noch nicht gibt) wäre in der Zeile 23 noch der Parameter "True" einzufügen (siehe unten) ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
11.11.2009 um 11:12 Uhr
@Tsuki
Anmerkung zum Logfile: Mit
Set MyLogFile = FSO.OpenTextFile("C:\MyLogFile.txt",8,True)
wird die Datei bei Bedarf neu erstellt, sodass das "CreateTextFile" davor eigentlich unnötig ist.

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
12.11.2009 um 03:22 Uhr
@bastla,

danke für den Hinweis. so hatte ich's auch noch nicht geschrieben. Habe meistens den
CreateTextFile
Befehl genommen, wenn ich eine Datei neu erstellen, bzw. komplett überschreiben wollte.
Zum Anhängen von Daten eignet sich nur Zeile 23 in SasHW2k3-Programm. Das wäre schon klar.

@ SasHW2k3
sorry, dass ich dich nicht gleich 100%ig verstanden hatte. Aber bastla hat's ja zum Glück


Gruss und Danke!
Tsuki
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Ordner erstellen ll Datei hinein kopieren (1)

Frage von heyalice zum Thema Batch & Shell ...

Datenbanken
gelöst DB2 Daten in Windows DB2 kopieren (1)

Frage von Emheonivek zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...