Jump to content

Kurz vorm Verzweifeln mit PowerShell


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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!

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

 

$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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
  • 3 Wochen später...

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

Link zu diesem Kommentar
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)

Link zu diesem Kommentar

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.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...