none
Läuft die Powershellkonsole mit anderen Rechten wenn man ein Script mit powershell startet? RRS feed

  • Frage

  • Hi,

    ich bin am verzweifeln. Ich habe ein Script in der Powershell ISE geschrieben, welches unter anderem den Besitzer eines Homeverzeichnis eines beliebigen Users auf "Administrator ändert". Wenn ich das Script auf meinem Client, per Rechtsklick "mit Powershell ausführen", starte funktioniert es nicht.

    Enter-PSSession -ComputerName 10.0.0.11 -Credential $cred
    $Path = "\\Server1\Userverzeichnis\TestUserverzeichnis"
    $ACL = Get-Acl $Path    $ACL.SetOwner([System.Security.Principal.NTAccount]"Administratoren")
    Set-Acl $Path -AclObject $ACL 
    Exit-PSSession

    Verbindung zum Server funktioniert.

    Auslesen funktioniert.

    Es hängt nur an diesem einen Befehl:

    Set-Acl $Path -AclObject $ACL

    FEHLER: Set-Acl : Es wurde versucht, einen nicht autorisierten Vorgang auszuführen.

    Wenn ich die Codezeilen meines Scripts einzeln in der Powershell ISE in die Konsole eingebe und jede einzeln ausführe funktioniert es.

    Wenn ich den gesamten Code in der Konsole der Powershell ISE eingebe kommt ebenfalls die Fehlermedung.

    Wenn ich die powershell.exe als Administrator starte und den gesamten Codeblock eingebe kommt die Fehlermeldung

    Nur wenn ich die Zeilen einzeln eingebe...

    Es liegt also nicht an fehlenden Rechten...

    Hat jemand eine Idee?

    Danke und schönen Feierabend

    Grüße

    Mittwoch, 18. Januar 2017 14:57

Antworten

  • Hallo,

    einfach gesagt bekommt dein Script nicht mit, dass die Befehle die nach dem Aufbau der Session auch in dieser laufen sollen.

    Versuche es mal so:

    # $Cred befüllen
    
    $Session = New-PSSession -ComputerName 10.0.0.11 -Credential $cred
    Invoke-Command -Session $Session -ScriptBlock {
    	$Path = "\\Server1\Userverzeichnis\TestUserverzeichnis"
    	$ACL = Get-Acl $Path    $ACL.SetOwner([System.Security.Principal.NTAccount]"Administratoren")
    	Set-Acl $Path -AclObject $ACL 
    }
    Remove-PSSession $Session

    Wenn Du den folgenden Code Schritt für Schritt in der Konsole ausführst bekommt Du den Namen des Remoterechners angezeigt, wenn du es als Script speicherst und ausfühsrt aber den Namen des aufrufenden Systemes.

    Enter-PSSession -ComputerName 10.0.0.11
    $env:ComputerName
    Exit-PSSession



    Beste Gruess
    brima


    • Bearbeitet brima Mittwoch, 18. Januar 2017 16:08
    • Als Antwort vorgeschlagen Evgenij Smirnov Mittwoch, 18. Januar 2017 16:44
    • Als Antwort markiert MCMaggi Donnerstag, 19. Januar 2017 07:31
    Mittwoch, 18. Januar 2017 16:06

Alle Antworten

  • Hallo,

    einfach gesagt bekommt dein Script nicht mit, dass die Befehle die nach dem Aufbau der Session auch in dieser laufen sollen.

    Versuche es mal so:

    # $Cred befüllen
    
    $Session = New-PSSession -ComputerName 10.0.0.11 -Credential $cred
    Invoke-Command -Session $Session -ScriptBlock {
    	$Path = "\\Server1\Userverzeichnis\TestUserverzeichnis"
    	$ACL = Get-Acl $Path    $ACL.SetOwner([System.Security.Principal.NTAccount]"Administratoren")
    	Set-Acl $Path -AclObject $ACL 
    }
    Remove-PSSession $Session

    Wenn Du den folgenden Code Schritt für Schritt in der Konsole ausführst bekommt Du den Namen des Remoterechners angezeigt, wenn du es als Script speicherst und ausfühsrt aber den Namen des aufrufenden Systemes.

    Enter-PSSession -ComputerName 10.0.0.11
    $env:ComputerName
    Exit-PSSession



    Beste Gruess
    brima


    • Bearbeitet brima Mittwoch, 18. Januar 2017 16:08
    • Als Antwort vorgeschlagen Evgenij Smirnov Mittwoch, 18. Januar 2017 16:44
    • Als Antwort markiert MCMaggi Donnerstag, 19. Januar 2017 07:31
    Mittwoch, 18. Januar 2017 16:06
  • Moin,

    erst einmal danke für die schnelle Hilfe:) Hat genau so geklappt wie es sollte!

    Eine Sache nur noch:

    Ich hole mir den Pfad für $Path aus der vorher definierten Variable $Homedirectory. Leider übernimmt er diese Variable anscheinend nicht... ich hab es auch schon erfolglos mit $Path = $global:Homedirectory versucht.. gibt es da noch einen Befehl mit dem man so eine Variable in die PSSession übernehmen kann?

    Grüße

    Donnerstag, 19. Januar 2017 07:31
  • Ok egal, hab mir schon selber geholfen...

    Invoke-Command -Session $Session -Argumentlist $Homedirectory -ScriptBlock {param($Homedirecotory)...}

    Danke für die Hilfe :)

    • Bearbeitet MCMaggi Donnerstag, 19. Januar 2017 07:53
    Donnerstag, 19. Januar 2017 07:53