Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.101
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Fehlermeldungen sind wichtig und gehören mit hierher. Die helfen uns, die Fehler zu beseitigen. Ansonsten müssten wir ja raten. Wenn Du Fehlermeldungen postest, die bitte auch als Code formattieren! Ich schau gleich mal .... diesen Super-Sorglos-Service gibt's hier aber nur ausnahmsweise ... beim nächsten Mal musst Du dann selbst ran.
  2. Hmmm ... sehen die zu ersetzenden Strings immer exakt gleich aus, oder können die sich auch unterscheiden? Ich habe die Suchmuster (Patterns) und zu ersetzenden Strings (Replace) mal als Variablen rausgezogen. So kannst Du einfacher mit verschiedenen Versionen spielen und ein bissl rumprobieren. Wenn keine sensiblen Informationen drin sind und die Dinger nicht zu groß sind, könntest Du hier mal eine der Dateien posten? ... oder einen Ausschnitt mit de relevanten Informationen. (das dann bitte auch als Code formattiert um ungewollte Zeilenumbrüche zu vermeiden) Damit meinte ich nur, dass hier auch Nicht-Profis geholfen wird, wenn sie sich wie Profis verhalten und ein bissl mitarbeiten. ... und wenn man sich mit CNC-Programmen beschäftigt, ist man auch als Hobby-ist quasi Profi ehrenhalber. hmmm ... das CNC-Programm is wohl ne kleine Diva?! ... möchte die Sachen auch noch in der richtigen reihenfolge haben ... ... nagut ... ich hab den Code nochmal korrigiert - probier mal so. Wenn das mit den Zeilennummern noch nicht richtig passt, kannst Du das selbst entsprechend anpassen.
  3. Wie wird die Ausgangs-Datei denn erzeugt? Sieht die immer exakt gleich aus? Steht nach den 4 einzufügenden Zeilen immer das Gleiche? Du solltest Dich auch damit beschäftigen, wie man Scripte debugged. Dieses Forum hier ist für Profis - da wird erwartet, dass man selber auch mitarbeitet. ... und nur noch aus Neugier: Like'st Du hier Deine eigenen Beiträge?
  4. Vielleicht nimmst Du Dir ein bissl Zeit und schaffst Dir erstmal die Grundlagen von Powershell drauf. Da gibt es zahlreiche gute Bücher oder - im Moment noch verfügbar - den kostenlosen und sehr empfehlenswerten Video-Kurs in der Microsoft Virtual Academy - Getting Started with Powershell. Das erspart Dir bestimmt eine Menge Frustration und verschwendete Zeit. Ich glaube, man kann eine hinreichend komplexe Technologie nicht vernünftig lernen indem man sich ein paar Zeilen Code zusammengoogled. Oooops ... mein Fehler ... ist korrigiert ... Ich hab auch nochmal die ersten beiden Ersetzungen kontrolliert, von denen Du geschrieben hattest, dass sie funktionierten. Eigentlich sollten sie das mit Deinem Code gar nicht tun. Der -replace Operator arbeitet mit Regulären Ausdrücken und bei denen haben bestimmte Zeichen bestimmte Bedeutungen. Deshalb muß man sie, will man diese speziellen Zeichen tatsächlich finden, "escape'n". Ich hab das im Code auch mal korrigiert Hmmm ... 'bin mir nicht sicher, daß ich das jetzt verstehe. Du hattest ursprünglich geschrieben "Am Ende der Datei sollen folgende vier Zeilen". Soll danach noch eine Leerzeile kommen, oder wie meinst Du das? Hinweis: ich habe den Code in meiner obigen Antwort korrigiert. Zusätzlich habe ich noch die Ausgabedatei mit einem "+" Zeichen vershehen. Dann kannst Du das Script mehrfach laufen lassen, ohne jedes Mal die Dateien hin und her kopieren zu müssen.
  5. Wenn ich Dich nicht falsch verstanden habe, kannst Du Deinen Code deutlich einfacher gestallten $original_file = 'C:\Desktop\TEST.xcs' $destination_file = 'C:\Desktop\TEST+.xcs' $X_Offset = '5' # value to add to the existing value $Y_Offset = '5' # value to add to the existing value $TypeOfProcessArg5 = '3' # value to add to the existing value $ReplacedContent = Get-Content $original_file | Foreach-Object { if ($_ -match '(?:SetWorkpieceSetupPosition)\((\d+\.\d+),\s*(\d+\.\d+),\s*.*\);') { $X_Offset = ($Matches[1] -as [decimal]) + [decimal]$X_Offset $Y_Offset = ($Matches[2] -as [decimal]) + [decimal]$Y_Offset $_ -replace 'SetWorkpieceSetupPosition\(.*\);', "SetWorkpieceSetupPosition($X_Offset, $Y_Offset, 0.0, 0.0);" } elseif ($_ -match '(?<=TypeOfProcess\.Drilling,\s*"-1",\s*"-1",\s*0,\s*-1,\s+)(-*\d+)') { $TypeOfProcessArg5 = ($Matches[1] -as [int]) + [int]'3' $_ -replace '(?<=TypeOfProcess\.Drilling,\s*"-1",\s*"-1",\s*0,\s*-1,\s+)(-*\d+)', $TypeOfProcessArg5 } else { $_ } } $Ergaenzung = @' CreateNullOperation("Wegfahrschritt", 2000.0000, 0.0000, 1); ResetPneumaticHood(); ResetApproachStrategy(); ResetRetractStrategy(); '@ $ReplacedContent[0..($ReplacedContent.Length - 6)] + $Ergaenzung + $ReplacedContent[($ReplacedContent.Length - 5)..($ReplacedContent.Length)] | Set-Content -Path $destination_file -Force Was Du mit den beiden in here-strings versteckten Try-Catch-Blöcken bezwecken möchtest, habe ich nicht verstanden. Achja ... fast hätte ich's vergessen. Wenn Du hier im Forum Code postest, formatier den doch bitte auch als Code. Sonst hast im Zweifel ungewollte Zeilenumbrüche drinne und der Code ist quasi kaputt.
  6. Jaaa ... da geht er natürlich erst hin, wenn er ein bissl Erfahrung gesammelt hat und sich die Anfänger-Hilfe durchgelesen hat und sich auch dran hält ... dann klappt das schon.
  7. Na wenn das nicht die perfekte Gelegenheit ist, sich endlich tiefer in Powershell einzuarbeiten!?!? Speziell bei Powershell finde ich die Eintstieghürde extrem niedrig. So lange es noch verfügbar ist, könntest Du Dich z.B. in der Microsoft Virtual Academy ein bissl "berieseln" lassen. Der Einstiegskurs Getting Started with Powershell ist immernoch sehr empfehlenswert - auch wenn er nicht mehr taufrisch ist. Das kostet Dich nur ein wenig Deiner Zeit, bringt Dich aber enorm vorwärts. Besonders, wenn Du vorhast, Dich noch eine Weile in Windows-basierten System-Umgebungen zu bewegen. Und wenn Du irgendwo stecken bleibst, kannst Du ja immernoch hier fragen, oder hier oder hier oder hier oder hier.
  8. Vielleicht kannst Du ja diesen Teil des Scriptes sowieso etwas "tweaken"/"pimpen". Ich bin immer skeptisch, wenn Anwender eine Wahl treffen sollen und dabei quasi völlig freie Hand haben. Ich fände es deutlich weniger fehlerträchtig, wenn sie in solch einem Fall nur die Wahl hätten, aus einer Liste von Möglichkeiten, die eine Richtige auszuwählen. Also wenn 4 oder 5 Netzlaufwerke existieren, diese als Auswahlliste anbieten und keine anderen Eingaben zulassen. Vielleicht sogar noch besser - der Pfad zur Freigabe sollte doch eigentlich bekannt sein - dann könntest Du danach suchen und das Laufwerk trennen ohne den AW behelligen zu müssen. Für das Neuverbinden der neuen Freigabe würde wieder das eben gesagte gelten - nur die sinnvollen Optionen zur Auswahl anbieten.
  9. Im Zweifel ist "net use" hier wohl sowieso die robustere Wahl. Ich würd einfach bei Laufwerksmappings immer "net use" benutzen (wenn GPOs keine Wahl sind - wäre vielleicht ne prima Gelegenheit, mal aufzuräumen und doch GPOs einzusetzen )
  10. Hmmm ... der Pfad zu diesem Forum ist " -> Start -> Windows Server Forum & IT Pro Forum -> Windows Forum — Scripting" Vielleicht solltest Du Dich in einem Forum umsehen, in dem es um Deinen Android Multimedia Player geht. Vielleicht gibt es ja auch eine andere Lösung, als eine Datei immer und immer wieder neu zu erstellen.
  11. Hmmm ... ich bin ein bissl verwirrt ... wenn die kurze Kommandozeile "blabla.exe -c UK -f kodi" Deine Playlist wunschgemäß erzeugt, brauchst Du doch nur einen Scheduled Job (eine geplante Aufgabe) anzulegen, die alle 4 Stunden den Befehl einmal ausführt .... also kein Script nötig.
  12. BItte keine Bilder von Code posten. Das ist kontraproduktiv, da man den Code im Zweifel nicht kopieren und vielleicht mal ausführen kann. Einfach den Code mittels "</>" aus der Symbolleiste einfügen! Was passiert denn, wenn Du die Argumentliste komplett von einfachen Gänsefüßchen umschlossen übergibst? Also ungefähr so: Start-Process -FilePath 'mysql.exe' -ArgumentList '--host=BlaKeks --user=root -password=Sicher -execute="Show databases"' -NoNewWindow -Wait
  13. Wenn Du zwischendurch mal ein bissl Zeit hast, kannst Du Dich ein bissl "berieseln" lassen. Der kostenlose Videokurs in der Microsoft Virtual Academy - Getting Started with Powershell ist für Einsteiger sehr empfehlenswert. (wenigstens so lange er noch verfügbar ist) Und wenn Du dann in der Schulung sitzt, hast Du schon einen kleinen Vorsprung.
  14. Das ist - bei ansatzweise aktueller Powershell - so nicht ganz richtig. Seit Powershell v3.0 gibt es für Get-ChildItem die Parameter -File und -Directory.
  15. Ich hab es schonmal gesagt und ich wiederhole es gerne nochmal: Nimm Dir doch bitte ein bissl Zeit, um Dir die Grundlagen von Powershell anzueignen. Du stellst Anfängerfragen, die in jedem (Online)-Kurs oder Buch oder Tutorial in den ersten Kapiteln behandelt werden. Es gibt zahlreiche auch meist kostenlose Quellen im Internet, die Dir einen einfachen Einstieg ermöglichen. Wenn Du der englishen Sprache mächtig bist, ist der Kurs Getting Started with Powershell in der Microsoft Virtual Academy sehr zu empfehlen. Dort bringt Dir der Erfinder der Powershell, Jeffrey Snover, die Grundlagen bei. ... und was mir noch einfällt: Poste doch bitte nicht immer Screenshots! Es genügt völlig, wenn Du den Code, den Du benutzt, postest und vielleicht Fehlermeldungen, wenn Du welche erhältst. ... oder Auszüge aus Text-Dateien, falls hilfreich. Screenshots sind immer wenig hilfreich, da man daraus keinen Code oder Text kopieren kann um es zu testen.
  16. Das hängt von Deinen Fähigkeiten ab ... aber prinzipiell ja - klar!!!! ... Ich kann also Nils nur zustimmen. Nimm Dir ein bissl Zeit und schaff Dir die Grundlagen von Powershell drauf. Ein guter Startpunkt könnte die Microsoft Virtual Academy sein. Dort der kostenlose Kurs Getting Started with Microsoft Powershell. Keine Angst, dort geht es zwar um Powershell 3.0 aber die Grundlagen passen auch sehr gut für die aktuelle Windows Version 5.1. Viel Spaß
  17. Dann lösch doch einfach die Screenshots - die helfen dann im Zweifel auch jemand anderem nicht weiter, wenn mal jemand das Gleiche oder was Ähnliches sucht. An diesem kleinen Fehler ist aber schon zu sehen, dass diese Lösung alles andere als robust und fehlertolerant ist. Du solltest also peinlich genau darauf achten, dass alle nötigen Voraussetzungen erfüllt sind oder entsprechend eine gute Fehlerbehandlung einbauen - ganz besonders, wenn Du nicht der Einzige bist, der mit diesem Code arbeiten soll.
  18. Ich dachte, wir hätten uns darauf geeinigt, dass Du aufhörst mit Batch rumzupfrimeln und endlich anfängst mit Powershell zu arbeiten? Übrigens ist es keine Schande, wenn man mal das ein oder andere selbst per Googlen rauskriegt? Ich wette, für die meisten Deiner Fragen bist Du nicht der erste, der solche Aufgaben zu lösen versucht.
  19. Brav! Definitiv. Hier ... nur zum Angeben .... Get-Content -Path .\Ergebnis.txt -OutVariable Ergebnis Get-Content -Path .\Buchstaben.txt -OutVariable Buchstaben Get-Content -Path .\Zahlen.txt -OutVariable Zahlen "$Ergebnis" -match '(\w)\s+(\d)' $Buchstaben -replace $Matches[1] | Set-Content -Path .\Buchstaben.txt -Force $Zahlen -replace $Matches[2] | Set-Content -Path .\Zahlen.txt -Force ... mehr ist für den Anfang nicht nötig ...
  20. Warum? Welche Aufgabe willst Du denn wirklich damit lösen? Ich gehe davon aus, dass Du das bereits weißt, aber ich wiederhole es einfach zur Sicherheit nochmal: .bat/.cmd/batch ist ziemlich obsolet und wurde schon vor 'ner ganzen Weile durch die viel mächtigere Powershell ersetzt - besonders wenn es um komplexere Aufgaben geht. Es gibt quasi nix, was Du mit .bat/.cmd/batch machen konntest, was Du nicht genauso oder einfacher und besser mit Powershell machen kannst. Wenn Du vorhast, noch eine Weile in "Windows-Umgebungen unterwegs zu sein", empfehle ich Dir dringend, Dich mit Powershell zu beschäftigen. Das wird Dir das Leben erleichtern und ich bin mir sicher, dass es sich für Dich auszahlen wird.
  21. Du kannst die execution policy nicht aus einem Script heraus ändern, wenn das Ausführen von Scripten noch nciht zugelassen ist ... das ist so ähnlich wie ein Henne - Ei - Problem .... Du musst die Execution policy entsprechend anpassen bevor du das Script startest.
  22. Ich hab auch schon mal von nem Kollegen gehört, der von einem anderen Kollegen gehört hat, dass er einfach mal nach sowas gesucht hat und tatsächlich auch noch fündig geworden ist ... aber ich glaube, das war nur ein Gerücht.
  23. Du wirst aber bestimmt auch verstehen, dass wir hier, ohne den Code der Macros zu kennen und ohne die genauen Umstände zu kennen, nicht wirklich viel Hilfreiches beitragen können. Das ist bestenfalls "Raten auf hohem Niveau" - sorry.
  24. Wie wäre es, den Ersteller der Datei / der Macros einzuspanne? Der sollte wissen, wie man dem Fehler auf den Grund gehen kann.
  25. Ich hab's grad mal bei mir getestet und ich fürchte, Du wirst Dir wohl doch ein klein wenig mehr Mühe machen müssen. $template = Get-ADUser -Identity <sAMAccountName> -Properties City,Department,Description,DisplayName,info,MemberOf,Office,OfficePhone,Organization New-ADUser -Instance $template -Name InstanceTest -SamAccountName InstanceTest -DisplayName InstanceTest -Path '<distinguished Name der Ziel-OU>' -UserPrincipalName InstanceTest@<domain> -Enabled $false Mit diesem Schnipsel konnte ich einen neuen Account anlegen. Es ist also empfehlenswert, einen speziellen Vorlagen-Benutzer anzulegen, bei dem auch nur die nötigsten Attribute gepflegt sind. Und es hilft, auch nur die Attribute zu extrahieren, die man wirklich kopiert haben möchte. Alles andere Eindeutige übergibt man dann beim Anlagen des neuen Benutzers. .... probier ma!
×
×
  • Neu erstellen...