0

erstens, Ich bin sehr neu in Powershell. Jedesmal, wenn ich denke, ich bekomme die Logik i WTF gehen .. Wenn diese bash war es wäre so einfach, etc ..Versuchen, ein Skript zu erstellen, die meine gefilterte Liste Get-Adcomputer erhalten dann einen Befehl auf jedem

was soll ich genau das zu tun versuchen ...

Erhalten Sie alle Computer von AD dass kennenlernen Xiopwb* Kriterien. Nachdem ich die Liste habe ich brauche, um die Berechtigungen für den \\Xiopwb20\Nsiwebroot Directory ändern enthalten nur Domänenadministratoren und eine Sicherheitsgruppe „webadmins“

Meine Logik:

alle Computer von AD erhalten, die Xio*PWB* treffen Nehmen Sie nur die NAME der Objekte in dieser Liste für immer "Name" in dieser Liste tun Get-ACL \\Name from list\Nsiwebroot entfernen * Benutzer/Gruppe hinzufügen.

Was ich habe:

PS C:\Windows\system32> Get-ADComputer -filter * | Where-Object {$_.Name -like "xiopwb*"} | Select Name | ForEach-Object { Get-Acl \\$_.Name\nsiwebroot} 

alle bis zur "ForEach" funktioniert ... bekomme ich nur die Namen des PCs, die ich brauche etc ..

einfach wie möglich I don‘ t brauche ein 100 Zeilen Skript.

Dank

** Update **

es doppelt so hoch ist \ seine nur zeigt es nicht ... keine Ahnung, warum

es sieht aus wie das tut, was ich zu einem gewissen Grad will. Allerdings spuckt das Format funky aus. @{Name=XIOPWB09}

PS C:\Windows\system32> Get-ADComputer -filter * | Where-Object {$_.Name -like "xiopwb*"} | Select Name | ForEach-Object {get-acl "\\$_\D$\nsiwebroot"} 

get-acl: Kann Pfad finden '\ @ {Name = XIOPWB09} \ D $ \ nsiwebroot', weil es nicht existiert. Bei Zeile: 1 Zeichen: 99 + ... opwb * "} | Wählen Name | ForEach-Object {get-acl "\ $ _ \ D $ \ nsiwebroot"} + ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (:) [Get-Acl], ItemNotFoundException + FullyQualifiedErrorId: GetAcl_PathNotFound_Exception, Microsoft.PowerShell.Commands.GetAclCommand

get-acl: Der Pfad '\ @ {Name = XIOPWB06} \ D $ \ nsiwebroot' konnte nicht gefunden werden, da er nicht existiert Bei Zeile: 1 Zeichen: 99 + ... opwb * "} | Wählen Sie Name | ForEach-Objekt {get-acl "\ $ _ \ D $ \ nsiwebroot"} + ~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (:) [Get-Acl], ItemNotFoundException + FullyQualifiedErrorId: GetAcl_PathNotFound_Exception, Microsoft.PowerShell.Commands.GetAclCommand

+0

Was '\ Xiopwb20 \ Nsiwebroot' ist? Das ist kein gültiger Pfad.Soll es '\\ Xiopwb20 \ Nsiwebroot' sein und Sie möchten die * share * Berechtigungen ändern? Oder soll es '\\ Xiopwb20 \ c $ \ Nsiwebroot \ 'sein, um über die Admin-Freigabe etwas auf dem Remote-Laufwerk zu bekommen? Oder ist es etwas wie 'c: \ xiopwb20 \ nsiwebroot' ein Pfad auf der lokalen Festplatte, der nach dem Computer benannt ist? – TessellatingHeckler

+1

1) Es wäre nicht einfach, AD-Computer zu bekommen und Windows-ACLs in bash zu ändern. 2) Dein 'where-object' ist defekt, weil' $ .Name' kein Ding ist, sondern '$ _. Name'. Und Sie könnten diese Filterung in "Get-ADComputer-filter" Name-ähnlich wie "xiopwb *" "-Teil tun. 3) Dein '| Wählen Sie Name | 'macht praktisch gar nichts. 4) Dein 'get-acl \ $. Name' ist aus dem gleichen Grund gebrochen wie du' $ _. Name' brauchst und du brauchst möglicherweise doppelte Anführungszeichen um den Pfad herum. – TessellatingHeckler

+1

Sie würden doppelte Anführungszeichen um den Pfad benötigen und müssen dann $ _ ändern. Name in $ ($ _. Name), damit es ordnungsgemäß verarbeitet wird. Das bringt Sie auch nur dazu, dass Sie das ACL-Objekt haben, das Sie dann mit Set-ACL manipulieren und anwenden müssen, was in einer einzelnen Pipeline nicht einfach ist. –

Antwort

1

"Select Name" gibt ein Objekt mit Tabellenkopf Namen. "" ist Was hier benötigt wird, wird es konvertieren o String.

Grüße,

kvprasoon

Verwandte Themen