Windows:Per Batch Remote auf einem anderen Computer einen Ordner anlegen und diesen Freigeben mit bestimmten Rechten
Aus znilwiki
Das Batch-Skript macht folgendes
- Es wird mit den Parametern Benutzername, Zielcomputer und Zielverzeichnis aufgerufen
- Es legt einen Ordner mit dem Benutzername ím Zielverzeichnis an
- es gibt dem Benutzernamen Vollzugriff auf den Ordner
- es gibt der Gruppe "Administratoren" Vollzugriff auf den Ordner
- es gibt den Ordner unter dem Namen \\Zielcomputer\Benutzername frei
- Freigaberechte sind Vollzugriff für den Benutzer und die Administratoren
Das Skript funktioniert am besten wenn es innerhalb einer Domäne als Domänen-Administrator ausgeführt wird. Den Benutzer muss es vorher schon im Active Directory geben. Statt des Benutzernamens kann es auch ein Gruppenname sein.
ACHTUNG! Bei den Namen gelten die üblichen Probleme mit Umlauten in den Gruppennamen / Benutzernamen!
Download: Media:Create_UserFolder_and_Share.cmd
Aufruf:
Create_UserFolder_and_Share.cmd Benutzername Zielserver Stammordner-auf-Server
also z.B.
Create_UserFolder_and_Share.cmd MaxMustermann FILESERVER D:\Benutzer
Quellcode:
@echo off
REM **************************************************************************
REM Diese Skript macht folgendes:
REM
REM 1. Einen Benutzer-Ordner auf einem anderen Server erstellen
REM 2. Diesen Ordner freigeben für die Administratoren und den Benutzer
REM 3. Die Rechte auf dem Ordner für den Benutzer und den Administrator setzen
REM
REM diesem Skript den Benutzernamen (%USERNAME%), den Ziel-Server und den lokalen
REM Stammpfad (ohne! abschliessendem \) als Parameter übergeben:
REM DieseSkript.CMD MaxMustermann FILESERVER D:\User
REM
REM Dateinamen für VBS- und Batch-Skripte ermitteln
set VBSFILE=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%time:~-11,2%-%time:~-8,2%-%time:~-5,2%
setlocal enabledelayedexpansion
set VBSFILE=!VBSFILE:^ =0!
setlocal disabledelayedexpansion
set CMDFILE=%VBSFILE%
REM CMD-Skript erstellen
echo @echo off >%TEMP%\%CMDFILE%.CMD
echo mkdir %3\%1>>%TEMP%\%CMDFILE%.CMD
echo net share %1=%3\%1 /grant:"Administratoren",FULL /grant:%1,FULL>>%TEMP%\%CMDFILE%.CMD
echo icacls %3\%1 /grant "Administratoren":(CI)(OI)(F)>>%TEMP%\%CMDFILE%.CMD
echo icacls %3\%1 /grant %1:(CI)(OI)(F)>>%TEMP%\%CMDFILE%.CMD
REM VBS Script erstellen
echo strComputer = "%2">%TEMP%\%VBSFILE%.VBS
echo Set objWMIService = GetObject("winmgmts:\\" ^& strComputer ^& "\root\cimv2:Win32_Process")>>%TEMP%\%VBSFILE%.VBS
echo objWMIService.Create "C:\%CMDFILE%\%CMDFILE%.cmd", null, null, intProcessID>>%TEMP%\%VBSFILE%.VBS
REM CMD-Skript auf Zielcomputer kopieren
xcopy %TEMP%\%CMDFILE%.CMD \\%2\C$\%CMDFILE%\
REM Skript auf Zielcomputer starten
cscript %TEMP%\%VBSFILE%.VBS
REM Kurz warten
choice /N /C 89 /T 5 /D 9 /M "Warte 5 Sekunden ..."
REM Aufräumen
del %TEMP%\%CMDFILE%.CMD
del %TEMP%\%VBSFILE%.VBS
rd /S /Q \\%2\C$\%CMDFILE%
Es arbeitet wie folgt:
- Es nimmt als Dateinamen für das CMD und VBS Skript das Datumm-Uhrzeit beim Skriptaufruf
- Es erstellt eine
DATUM-UHRZEIT.CMD
im Temporären Ordner mit den eigentlichen Befehlen - Es erstellt ein
DATUM-UHRZEIT.VBS
im Temporären Ordner Skript welches das CMD Skript auf dem Zielcomputer starten wird - Es kopiert die CMD auf den Zielserver in den Pfad
C:\DATUM-UHRZEIT\DATUM-UHRZEIT.CMD
(legt also einen Unterordner aufC:
an - Es startet des Skript auf dem Zielcomputer
- es löscht den Unterordner auf dem Zielcomputer unter
C:
wieder und die beiden CMD und VBS Dateien im Temporären Ordner