Liste aller Codebeispiele

Dateisystemfreigabe anlegen (mit Berechtigungen)

Ein Beispiel zum Einsatz der Klasse System.Management.ManagementObject aus der .NET-Klassenbibliothek.

Autor: Dr. Holger Schwichtenberg

Beschreibung

Um beim Anlegen einer Dateisystemfreigabe die Zugriffsrechte zu setzen, sind folgende Schritte zusätzlich notwendig:
  • Ermitteln des Security Identifiers für jeden Benutzer/jede Gruppe, die Rechte erhalten soll
  • Erstellen einer Instanz von Win32Trustee für jeden Benutzer/jede Gruppe, die Rechte erhalten soll
  • Instanziieren der Klasse Win32_ACE für jeden Rechteeintrag
  • Befüllen von Win32_ACE mit dem Win32_Trustee-Objekt, den Rechten und den Rechteeigenschaften
  • Erstellen einer Instanz von Win32_SecurityDescriptor
  • Befüllen des Win32_SecurityDescriptor-Objekts mit einer Discretionary Access Control List (DACL)
  • Zusammenbauen der DACL aus einzelnen Rechteeinträgen (Access Control Entries – ACE), also Instanzen von Win32ACE

Programmcodebeispiele PowerShell-Skript

##########################################

New-Share (with Permissions)

(C) Dr. Holger Schwichtenberg

##########################################

Parameters

$Computer = "."
$ShareName = "Kunden"
$Pfad = "g:\Daten\Kunden"
$Comment = "Alle unsere Kundenkorrespondenz"

Constants

$SHARE_READ = 1179817
$SHARE_CHANGE = 1245462
$SHARE_FULL = 2032127
$SHARE_NONE = 1

$ACETYPEACCESSALLOWED = 0
$ACETYPEACCESSDENIED = 1
$ACETYPESYSTEMAUDIT = 2

$ACEFLAGINHERITACE = 2
$ACEFLAGNO_PROPAGATE_INHERITACE = 4
$ACEFLAGINHERIT_ONLYACE = 8
$ACEFLAGINHERITEDACE = 16
$ACEFLAGVALID_INHERITFLAGS = 31
$ACEFLAGSUCCESSFULACCESS = 64
$ACEFLAGFAILEDACCESS = 128

Get Trustee

function New-Trustee($Domain, $User)
{
$Account = new-object system.security.principal.ntaccount("itv\hs")
$SID = $Account.Translate([system.security.principal.securityidentifier])
$useraccount = [ADSI] ("WinNT://" + $Domain + "/" + $User)
$mc = [WMIClass] "Win32_Trustee"
$t = $MC.CreateInstance()
$t.Domain = $Domain
$t.Name = $User
$t.SID = $useraccount.Get("ObjectSID")
return $t
}

Create ACE

function New-ACE($Domain, $User, $Access, $Type, $Flags)
{
$mc = [WMIClass] "Win32_Ace"
$a = $MC.CreateInstance()
$a.AccessMask = $Access
$a.AceFlags = $Flags
$a.AceType = $Type
$a.Trustee = New-Trustee $Domain $User
return $a
}

Create SD

function Get-SD
{

$mc = [WMIClass] "Win32_SecurityDescriptor"
$sd = $MC.CreateInstance()
$ACE1 = New-ACE "ITV" "HP" $SHAREREAD $ACETYPE_ACCESS_ALLOWED $ACEFLAG_INHERITACE
$ACE2 = New-ACE "ITV" "HS" $SHAREFULL $ACETYPE_ACCESS_ALLOWED $ACEFLAG_INHERITACE
$ACE3 = New-ACE "ITV" "Produktmanagement" $SHAREFULL $ACETYPE_ACCESS_ALLOWED $ACEFLAG_INHERITACE
[System.Management.ManagementObject[]] $DACL = $ACE1 , $ACE2, $ACE3

$sd.DACL = $DACL
return $sd
}

before

"Vorher:"
Get-WmiObject Win32_Share -Filter "Name='$ShareName'"

get-WmiObject Win32Share -Filter "Name='$ShareName'" | foreach-object { $.Delete() }

Win32_Share anlegen

$MC = [WMIClass] "ROOT\CIMV2:Win32_Share"
$Access = Get-SD
$R = $mc.Create($pfad, $Sharename, 0, 10, $Comment, "", $Access)

if ( $R.ReturnValue -ne 0) { Write-Error "Fehler beim Anlegen: "+ $R.ReturnValue; Exit}
"Freigabe wurde angelegt!"

after

"Nachher:"

get-WmiObject Win32Share -Filter "Name='$ShareName'" | foreach { $.GetAccessMask() } | gm

 

