Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.036
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Du würdest Dir selbst und uns allen einen riesen Gefallen tun, wenn Du den Code, den Du hier postest auch als Code formatierst und Deinen Code entsprechend korrekt einrückst. Du möchtest in Deinen Schleifen über eine Variable $Infos iterieren, hast diese Variable aber nirgendwo in dem Code, den Du gepostest hast, definiert oder gefüllt.
  2. Ooops ... hab ich tatsächlich übersehen, sorry. Aber ich bekomme schon Fehler beim Umbenennen der Tabellenblätter ... ich vermute mal einen Tippfehler. Erzeugt werden die Tabellenblätter ab, bc und de und umbenannt werden sollen ab, bc und cd.
  3. Woher hast Du die Methode '*.SaveAs()'? $excel = new-object -comobject excel.application $excel | Get-Member | Where-Object -FilterScript {$_.MemberType -eq 'Method' -and $_.Name -like 'save*'} ... bei mir gibt es die gar nicht. Ausgabe: TypeName: System.__ComObject#{000208d5-0000-0000-c000-000000000046} Name MemberType Definition ---- ---------- ---------- Save Method void Save (Variant) SaveWorkspace Method void SaveWorkspace (Variant)
  4. .... und noch mal eine Verständnis-Nachfrage von mir: Im Betreff fragst Du nach Dateien, die älter sind als 5 Minuten. Dann fragst Du nach Dateien, die in der letzten Stunde neu erstellt wurden und am Schluss fragst Du nach Dateien, die z.B. aus dem aktuellen Jahr sind. :) :D ;) :schreck: Vielleicht solltest Du die erwünschten Rahmenbedingungen erst mal konkret festlegen!? :cool:
  5. Ginge auch Powershell? $Limit = Get-Date '01.01.2017' Get-ChildItem -Path 'C:\sample' -Filter '*.csv' | Where-Object -Property LastWriteTime -Value $Limit -GE
  6. Um die Datenmenge zu begrenzen, die Du die Pipeline entlang schickst. Wenn Du bereits bei der "Datenerhebung" nur relevante Daten extrahierst, sparst Du Prozessorleistung und Speicherplatz und beschleunigst im Idealfall Deine Abfragen/Scripte deutlich. Flexibler und mächtiger ist aber "Where-Object", weshalb man häufig nicht wirklich drumherum kommt.
  7. Hmmm ... da wirst Du wohl alle direkt einzeln prüfen müssen. Also "Get-ADUSer -Filter *" und dann in der Property "MemberOf" prüfen, ob die von Dir gesuchte Gruppe da ist bzw. nicht da ist.
  8. Yep ... das hatte ich aber erst bemerkt, als ich die Antwort auf diesen Post hier schon geschrieben hatte ... :D
  9. Huch ... hier isses ja nochma mit Bild ... also denn nochmal: Das klingt nach einer Aufgabe für das gute alte "icacls" und da im Speziellen die Option "/remove". Du kannst das Ganze natürlich auch gern aus einem Powershell-Skript heraus aufrufen.
  10. Das Bild kann ich leider nicht sehen, aber das klingt nach einer Aufgabe für das gute alte "icacls" und da im Speziellen die Option "/remove". Du kannst das Ganze natürlich auch gern aus einem Powershell-Skript heraus aufrufen.
  11. Weil wir neugierig sind und jetzt wissen wollen, ob es hilft, das cmdlet direkt auf einem DC abzufeuern. :D ;) :cool: :thumb1: :jau: :wink2:
  12. OK - aber es geht ja gar nicht um ein AD-Cmdlet und spätestens der DCLocator sollte doch dann den lokal verfügbaren DC finden, oder? ... na ma kukn, was magheinz'ns Experimente am Montag ergeben. :thumb1: ;) :D
  13. Keine Ahnung - aber ich gehe erst mal davon aus. .... würde ja Sinn machen eine lokal verfügbare Ressource nicht noch "aufwändig" irgendwo anders zu suchen. Supi Idee eigentlich - hast Du mal versucht, das Ganze direkt oder per Remoting auf einem DC laufen zu lassen. Funktioniert es dann?
  14. 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?
  15. .... 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:
  16. 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:
  17. 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'
  18. 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/
  19. 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:
  20. 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.
  21. 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.
  22. Na wenn ich vorher gewußt hätte, dass es was zu gewinnen gibt ...... :D ;) :cool: :schreck:
  23. 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
  24. 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? ;-)
  25. 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
×
×
  • Neu erstellen...