kopieren mit WSH
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:
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...
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
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:
Dim strComputerName
Dim strUserName
Dim strDomainName
Dim strPrintSRV
Dim strPrintSRV2
Dim objADSysInfo
Dim wshNetwork
Dim WshShell
Dim WshSysEnv
Dim oShell
Dim oShFolder
Dim objUser
Dim objOU
Dim rootDSE
Dim oPq
Dim ws
Set wshNetwork = WScript.CreateObject( "WScript.Network" )
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshProcEnv = WshShell.Environment("Process")
Set WshUserEnv = WshShell.Environment("USER")
Set objADSysInfo = CreateObject("ADSystemInfo")
Set oShell = CreateObject("Shell.application")
Set oShFolder = oShell.Namespace(17)
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName)
Set objOU = GetObject(objUser.parent)
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPrintSRV = "printsrv"
Server1 = "DC-Server"
Server2 = "file-Server"
'Warten bis der Anmeldename des Users ermittelt wurde
Do While wshNetwork.username = ""
WScript.Sleep 5
Loop
strComputerName = wshNetwork.computerName
strUserName = wshNetwork.userName
strDomainName = wshNetwork.userDomain
'##### vorhandene Laufwerke löschen
On Error Resume Next
wshNetwork.RemoveNetworkDrive "I:", True, True
wshNetwork.RemoveNetworkDrive "J:", True, True
wshNetwork.RemoveNetworkDrive "K:", True, True
wshNetwork.RemoveNetworkDrive "L:", True, True
wshNetwork.RemoveNetworkDrive "H:", True, True
wshNetwork.RemoveNetworkDrive "N:", True, True
wshNetwork.RemoveNetworkDrive "O:", True, True
wshNetwork.RemoveNetworkDrive "Z:", True, True
wshNetwork.RemoveNetworkDrive "P:", True, True
wshNetwork.RemoveNetworkDrive "Q:", True, True
wshNetwork.RemoveNetworkDrive "S:", True, True
wshNetwork.RemoveNetworkDrive "W:", True, True
wshNetwork.RemoveNetworkDrive "X:", True, True
wshNetwork.RemoveNetworkDrive "M:", True, True
'##### für jeden gültige Laufwerke mappen
'wshNetwork.MapNetworkDrive "I:", "\\"&Server2&"\User\"& strUserName
'wshNetwork.MapNetworkDrive "L:", "\\"&Server2&"\AUS"
wshNetwork.MapNetworkDrive "V:", "\\" & Server2 & "\Vorlagen"
wshNetwork.MapNetworkDrive "X:", "\\" & Server1 & "\Xerox"
'Drucker mappen
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\BrotherH"
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\KyoceraF"
'##### Gruppenabhängige Laufwerke mappen
For Each prop In objUser.groups
'* ACHTUNG! Gruppennamen immer GROSS schreiben
Select Case UCase(prop.cn)
Case "MITARBEITER"
wshNetwork.MapNetworkDrive "K:", "\\" & Server2 & "\Kanzleiverwaltung"
wshNetwork.MapNetworkDrive "M:", "\\" & Server2 & "\Mandantenstamm"
wshNetwork.MapNetworkDrive "P:", "\\" & Server2 & "\Software"
Case "GESCHÄFTSLEITUNG"
wshNetwork.MapNetworkDrive "I:", "\\" & Server2 & "\Kanzlei_intern"
'Case "HR"
'wshNetwork.MapNetworkDrive "L:", "\\"&Server2&"Groups$\Profile"
End Select
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...
Option Explicit
'Deklaration der Variablen
Dim FSO
'Konstanten definieren
Const DateiNameQuelle = "beispiel.txt"
Const DateiNameZiel = "bespiel.txt"
'Objekt erzeugen
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(DateiNameQuelle) Then
'kopieren mit Copyfile
FSO.CopyFile DateiNameQuelle, DateiNameZiel, True
WScript.Echo DateiNameQuelle & "wurde nach" & _
DateiNameZiel & "kopiert"
Else
WScript.Echo DateiNameQuelle & " ist nicht vorhanden "
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
Please also mark the comments that contributed to the solution of the article
Content-ID: 129014
Url: https://administrator.de/contentid/129014
Printed on: November 6, 2024 at 07:11 o'clock
5 Comments
Latest comment
hallo SasHW2K3,
(2-er Codeschnippsel von dir!)
genau Pfadangabe nötig:
Wenn du die Zieldatei gnadenlos überschreiben willst dann kannst du dir
sparen!
Zum Mittloggen einfach ab deiner Zeile 09
einfügen und in deine freie Zeile 15
nach Zeile 18 dann noch
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
(2-er Codeschnippsel von dir!)
genau Pfadangabe nötig:
DateiNameQuelle = "C:\Quelle\beispiel.txt"
Const DateiNameZiel = "C:\Ziel\bespiel.txt"
Wenn du die Zieldatei gnadenlos überschreiben willst dann kannst du dir
If FSO.FileExists(DateiNameQuelle) Then
Zum Mittloggen einfach ab deiner Zeile 09
Set MyLogFile = FSO.CreateTextFile("C:\MyLogFile.txt", TRUE)
MyLogFile.Close
Set MyLogFile = FSO.OpenTextFile("C:\MyLogFile.txt",8)
MyLogFile.WriteLine (DateiNameQuelle & "wurde nach" & _
DateiNameZiel & "kopiert")
MyLogFile.Close
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
Hallo SasHW2k3!
Zur Sicherheit (für den Fall, dass es das Logfile noch nicht gibt) wäre in der Zeile 23 noch der Parameter "
Grüße
bastla
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
@bastla,
danke für den Hinweis. so hatte ich's auch noch nicht geschrieben. Habe meistens den
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
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