Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.035
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Verschachtelte Schleife brauchst Du eigentlich nicht unbedingt. Du kannst mit dem Statement -in oder -contains prüfen, ob ein einzelnes Element in einem Array enthalten ist. Das sollte flotter gehen als ein nested loop.
  2. Den Hinweis von Lee_Dailey schon probiert .... ? https://stackoverflow.com/questions/54901996/powershell-performance
  3. Die Verfügbarkeit einzelner cmdlets hängt nicht nur von der Powershell-Version ab, sondern auch von der Windows-Version auf der die Powershell läuft. Wenn Du Dir die Dokumentation auf den Microsoft-Seiten anschaust, hast Du immer auf der Linken Seite die Liste der cmdlets und darüber ein Suchfeld und die für die aktuell angezeigte Seite gültige Version von Windows oder Powershell. Wenn Du z.B. nach Install-Module suchst, findest Du standardmäßig erstmal die Dokumentation für Powershell Version 6. Wenn Du jetzt versuchst, die entsprechende Hilfe für die Version 3 aufzurufen, bekommst Du die Meldung, dass diese Seite nicht für die Version 3 verfügbar ist.
  4. Hallo RRX, na dann erstmal willkommen im MCSEBoard Scripting Forum. Wenn Du, wie Du schreibst, Dich mit C/C++ auskennst, kannst Du Dir bestimmt denken, dass man so einen über 1100 Zeilen langen Code-Batzen nicht mal eben so debuggen kann. Ich denke, das geht deutlich über die Möglichkeiten dieses Forums hinaus. Ich empfehle Dir, Dich an den Author dieses Scripts zu wenden und ihn um entsprechenden Support zu bitten.
  5. Och komm .... so lang wir uns nich fetzen ... sowas muss auch mal drin sein.
  6. neee ..... "... Sätze beenden." ... hätte da jetzt kommen müssen.
  7. Als wären wir seelenverwandt ... im richtigen Leben würden wir gegenseitig unsere ......
  8. Versteh ich nicht ... Du kannst doch auch nach weiteren Filterschritten das resultierende Object an Remove-MailboxPermission pipen. .... oder ... selbst wenn Du das nicht magst, kannst Du das Ergebnis immernoch in einer Variablen speichern und so das existierende Object an Remove-MailboxPermission pipen. .... oder fehlen uns noch ein paar Informationen?
  9. .... schon versucht das Ergebnis von Get-MailboxPermission an Remove-MailboxPermission zu pipen? Das ist ja der Vorteil der Powershell, dass Objekte über die Pipeline weitergereicht werden können. Ich weiß nicht, wieviele Exchange Experten hier unterwegs sind, aber vielleicht versuchst Du es mal in einem auf Exchange spezialisierten Forum ... z.B. bei den Microsoft Foren. Übrigens: Screenshots von Code zu posten ist keine gute Idee.
  10. Wow ... Du nu wieder ... ich würde erstmal anfangen und die Fehlerquelle "User-Interaction" entschärfen. Freitext-Eingabe is nich ... ich würde eine Liste mit möglichen Profilen anzeigen, aus denen der Benutzer des Scripts nur eins auswählen kann.
  11. Ich bin auch verwirrt. Ich dachte in dem Script wird etwas gemacht. Aber es soll nur ein Laufwerk verbunden werden. Und es sollen doch Credentials mitgegeben werden. Danach hatte ich viel weiter oben schon mal gefragt. Damit bin ich raus. Laufwerke verbindet man in Windows schon einige Jahre per Gruppenrichtlinie. Mit solchem VonHintenDurchDieBrustInsAugeQuatsch möchte ich mich einfach nicht mehr beschäftigen. Sorry. Ich wünsche viel Erfolg.
  12. Hmmmm .... mit welchem Account wird das Script denn ausgeführt? Oder hatten wir das schon geklärt? ... ich hab den Überblick verloren. Eine aus dem Aufgabenplaner gestartete Sitzung ist nicht das gleiche wie eine interaktiv gestartete Sitzung. Was stellst Du in Deinem Script eigentlich an? Manche Sachen, die eine interaktive Anmeldung voraussetzen funktionieren auch einfach nicht aus dem Aufgabenplaner.
  13. Natürlich kann man ein Auto auch schieben, um es zu bewegen. Aber das ist schwer. Also fragt man sein Freunde, ob sie beim Schieben helfen können. Dann geht's leichter - cool. Vielleicht findet man dann gemeinsam raus, dass man auch die Handbremse lösen kann - jetzt schiebt sich's noch leichter - supi. Dann kommt so einer daher und meint: "Jungs, das ist ein Auto. Da setzt man sich rein, macht den Motor an und fährt los". Wenn man jetzt nochmal fragt, warum sich das Auto so schwer schieben lässt, hat man sich mindestens eine Kopfnuss verdient.
  14. KÖNNTEST DU DEIN SCRIPT AUCH MIT DEM UNC-PFAD BENUTZEN???????
  15. Windows hat für Kompatibilitätszwecke Verknüpfungen zu den "Spezial-Ordnern" im Documents-Ordner. Und wenn Du robocopy nix anderes sagst, rennt es diesen Verknüpfungen hinterher. /XJ verhindert das.
  16. Versuch mal zusätzlich die Option "/XJ" für robocopy.
  17. OK ... dann versuch doch mal, den Backslash noch dranzuhängen und schau was robocopy draus macht.
  18. Hmmm ... ok, nochmal ... brauchst Du denn zwingend einen Laufwerksbuchstaben? Oder geht es auch mit dem UNC-Pfad?
  19. Kommentier mal bitte den robocopy Teil aus und lass Dir die Zielpfade ausgeben .... sie sollten mit einem Backslash enden.
  20. grc, zu 1. Nein. zu 2. Du musst beim robocopy-Ziel das konkrete Zielverzeichnis mit angeben. Also 'Desktop', 'Favorites', 'Documents', 'Pictures' und 'Videos' jeweils in den Destinationroot mit einarbeiten. Als Erklärung zu 1. Normalerweise hat nur der jeweilige User Zugriff auf sein Profilverzeichnis. Möchte jemand anders darauf zugreifen, braucht er Admin-Rechte.
  21. Na darum ging's mir doch ... war ich zu subtil? Das kenn' ich. Wenn ich mir meine ganz alten Sachen angucke, denke ich mir manchmal nur "Gott sei Dank sieht das niemand außer mir selbst"
  22. ... ich meinte, dass ich bei tesso bin ... Das war doch nur ein Beispiel ... natürlich nimmst Du das Datum aus der CSV-Datei ... Du kannst jedes beliebige Datum benutzen ... z.B. so $BeipsielDatumAusDerCSVDatei = '31.12.2018' Get-Date -Date $BeipsielDatumAusDerCSVDatei -Format 'yyyyMMdd' Das meinte ich mit "umständlich" ... Du brauchst viele Zeilen Code und könntest vieles stark verkürzen ... statt $Lehrgang = $_.Lehrgangsnummer $Lehrgang= $Lehrgang.Replace(" ","") ... genügt z.B. auch eine Zeile ... $Lehrgang = $_.Lehrgangsnummer -replace '\s*' ... Musst Du das Datum für jeden einzelenen User zusammenbauen oder gilt das Datum für alle User eines Lehrgangs?
  23. Warum nimmst Du nicht einfach meinen Code und versuchst zu verstehen, was er tut? Du führst z.B. mehr oder weniger die gleiche Schleife 3 mal aus, nimmst dafür aber jedes mal die Original-Datei als Grundlage und schreibst jedes mal die Ziel-Datei neu. Das dürfte eigentlich nicht funktionieren. Es wäre effizienter, alle Änderungen in einer Schleife nacheinander durchzuführen. Ich schreibe in meinem Script die Änderungen mit dem Parameter -OutVariable erst mal temporär in eine Variable. Diese benutze ich dann zum Schluss dazu, dieErgänzung einzufügen. Da Du die Variable nicht benutzt, kann es so nicht funktionieren. Lies einfach Dein Destination-File nochaml mittels Get-Content ein und füge die Ergänzung auf die gleiche Weise wie ich hinzu. Weißt Du was ein Help-Vampire ist? Ich will ja nicht dran Schuld sein, wenn sich jemand die Pulsadern eröffnet .... Um meinen Code-Vorschlag quick & dirty um die letzten beiden zusätzlichen Ersetzungen zu erweitern, musst Du nur eine einzige Zeile ändern ... und zwar das hier else { $_ } .... in das hier ... else { $_.Replace("SetApproachStrategy(true, false, -1)", "SetApproachStrategy(false, true, 2)").Replace("SetRetractStrategy(true, false, -1, 0)", "SetRetractStrategy(false, true, 2, 0)") } ... noch als Erklärung: Der -replace Operator arbeitet mit regulären Ausdrücken. Die String-Methode .Replace() dagegen arbeitet mit direkten String-Ersetzungen. Der zu ersetzende String muss also genau so aussehen, wie in der Methode angegeben.
×
×
  • Neu erstellen...