Aktionen

Windows:Per Batch Remote auf einem anderen Computer einen Ordner anlegen und diesen Freigeben mit bestimmten Rechten

Aus znilwiki

Die druckbare Version wird nicht mehr unterstützt und kann Darstellungsfehler aufweisen. Bitte aktualisiere deine Browser-Lesezeichen und verwende stattdessen die Standard-Druckfunktion des Browsers.

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 auf C: 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