Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.096
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Stimmt. Aber genau für solche Fälle bietet sich ja das "Verpacken" des eigentlichen Befehls in ein "Invoke-Command" an. Dem kannst Du explizit mitgeben, auf welchem Rechner/Server es ausgeführt werden soll. Hattest Du das schon mal probiert?
  2. .... hmmm ... jein ... aber wenn ich schon eine Funktion oder ein Tool anbiete, die/das für die AD-Administration gedacht ist, sollte ich wenigstens die Möglichkeit vorsehen, es auch auf einen spezifischen Domain-Controller zu schicken. .... denke ich. ;) Naja, Set-ACL ist ja nicht explizit für's AD gemacht - es kann eben auch dafür genutzt werden, weil im AD auch ACLs gibt, die man manipulieren kann. Dann könntest Du eben den letzten Befehl so umstellen: Invoke-Command -ComputerName dc01 -ScriptBlock {Set-ACL gruppe folder permission} Manchmal ist es aber eben doch einfacher, mit dem "Status Quo" zu leben. Ist es wirklich so dringend, dass es nicht 2 Minuten warten kann? Du musst ja nicht zwingend vorm Monitor darauf warten, dass die 2 Minuten vergehen - das Script läuft auch ohne Deine "Aufsicht" bis zum Schluss durch, denke ich. :D ;) :cool: :thumb1: :wink2:
  3. Du könntest per Invoke-Command sicherstellen, dass all cmdlets auf dem Server ausgeführt werden, den Du möchtest. Oder Du bittest den Drittanbieter die Standardfunktion nachzuliefern. ;) :thumb1: :cool:
  4. Peter, mit NEW-ITEM –path $Userdata.ProfilePath -type directory -force erzeugst Du einen neuen Ordner. Soll das so sein? Ich habe es so verstanden, dass Du einen existierenden entfernen wolltest !? Mit Join-Path -Path 'hier den Teil, den Du schon hast' -ChildPath 'hier den zusätzlichen Teil' kann man sich einen korrekten Pfad zusammenbauen. Siehe auch Join-Path -Online Oder Du benutzt einfache String-Operationen: $ProfilOrdner = $($Userdata.ProfilePath) + '.v2'
  5. Wenn die englische Sprache keine zu große Hürde für Dich darstellt und Du gern tiefer einsteigen möchtest, hast Du hier mal ein paar Starthilfen .... https://powershell.org/forums/topic/using-csv-files/
  6. Get-ChildItem -Path 'Verzeichnispfad zu Deinen Dateien' -Filter 'Text1_*.txt' | Where-Object -Property BaseName -Value 'Text1_(\d{3})$' -Match | Foreach-Object -Process {Rename-Item -Path $_.FullName -NewName "Text1_Dummy3$($Matches[1]).txt"} Wie fast immer bei Powershell, gibt es natürlich mehrere Lösungen, die ans Ziel führen. Eine könnte diese sein. Ich bin davon ausgegangen, dass die Dateinamen 3 aufeinanderfolgende Zahlen enthalten. Wenn es drei beliebige zeichen sind, müsstest Du noch das Match-Pattern anpassen. Achja ... wenn Du unbedingt einen Einzeiler brauchst, kannst Du die Zeilenumbrüche nach den Pipes ("|") entfernen - so isses aber besser lesbar. ;) :thumb1:
  7. Die Syntax ist anders - das stimmt. Aber Batch wird seit Jahren nicht mehr weiterentwickelt - und das aus gutem Grund. ;) Mit Powershell wäre Dein Problem keins. Wenn Du noch eine Weile in der Windows-Adminsitration unterwegs sein möchtest, würde sich die Kenntnis von Powershell auf lange Sicht für Dich mit ziemlich großer Sicherheit auszahlen. :thumb1: ... und Hilfe bekommst Du für Powershell auch schneller und vielfältiger.
  8. Wenn es in dem Fall nur im die ExecutionPolicy geht - so lange das nicht durch andere Mechanismen verhindert wird, kannst Du ihr eine Verknüpfung auf das von Dir erstellte Powershell-Script ins Startmenü oder sonstwohin packen und die Powershell mit der Option "-ExecutionPolicy Bypass" aufrufen.
  9. Na wenn ich vorher gewußt hätte, dass es was zu gewinnen gibt ...... :D ;) :cool: :schreck:
  10. Die Gruppenmitgliedschaften eines Users stehen im Attribut "MemberOf". Da brauchst Du eigentlich kein "Get-ADPrincipalGroupMembership". $Gruppen = Get-ADUser -Identity 'USER' -Properties MemberOf | Select-Object -ExpandProperty MemberOf ForEach ($Gruppe in $Gruppen) { Add-ADGroupMember -Identity $Gruppe -Members zieluser } So sollte es eigentlich klappen
  11. War es nicht so, dass die Open Document Formate alle nur komprimiertes XML sind? The Document Foundation hält doch mit solchen Informationen bestimmt nicht hinterm Berg, oder? ;-)
  12. Normalerweise muss mann das nicht machen. Die Powershell kann damit umgehen. Aber wenn Du darauf bestehst - versuch doch mal das hier: add-MailboxPermission -id ps.substitute -user "'$($i)'" -AccessRights FullAccess
  13. hmmmm ... und warum kommt dann Powershell nicht in Frage? Mit Get-CimInstance -ClassName Win32_NetworkAdapterConfiguration -Filter "NOT Description LIKE '%TAP%'" | Where-Object -Property DefaultIPGateway -Value '' -NOTLIKE wärst Du bestimmt schon ein Stück näher am Ziel, oder?
  14. $Array = Get-ADGroup -Filter "Name -like 'GruppeXX*'" | Select-Object -ExpandProperty Name $Liste = foreach ($element in $Array) { Get-ADGroupMember -Identity $element | Get-Aduser -Properties name, DisplayName, Mail | Select-Object name, DisplayName, Mail,@{Name='Group';Expression={$element}} } $Liste $Liste | Export-Csv -Path C:\Scripte\2017\Januar\GruppenMitglieder.csv -NoTypeInformation -Delimiter ';' Vielleicht hilft Dir das ja weiter. Wenn Du Daten hast, die quasi eine Tabelle darstellen, macht es mehr Sinn, diese auch als solche zu exportieren. Das kannst Du mit Export-CSV erledigen. Um die einzelnen Gruppen dann noch auseinanderzuhalten, hab ich mal eine weitere Spalte mit dem Gruppennamen hinzugefügt. Du könntest natürlich auch jeweils eine Datei pro Gruppe machen. Noch ein Tipp für dieses Forum (vielleicht auch für alle Foren): Es zeugt von gutem Stil, wenn man Code postet, diesen auch als solchen zu formatieren. Dafür gibt es entsprechende Optionen in den jeweiligen Editoren. Und es macht Dir und den Menschen, die Dir helfen sollen das Leben einfacher, wenn Du möglichst keine Aliasse und Abkürzungen verwendest und entsprechende Einrückungen verwendest. Na denn ... viel Spaß
  15. Um sich alle möglichen von einem cmdlet gelieferten Properties anzusehen, ist Format-Table ungeeignet. Da wäre besser: Get-Printer -Name "H14 Raum 401 MF" | Select-Object -Property * oder Get-Printer -Name "H14 Raum 401 MF" | Format-List * Bei "Select-Object" kannst Du dann mit der Ausgabe weiterarbeiten - wohingegen Du mit "Format-List" die Pipeline quasi abbrichst und die Infos nur in der Konsole ausgibst. (was aber zum "Forschen" auch ok ist) Unabhängig davon ist es empfehlenswert IMMER die komplette Hilfe für ein cmdlet zu lesen. !!! Inklusive der Beispiele !!! Es kommt zwar vor, dass die Hilfe unvollständig oder ungenau ist, aber besser als raten ist es allemal.
  16. Ich fürchte, dafür fehlen uns die Informationen. Bei Druckern und Druckertreibern kocht (nach meiner Erfahrung) immernoch jeder Druckerhersteller sein eigenes Süppchen. Wir haben Ricoh und HP im Einsatz und benutzen deren "Universal Driver". So lange während der Druckereinrichtung auf dem Server der Drucker übers Netz erreichbar ist, holt sich der Druckertreiber die verfügbaren Optionen und Standardeinstellungen, inclusive zusätzlich installierter Papierfächer oder Sortierer oder Locher oder so, vom Drucker und wir belassen alles auf den Vorgaben vom Hersteller.
  17. Wenn ich mich nicht irre, solltest Du in Deinem Foreach-Loop eventuell noch den AD-User angeben für das neue Homedirectory gesetzt werden soll foreach-object{Set-ADUser -Identity $_.sAMAccountName -HomeDirectory ("\\domain.local\USERHOME\" + $_.samaccountname)} ... und zur Sicherheit kannst Du den 'zusammengebauten neuen Pfad' noch in Klammern setzen. Dann braucht PS nicht zu raten wo das dazu gehört.
  18. Ich kann auch nur mit dem arbeiten, was Du mir anbietest .... statt der Erklärung in Klammern, hab ich eben die ausgelesene SID eingefügt. Wenn Du's nicht brauchst, lass'es weg. Es schmerzt übrigens nicht, wenn man das ein oder andere in der Konsole oder in der ISE einfach ausprobiert ;) :rolleyes:
  19. ... ich zwar auch immer noch nicht verstanden, wo Du dann hinwillst, aber vielleicht hilft Dir das hier weiter: $user = $Env:UserName $SID = ([Security.Principal.NTAccount]($user)).Translate([Security.Principal.SecurityIdentifier]).Value $SID $ZielPfad = "C:\Windows\System32\GroupPolicyUsers\SID$SID\User\" $ZielPfad
  20. .... hhmmm ... und wie bewerkstelligst Du nun diese Aufgabe? Wir sind neugierig. ;) :rolleyes: ... oder gibst Du einfach auf? :confused: :schreck:
  21. Wow .... mit der Attitude kommst Du bestimmt gut durchs Leben. Na dann versuchs doch mal mit Get-ChildItem. Die komplette Hilfe zu diesem cmdlet bekommst Du mit: Get-Help Get-ChildItem -Full Viel Spaß!
  22. Du könntest mittels Powershell den Inhalt einlesen, die Zeilen entsprechend parsen, Datum und Uhrzeit in Powershell-Objekte umwandeln und diese dann vergleichen.
  23. Vielleicht genügt ja auch schon das Powershell-Excel Modul. Wenigstens die Landing Page sieht danach aus, als könnte es, was Du benötigst. https://blogs.technet.microsoft.com/heyscriptingguy/2015/11/25/introducing-the-powershell-excel-module-2/
  24. ... und der korrekte Aufruf des Scriptes wäre besser so: ....\Powershell.exe -noprofile -file <Pfad\Datei.ps1> Du kannst auch noch weitere Parameter anhängen. Alle möglichen Parameter findest Du in einer CMD mit: Powershell.exe /?
  25. ... ob ich ihm damit einen Gefallen tun würde!? Da bin ich sehr skeptisch. Ich bin mit batch nie richtig warm geworden. Deswegen war ich ja so froh, als PS rausgekommen ist. ;) :D :jau: :thumb1: :wink2:
×
×
  • Neu erstellen...