Jump to content

Empfohlene Beiträge

Hallo,

 

ich möchte die Owner mehrerer Ordner auf einem DFS-Share auslesen. Ich habe diesen Beitrag gefunden:

Allerdings klappt es 'JEIN'. Er liest etwas aus, aber in der csv ist nur eine Spalte (Tabelle) mit Zahlen. Bsp.: 9e210fe47d09416682b841769c78b8a3,,,,,. Die sind dann untereinander mit 2167 Zeilen. Mehr nicht.


Dann habe ich noch dieses PS gefunden:
$RootPath = "\\yourserver\yourshare" 
$LogFile = "C:\Temp\Test.csv" 
gci $rootpath -Directory | select Fullname,@{n='Owner';e={(get-acl $_.Fullname).Owner}} | export-csv $logfile -NoType -Delimiter ";" -Encoding UTF8


Hier hat er das Problem mit dem Cmdlet -Directory. Die Meldung ist:
Get-ChildItem : A parameter cannot be found that matches parameter name 'Directory'.
At line:1 char:25
+ gci $rootpath -Directory <<<<  | select Fullname,@{n='Owner';e={(get-acl $_.Fullname).Owner}} | export-csv $logfile -NoType -De
limiter ";" -Encoding UTF8
    + CategoryInfo          : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Kann mir jemand helfen?

Danke schon mal und vG

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Schau dir mal die Grundlagen der Powershell an. Speziell das Pipelining.

Get-Childitem $rootpath | ? { $_.PsIsContainer } | select Fullname,@{n='Owner';e={(get-acl $_.Fullname).Owner}} | export-csv $logfile -NoType -Delimiter ";" -Encoding UTF8

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Mit den Grundlagen kämpfe ich noch. In unserer Company steht bald eine PS-Schulung an. Bis dato behelfe ich mich mit dem Internet, ein bisschen was schaffe ich alleine, aber dieses Script ist für mich eine Herausforderung.
Ich habe jetzt den Befehl eingebaut und folgendes kam raus:

Wie kann ich den Owner 'übersetzen'?
 

FullName

Owner

\\yourserver\yourshare
PS. Wie schnell du das gelöst hast :-S... -Respekt-

O:S-1-5-21-1116762646-104934148-3566329416-34711
 

Mooooooment. Der Owner heißt tatsächlich -1-5-21... Jetzt muss ich mir das genauer anschauen. 
Danke Dukel, bist mein Held!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 51 Minuten schrieb Dukel:

Get-Childitem kennt keinen Ordner. Du musst mit Where-Objct (bzw. ?) einschränken.

Get-Childitem | ? { $_.PsIsContainer }

Das ist - bei ansatzweise aktueller Powershell - so nicht ganz richtig.  Seit Powershell v3.0 gibt es für Get-ChildItem die Parameter -File und -Directory.  ;-)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 42 Minuten schrieb SubPort:

Mit den Grundlagen kämpfe ich noch. In unserer Company steht bald eine PS-Schulung an.

Wenn Du zwischendurch mal ein bissl Zeit hast, kannst Du Dich ein bissl "berieseln" lassen. Der kostenlose Videokurs in der Microsoft Virtual Academy - Getting Started with Powershell ist für Einsteiger sehr empfehlenswert. (wenigstens so lange er noch verfügbar ist) Und wenn Du dann in der Schulung sitzt, hast Du schon einen kleinen Vorsprung.  ;-):D

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 12 Stunden schrieb SubPort:

Mit den Grundlagen kämpfe ich noch. In unserer Company steht bald eine PS-Schulung an. Bis dato behelfe ich mich mit dem Internet, ein bisschen was schaffe ich alleine, aber dieses Script ist für mich eine Herausforderung.
Ich habe jetzt den Befehl eingebaut und folgendes kam raus:

Wie kann ich den Owner 'übersetzen'?
 

FullName

Owner

\\yourserver\yourshare
PS. Wie schnell du das gelöst hast :-S... -Respekt-

O:S-1-5-21-1116762646-104934148-3566329416-34711
 

Mooooooment. Der Owner heißt tatsächlich -1-5-21... Jetzt muss ich mir das genauer anschauen. 
Danke Dukel, bist mein Held!

Naja, das ist eine SID. Die kannst per LDAP Query im AD nachschlagen... Get-ADObject wäre das Cmdlet dafür :-) Und wenn die nicht aufgelöst werden kann, hat jemand den 33.711ten Security Principal gelöscht, der in Eurem AD angelegt wurde.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Alternativ kannst du auch die SID mit der Powershell auflösen:

 

# User to SID
$objAdNtAccount = New-Object -TypeName System.Security.Principal.NTAccount -ArgumentList ( $AdDomain, $SamAccountName )
$strAdObjectSID = $objAdNtAccount.Translate([Security.Principal.SecurityIdentifier])

# SID to User ( Quelle: https://blogs.msdn.microsoft.com/mpeder/2014/10/07/convert-sid-to-user-name-using-powershell )
$objSID = New-Object System.Security.Principal.SecurityIdentifier("S-1-5-21-3496554487-1900509739-3140548133-500")
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

Das Ergebnis ist ein String der in der Variable $strAdObjectSID gespeichert wird. Zweiteres in objUser

bearbeitet von MurdocX

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

Werbepartner:



×