Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.091
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Vielleicht noch eine generelle Empfehlung für die Zukunft: Fast ausnahmslos alle Powershell cmdlets kommen mit einer "eingebauten" Hilfe, die fast immer auch wirklich hilfreich ist. Wenn Du Dir unsicher bist, oder einfach wissen möchtest, wie man ein cmdlet benutzt, solltest Du die komplette Hilfe für dieses cmdlet lesen - inklusive der mitgelieferten Beispiele! Get-Help Remove-Mailbox -Full ... oder ... wird auch gern genommen: Get-Help Remove-Mailbox -ShowWindow
  2. ... ich bin bisher davon ausgegangen, dass er das schon lange ist .... sollte ich seine Tipps in Zukunft doch lieber kritisch hinterfragen und verifizieren?? :D :schreck:
  3. geht alles ... probier ma das hier $Start = Get-Date $Duration = New-TimeSpan -Minutes 5 Do{ Start-Sleep -Seconds 1 $ElapsedTime = New-TimeSpan -Start $Start -End $(Get-Date) $Time = "{0:D2}:{1:D2}" -f $ElapsedTime.Minutes, $ElapsedTime.Seconds Write-Progress $Time } While((Get-date) -lt ($Start + $Duration))
  4. ... Probieren geht über Studieren. Versuch's einfach mal - es geht bestimmt nix kaputt. ;) :cool: :thumb1: :jau:
  5. So kannst Du mit Powershell die Anfangsbuchstaben der Unterverzeichnisse des von Dir anzugebenden Verzeichnisses ermitteln ... und dann weiterbenutzen, wie Du möchtest ... Get-ChildItem -Directory -Path 'Dein Startverzeichnis' | Select-Object -Property Name,@{Name='Initial';Expression={$_.Name.Substring(0,1).ToLower()}}
  6. OK ... dann solltest Du Dir das Leben einfacher machen!! :D :D Schau mal hier: https://blogs.technet.microsoft.com/heyscriptingguy/2015/11/25/introducing-the-powershell-excel-module-2/ Man muss das Rad ja nicht immer wieder neu erfinden. ;) :cool: :thumb1:
  7. .... ohne Dir zu nahe treten zu wollen ... wie wär's wenn Du mit etwas anfängst, was Dich nicht überfordert? z.B. könnte ich mir vorstellen, dass es vermutlich erst mal einfacher wäre, die von Dir benötigten Daten zu ermitteln und sie in eine CSV-Datei zu exportieren. Powershell kann gut mit solchen strukturierten Daten umgehen und ein CSV-Export macht die Daten auch für Excel verwertbar.
  8. Du kannst die Variable auf jeden Fall erst benutzen, wenn Du sie definiert/gefüllt hast.
  9. 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.
  10. 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.
  11. 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)
  12. .... 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:
  13. Ginge auch Powershell? $Limit = Get-Date '01.01.2017' Get-ChildItem -Path 'C:\sample' -Filter '*.csv' | Where-Object -Property LastWriteTime -Value $Limit -GE
  14. 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.
  15. 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.
  16. Yep ... das hatte ich aber erst bemerkt, als ich die Antwort auf diesen Post hier schon geschrieben hatte ... :D
  17. 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.
  18. 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.
  19. Weil wir neugierig sind und jetzt wissen wollen, ob es hilft, das cmdlet direkt auf einem DC abzufeuern. :D ;) :cool: :thumb1: :jau: :wink2:
  20. 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
  21. 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?
  22. 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?
  23. .... 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:
  24. 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:
  25. 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'
×
×
  • Neu erstellen...