Fragensteller
Powershell NTFS die GUI zeigt immer spezielle Rechte an

Allgemeine Diskussion
-
Hi ho,
habe ein Skript geschrieben, mit dem ich NTFS Berechtigungen setzen kann....es steckt noch in den kinderschuhen.
Soweit so gut.....Problem ist aber, dass ich in der GUI immer in die spziellen Berechtigungen schauen
muss, um mir die Berechtigungen anzusehen. Dabei ist es egal ob ich Vollzugriff geben nur Read oder jedes Recht einzeln setzte.
Gibt es nen Schalter dafür ?Vielen Dank Marco Wendt
Anbei das Skript:
#skript zum erstellen von ordnern #datum 24.01.2013 #author marco wendt #version 0.1 #firma XXX #ListDirectory, ReadData, WriteData, Create #Files, CreateDirectories, AppendData, ReadExtendedAttributes, WriteExtendedAttributes, Traverse, ExecuteFile, DeleteSubdi #rectoriesAndFiles, ReadAttributes, WriteAttributes, Write, Delete, ReadPermissions, Read, ReadAndExecute, Modify, ChangeP #ermissions, TakeOwnership, Synchronize, FullControl #$Berechtigungen='ReadAttributes, ReadAndExecute,Read,ReadPermissions,ReadExtendedAttributes' $Berechtigungen='FullControl' $quellpfad='c:\' $queldatei='ordner.txt' $quellegesamt=$quellpfad+$queldatei $zielpfad='c:\Temp\' $inhaltdatei=Get-Content $quellegesamt $IdentityRef='XXX.XXX\m.wendt' $FileSystemRights = [System.Security.AccessControl.FileSystemRights]$Berechtigungen $InheritanceFlag1 = [System.Security.AccessControl.InheritanceFlags]::ObjectInherit $InheritanceFlag2 = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit $InheritanceFlag=$InheritanceFlag1 -bor $InheritanceFlag2 $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::InheritOnly $AccessControlType =[System.Security.AccessControl.AccessControlType]::Allow $User = New-Object System.Security.Principal.NTAccount($IdentityRef) $ACE = New-Object System.Security.AccessControl.FileSystemAccessRule("$IdentityRef","$FileSystemRights", "$InheritanceFlag1","$PropagationFlag","Allow") Function Ordnererstellen($ordnername,$beschreibung) { $temp=$zielpfad+$ordnername New-Item $temp -ItemType directory $ACL = Get-ACL $temp $ACL.AddAccessRule($ACE) Set-Acl -Path $temp -AclObject $ACL Write-Host $temp gesetzt } function Excelauslesen { $ExcelDatei = "c:\Mandate_.xlsx" $SheetName = "Tabelle1" $ExcelSourceObj = New-Object -comobject Excel.Application #Excel COM object $ExcelSourceObj.Visible = $True #Excel öffnen #foreach($element in $SheetName) #{ $ExcelWorkbook = $ExcelSourceObj.Workbooks.Open($ExcelDatei, 2, $True) #Datei mit Excel öffnen $ExcelWorkSheet = $ExcelWorkbook.Worksheets.Item($SheetName) #Datenblatt öffnen $Zeile = 2 $Spalte = 1 $Spalte_A $Spalte_B $Spalte_C $Verzeichnisse=@{} $letztezeile=($ExcelWorkSheet.UsedRange.rows).count Write-Host $letztezeile for($i=0;$i-lt $letztezeile;$i+1) # while (($ExcelWorkSheet.Cells.Item($Zeile, $Spalte).Value() -ne $Null)) { if($ExcelWorkSheet.Cells.Item($Zeile, $Spalte).Value()-eq "STOP") { $i=$letztezeile; } else { if($ExcelWorkSheet.Cells.Item($Zeile, $Spalte).Value() -ne $null ) { $Spalte_A=$ExcelWorkSheet.Cells.Item($Zeile, $Spalte).Value() if($ExcelWorkSheet.Cells.Item($Zeile, $Spalte+13).Value() -ne $null ) { $Spalte_B=$ExcelWorkSheet.Cells.Item($Zeile, $Spalte+13).Value() } else { $Spalte_B="kein Eintrag" } if($ExcelWorkSheet.Cells.Item($Zeile, $Spalte+14).Value() -ne $null) { $Spalte_C=$ExcelWorkSheet.Cells.Item($Zeile, $Spalte+14).Value() } else { $Spalte_C="kein Eintrag" } Write-Host $Spalte_A $Spalte_B $Spalte_C $Verzeichnisse.Add($Spalte_A , $Spalte_B+$Spalte_C) } Ordnererstellen $Spalte_A ($Spalte_B + " "+ $Spalte_C) $Zeile += 1 } } $ExcelWorkbook.Close() #Excel Blatt schließen $ExcelSourceObj.Quit() #Excel schließen } #} #Ordnererstellen Excelauslesen
- Typ geändert Denniver ReiningMVP, Moderator Freitag, 30. Juni 2017 10:31
Alle Antworten
-
Habe gerade wenig Zeit...
Vielleicht hilft dir das Modul vom Raimund weiter, damit kann man einfacher NTFS Rechte setzen:
http://gallery.technet.microsoft.com/scriptcenter/1abd77a5-9c0b-4a2b-acef-90dbb2b84e85
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!- Bearbeitet Peter Kriegel Mittwoch, 6. Februar 2013 10:19
-
Hallo Marco,
Hast du die Lösungen von Peter und Andreas ausprobiert?
Viele Grüße,
AlexAlex Pitulice, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
HI ho,
jap habe einen Lösungsvorschläge ausprobiert..bzw. überprüft.
Die Vererbung ist gesetzt, also sowohl für Unterordner als auch für Datein.
Die Lösung mit dem "neuem" CMDLET habe ich noch nicht ausprobiert und möchte ich eigentlich
auch nur als "Notfall"-Lösung benutzten....es muss doch auch so gehen.
An der Stelle stelle ich die Vererbung ein
$InheritanceFlag1 = [System.Security.AccessControl.InheritanceFlags]::ObjectInherit $InheritanceFlag2 = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit $InheritanceFlag=$InheritanceFlag1 -bor $InheritanceFlag2 $PropagationFlag = [System.Security.AccessControl.PropagationFlags]::InheritOnly
bzw. wie das ganze wirken soll.
SO long Marco Wnedt