Querverweise

 Definition '.NET Framework Class Library'  Verfügbarkeit der Klasse 'System.Management.ManagementObject'  Übersicht über den FCL-Namensraum 'System.Management'  PowerShell Community Portal

Buchtipp

Beratung & Support:

Schulungen zu diesem Thema:

 Microsoft SharePoint-Administration mit der Windows PowerShell
 Microsoft Exchange Server-Administration mit der Windows PowerShell / Microsoft Exchange Management Shell
 HyperV und/oder VMWare verwalten mit der Windows PowerShell
 Testing mit Windows PowerShell
 Netzwerkverwaltung mit der Windows PowerShell
 Verwaltung von Benutzern und Gruppen des „Active Directory“ mit der PowerShell
 Windows Server-Administration mit der Windows PowerShell, insbesondere Active Directory-Administration
 PowerShell-Scripting: Skripte schreiben mit der Windows PowerShell
 Windows PowerShell 5.1/PowerShell 7.0 für Softwareentwickler
 System Center verwalten mit der Windows PowerShell
 .NET und COM nutzen in der Windows PowerShell
 Windows PowerShell 5.0/5.1 für Umsteiger von Version 4.0
 Windows PowerShell 5.1/PowerShell 7.0 für System- und Netzwerkadministratoren
 Microsoft SQL Server-Administration mit der Windows PowerShell
 Grundlagen der PowerShell-Konsole
 Arbeiten mit PowerShell-Laufwerken
 Windows PowerShell 5.1/PowerShell 7.0 für System- und Netzwerkadministratoren (4-Tages-Agenda des öffentlichen Seminars)
 Microsoft Azure-Cloud-Dienste verwalten mit der Windows PowerShell
 Remoting, Jobs und Workflows mit der Windows PowerShell
 NetApp verwalten mit der PowerShell
 Windows PowerShell 4.0 für Umsteiger von Version 3.0
 Formatierung und Reporting mit der PowerShell
 Active Directory-Administration mit der Windows PowerShell
 Microsoft SQL Server 2008 - Die Neuerungen gegenüber SQL Server 2005 (Update-Schulung)
 Active Directory für Administratoren
 .NET-Überblick für .NET-Einsteiger und .NET-Entscheider (wahlweise für .NET und/oder .NET Core)
 Microsoft Teams
 Microsoft SharePoint im Überblick
 Office 365 für IT-Professionals
 Entity Framework Core (EF Core) - Objekt-Relationales Mapping für .NET und .NET Core
 Anfrage für eine individuelle Schulung zum Thema PowerShell  Gesamter Schulungsthemenkatalog

Bücher zu diesem Thema:

 Windows PowerShell 4.0 - Das Praxishandbuch
 Windows Scripting Lernen, 6. Auflage
 Microsoft .NET 3.0 Crashkurs
 Windows Scripting Lernen 4. Auflage
 Windows Scripting (5. Auflage)
 Windows PowerShell 2.0 - Das Praxishandbuch
 Windows PowerShell 5.0 - Das Praxishandbuch
 Windows PowerShell - Konzepte, Praxiseinsatz, Erweiterungen
 Windows PowerShell 2.0-Scripting für Administratoren
 Windows PowerShell 5 und PowerShell 7: Das Praxisbuch
 PowerShell: Anwendung und effektive Nutzung (shortcuts 125) Kindle Edition
 Windows PowerShell 5 – kurz & gut
 Windows PowerShell 5.1 und PowerShell Core 6.1 - Das Praxishandbuch (PDF)
 Windows Scripting 6. Auflage
 Windows 8.1 - Das Handbuch (27. November 2013)
 Essential PowerShell
 Scripting mit Windows PowerShell 3.0 - Der Workshop: Skript-Programmierung mit Windows PowerShell 3.0 vom Einsteiger bis zum Profi
 Scripting mit Windows PowerShell 2.0 - Der Einsteiger-Workshop
 Windows Scripting Lernen 5. Auflage
 Windows PowerShell 3.0
 Windows PowerShell und PowerShell Core - Der schnelle Einstieg: Skriptbasierte Systemadministration für Windows, Linux und macOS
 Windows 7 im Unternehmen
 Schnelleinstieg SQL Server 2012: Inkl. zahlreicher Praxisworkshops - Backup, Server-Sicherheit, Skalierbarkeit, Performance-Tuning, Troubleshooting, BI, T-SQL u.v.m.
 Windows PowerShell 5 und PowerShell Core 6 - Das Praxishandbuch
 Windows Vista Business
 PowerShell: Erste Schritte, Systemverwaltung und Sicherheit (IT-Administrator Kompakt)
 Windows PowerShell 2.0 - Crashkurs
 Windows Scripting Lernen
 Alle unsere aktuellen Fachbücher