Jump to content
Sign in to follow this  
SubPort

Owner mehrerer Ordner auf einem DFS-Share auslesen

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Get-Childitem | ? { $_.PsIsContainer }

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites
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.  ;-)

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

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

Edited by MurdocX

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...