schwabe84 10 Geschrieben 20. Mai 2008 Melden Teilen Geschrieben 20. Mai 2008 Hallo alle zusammen, bin wirklich kurz vorm Verzweifeln mit PowerShell. Habe vor ca. 2 Wochen angefangen, mich mit PowerShell zu beschäftigen. Allerdings komme ich trotz zahlreichem Suchen in Büchern und stundenlanger Google-Recherchen einfach nicht zu den passenden Lösungen. Ich würde mich sehr freuen, wenn mir hier jemand helfen könnte. Zu meinen Umsetzungsproblemen: 1. Wie kann ich eine Abfrage erstellen, die überprüft, ob ein bestimmter lokaler User schon angelegt ist? 2. Ich möchte einem lokalen User in folgende Policies aufnehmen: - Change the system time - Deny logon locally - Load and unload device drivers - Service start and stop 3. Wie kann ich eine lokale Gruppe anlegen, ihr Rechte vergeben und später User hinzufügen? Schon mal vielen Dank im Voraus! Zitieren Link zu diesem Kommentar
thumb 10 Geschrieben 20. Mai 2008 Melden Teilen Geschrieben 20. Mai 2008 Hallo schwabe84, kennst Du das ScriptingCenter von MS? Hey, Scripting Guy! How Can I Use Windows PowerShell to Determine the Status of the Guest Account? Gruß, THUMB Zitieren Link zu diesem Kommentar
schwabe84 10 Geschrieben 21. Mai 2008 Autor Melden Teilen Geschrieben 21. Mai 2008 Danke, werde ich auf jeden Fall mal versuchen. Vielleicht finde ich ja was Passendes. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 21. Mai 2008 Melden Teilen Geschrieben 21. Mai 2008 hallo, zu 1) get-wmiobject win32_useraccount zu 2) zu berechtigst Gruppen auf die Policy und fügst die User den Gruppen hinzu get-wmiobject win32_group zu 3) neben den wmi-Möglichkeiten kannst du auch ADSI mit dem WinNT-Provider benutzen: WinNT://<computername>/<gruppenname> Lokal habe ich auch noch nichts mit der PS gemacht. Für die Domänenverwaltung machen die schon häufig erwähnten Quest-Cmdlets und die Communityextensions das Leben deutlich leichter. Evtl. ist dort auch was für die lokale Userverwaltung dabei. cu blub Zitieren Link zu diesem Kommentar
schwabe84 10 Geschrieben 21. Mai 2008 Autor Melden Teilen Geschrieben 21. Mai 2008 Vielen Dank für deine Hilfe. Zu 1: Habe es jetzt folgendermaßen gelöst, allerdings ist irgendwo ein kleiner logischer Fehler drin. PowerShell meckert zwar nicht rum, allerding gibt er immer nur den else-Zweig aus. Weiß du vielleicht, an was es liegt? $computer = [ADSI]"WinNT://$env:computername,computer" if ((($computer.PSBase.Children.Find('Administrator')).Count) -eq "Administrator") { 'User gibt es' } else { 'User gibt es noch nicht' } Zu 2: Wie füge ich eine Gruppe zu folgenden Policies per PowerShell hinzu? get-wmiobject win32_group bringt mich grad nicht weiter. - Change the system time - Deny logon locally - Load and unload device drivers - Service start and stop Zu 3: lokale Gruppen habe ich folgendermaßen angelegt: $computer = [ADSI]"WinNT://$env:computername,computer" $computer.Create("group", "Test").SetInfo() Einen User kann ich mit $computer = [ADSI]"WinNT://$env:computername,computer" $user = $computer.PSBase.Children.Find("OpconAdmin", "user") $gruppe = $computer.PSBase.Children.Find("Test", "group") $gruppe.Add($user.PSBase.Path) der Gruppe hinzufügen. Ich weiß allerdings nicht, wie ich eine Active Directory Gruppe dieser lokalen Gruppe hinzufügen kann. Gruß schwabe84 Zitieren Link zu diesem Kommentar
Caddy24 10 Geschrieben 21. Mai 2008 Melden Teilen Geschrieben 21. Mai 2008 also zu 1. und 3. evtl noch folgendes: net user -> gibt die lokalen Benutzer aus net localgroup -> gibt die Benutzergruppen lokal aus Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 22. Mai 2008 Melden Teilen Geschrieben 22. Mai 2008 $computer = [ADSI]"WinNT://$env:computername,computer" if ((($computer.PSBase.Children.Find('Administrator')).Count) -eq "Administrator") { 'User gibt es' } else { 'User gibt es noch nicht' } .count liefert die Anzahl von Objekten. Also musst du auf 1 testen. Wie gesagt, ich würds mit wmi machen z.B. $a=get-wmiobject win32_useraccount -computer TestPC foreach ($elem in $a){ #if($elem.name -match "Administrator"){ if($elem.sid -match "-500$"){ write-host "User gibts" `n $elem.name $elem.SID } } und falls möglich bei Standardgruppen und Usern lieber mit SIDs, als mit Namen arbeiten. Dann bekommst du keine Sprachprobleme 2./3. muss ich mir auch erst mal ansehen. cu blub Zitieren Link zu diesem Kommentar
schwabe84 10 Geschrieben 22. Mai 2008 Autor Melden Teilen Geschrieben 22. Mai 2008 Danke für die Info. – also zu 1. und 3. evtl noch folgendes: net user -> gibt die lokalen Benutzer aus net localgroup -> gibt die Benutzergruppen lokal aus Danke für die Info. – .count liefert die Anzahl von Objekten. Also musst du auf 1 testen. Wie gesagt, ich würds mit wmi machen z.B. $a=get-wmiobject win32_useraccount -computer TestPC foreach ($elem in $a){ #if($elem.name -match "Administrator"){ if($elem.sid -match "-500$"){ write-host "User gibts" `n $elem.name $elem.SID } } und falls möglich bei Standardgruppen und Usern lieber mit SIDs, als mit Namen arbeiten. Dann bekommst du keine Sprachprobleme 2./3. muss ich mir auch erst mal ansehen. cu blub Danke für die schnelle Antwort. Werde es gleich in 2,5 Wochen nach meinem Urlaub ausprobieren. Hätte allerdings noch ein paar Fragen zu PowerShell. Ich hoffe, du kannst mir dabei helfen. 1. $a=get-wmiobject win32_useraccount -computer TestPC foreach ($elem in $a){ #if($elem.name -match "Administrator"){ if($elem.sid -match "-500$"){ write-host "User gibts" `n $elem.name $elem.SID } } Muss bei deinem Code-Block der Name vom PC aufgeführt werden? Könnte ich anstatt -computer TestPC auch [ADSI]"WinNT://$env:computername,computer" verwenden? Ich möchte nun auf dieser Art eine Abfrage machen, die nach einer lokalen Gruppe sucht. Wie wird das nun gemacht? Heißt es dann win32_usergroup? 2. Wie kann ich einen lokalen User und eine lokale Gruppe löschen? 3. Wie kann ich einer lokalen Gruppe eine ActiveDirectory-Gruppe hinzufügen? 4. Wie kann ich per Script die alle Einträge des Kommandofensters von PowerShell in eine HTML-Datei eportieren? 6. Ich habe ein Verzeichnis "Test" mit mehreren Unterverzeichnissen. ich möchte: - der Gruppe Administrators das Recht FullControl auf das Verzeichnis und allen Unterverzeichnissen erteilen - der Gruppe System das Recht FullControl auf das Verzeichnis und allen Unterverzeichnissen erteilen - der Gruppe Gruppe1 das Recht Read Execute auf das Verzeichnis und allen Unterverzeichnissen erteilen - der Gruppe Gruppe2 das Recht Change auf das Verzeichnis und allen Unterverzeichnissen erteilen - der Gruppe Gruppe3 das Recht Read Execute auf das Verzeichnis und allen Unterverzeichnissen erteilen - der Gruppe Gruppe4 das Recht Change auf das Verzeichnis und allen Unterverzeichnissen erteilen - der Gruppe Backup Operators das Recht Change auf das Verzeichnis und allen Unterverzeichnissen erteilen - die Gruppe Everyone aus der Userliste entfernen, bzw alles verweigern. Habe allerdings keine Ahnung, wie ich das bewerkstelligen kann. Ist die vorgehensweise bei Shares identisch? 7. Last but not least *g* Wie erzeuge ich ein Share mit PowerShell? Vielen herzlichsten Dank Zitieren Link zu diesem Kommentar
schwabe84 10 Geschrieben 9. Juni 2008 Autor Melden Teilen Geschrieben 9. Juni 2008 Hi, habe soweit alles hinbekommen. Das einzigste Problem, welches ich nicht lösen konnte, liegt bei den Freigaben für Shares. Habe ein Share angelegt, konnte auch die NTFS-Berechtigungen setzen, allerdings möchte ich aus den Freigabe-Berechtigungen "Jeder" entfernen und einzelne User hinzufügen. Mit cacls konnte ich nur die NTFS-Berechtigungen ändern. RMTSHARE konnte ich unter PowerShell nicht ausführen. Hat irgendjemand eine Idee, wie ich die Freigabe-Berechtigungen ändern kann? Was mir auch noch unklar ist: Wie kann ich eine AD-Gruppe zu einer lokalen Gruppe hinzufügen? Danke Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 9. Juni 2008 Melden Teilen Geschrieben 9. Juni 2008 Hat irgendjemand eine Idee, wie ich die Freigabe-Berechtigungen ändern kann? hast du es schon mit "subinacl /share" probiert? cu blub Zitieren Link zu diesem Kommentar
schwabe84 10 Geschrieben 10. Juni 2008 Autor Melden Teilen Geschrieben 10. Juni 2008 hast du es schon mit "subinacl /share" probiert? cu blub Danke, hat leider nicht geklappt. PowerShell erkennt subinacl nicht. Hast du eine Idee, wie ich einer lokalen Gruppe eine AD-Gruppe hinzufüge? Habe es folgendermaßen probiert, doch ohne Erfolg: $computer = [ADSI]"WinNT://$env:computername,computer" $user = $computer.PSBase.Children.Find("de/testgroup", "group") $gruppe = $computer.PSBase.Children.Find("Test", "group") $gruppe.Add($user.PSBase.Path) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 10. Juni 2008 Melden Teilen Geschrieben 10. Juni 2008 Danke, hat leider nicht geklappt.PowerShell erkennt subinacl nicht. Download details: SubInACL (SubInACL.exe) subinacl musst du dir in einen %Path% reinlegen cu blub Zitieren Link zu diesem Kommentar
schwabe84 10 Geschrieben 11. Juni 2008 Autor Melden Teilen Geschrieben 11. Juni 2008 Danke, bin allerdings anders fündig geworden. Habe mein Share mit Freigaben mit Hilfe von Dateisystemfreigabe anlegen (mit Berechtigungen) | Codebeispiel für Windows PowerShell-Skript hinbekommen. Die NTFS-Berechtigungen habe ich mit cacls gesetzt. Allerdings weiß ich immer noch nicht, wie ich einer lokalen Gruppe eine AD-Gruppe hinzufüge. Zitieren Link zu diesem Kommentar
Caddy24 10 Geschrieben 11. Juni 2008 Melden Teilen Geschrieben 11. Juni 2008 Allerdings weiß ich immer noch nicht, wie ich einer lokalen Gruppe eine AD-Gruppe hinzufüge. net localgroup [i]Name der lokalen Gruppe[/i] /ADD [i]Domänenname\Domänengruppe[/i] Zitieren Link zu diesem Kommentar
schwabe84 10 Geschrieben 11. Juni 2008 Autor Melden Teilen Geschrieben 11. Juni 2008 net localgroup [i]Name der lokalen Gruppe[/i] /ADD [i]Domänenname\Domänengruppe[/i] Danke, habe ich auch schon versucht. Funktioniert auch perfekt, so lange die Gruppe nicht länger als 20 Zeichen ist, was bei mir der Fall ist. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.