none
Powershell NTFS die GUI zeigt immer spezielle Rechte an RRS feed

  • 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


    Mittwoch, 6. Februar 2013 10:08

Alle Antworten