Jump to content

BOfH_666

Expert Member
  • Gesamte Inhalte

    2.091
  • Registriert seit

  • Letzter Besuch

Alle erstellten Inhalte von BOfH_666

  1. Ich habe Deine Logik nicht ganz verstanden, aber hier einfach ein paar generelle Hinweise. Wenn Deine Daten quasi CSV-Daten sind, machst Du Dir das Leben einfacher, wenn Du sie auch so behandelst. $SourceData = @' 0200 A510158 Hauptsatz1 0300 A510158 Nebensatz1 0300 A510158 Nebensatz2 '@ | ConvertFrom-Csv -Header STZ,Index,Auftrag -Delimiter ' ' $SourceData $SourceData | Group-Object -Property STZ $SourceData | Group-Object -Property Auftrag Ich hab jetzt einfach mal das Leerzeichen als Trenner angenommen. Wenn die Daten als "Tabelle" vorliegen, dann hast Du mit Powershell vielfältige Möglichkeiten mit den Daten zu "jonglieren". Hier oben z.B. hab ich die Daten einfach mal nach verschiedenen Attributen gruppiert ... Fragen? Fragen!
  2. Bei "Business"-Desktops kann man sowas noch einstellen, aber er hat "nur so eine Shuttle-Box". ... obwohl ich gar nicht weiß, was ich mir darunter vorzustellen hab.
  3. Manche PC-BIOSe konnte man (früher) mit einer automatischen Einschaltzeit konfigurieren. Ausgeschaltet bekommst Du die Kiste mit der Aufgabenplanung (wenn's ein Windows-PC ist).
  4. Die Technik nennt sich Storage Spaces Direct. Aber ob das für Deinen Einsatzzweck geeignet ist, kann ich nicht sagen.
  5. Dazu würdest Du einen eigenen Internetzugang benötigen.
  6. da gibt's aber auch andere Stimmen auf dem 36C3 ...
  7. ... kommt sogar noch besser: "Auch ein ausgewiesener Sicherheitsforscher klickt mal daneben .... " 36C3: Wenn der Ransomware-Support plötzlich Russisch spricht
  8. Ich hab das Gefühl, dass Du irgendwie bei dem Begriff unsicher bist ... vielleicht also einfach mal als Begriffs-Erklärung: Ein Member-Server ist einfach ein Server, der in die Domäne "ge-joint" wurde. Also Member der Domäne ist.
  9. 's war eher als Tipp an didde1408 gedacht. Ich wollte damit nix implizieren.
  10. Eventuell eine gute Gelegenheit, über einen automatisierten BUILD-Prozess nachzudenken. Dann kannst Du's ganz beruhigt wie bei einem Autoreifen angehen. Wenn einer "verschlissen" oder "platt" ist - einfach einen neuen aufziehen.
  11. Eine weitere Möglichkeit wäre, zu akzeptieren, dass die IT-/Online-Welt englisch ist und man um den ein oder anderen englischen Begriff nicht herumkommt, bzw. lernen kann, mit ein paar englischen Begriffen zu leben.
  12. Ohne großkotzig klingen zu wollen, aber eine 500GB-SSD kostet im Moment ca 60 €uro. Vielleicht kann man sich überlegen, die Austattung zu modernisieren und auf aktuelle Technik umzustellen. RAM-Disk ist irgendwie so 90-er!? ... oder so "letztes Jahrtausend" ...
  13. Oh ... Du hast also ein Problem, nur ein ganz anderes, als Du uns hier beschrieben hast ... hmmmm
  14. Eine kleine Beschleunigung ohne großen Aufwand könntest Du bereits dadurch erreichen, jeden Server nicht 2 mal anzupingen, sondern nur einmal. $Result = Foreach ($VMName in $BI_VMs.Name) { [PSCustomObject]@{ Name = $VMName Online = Test-Connection -Quiet -Count 1 -ComputerName $VMName } } $Result
  15. hhhmmm .... nur aus Neugier: Warum?
  16. Du markierst den Code den Du in einen Beitrag eingefügt hast und klickst dann einfach in der Formatierungsleiste auf </> . AWK? Dieses AWK -> https://de.wikipedia.org/wiki/Awk ??
  17. Hmmm ... ich empfehle Dir dringeds, DIr die Grundlagen von Powershell anzueignen. Solltest Du vorhaben, beruflich noch ne Weile in Windows-Umgebungen unterwegs zu sein, lohnt sich das für die Zukunft auf jeden Fall für Dich. Hier im Forum bitte Code als Code formatieren. Und bitte in Skripten und in Foren keine Aliasse verwenden. Hier also die nächste Literaturempfehlung: The Unofficial PowerShell Best Practices and Style Guide. Wenn Du die Hilfe für Export-Csv gelesen hättest, hättest Du gewusst, dass dieses cmdlet keinen Parameter -Skip hat. $in_file = "D:\Daten\qsys\Powershell\NC_PM\NC_PM.csv" $out_file = "D:\Daten\qsys\Powershell\NC_PM\NC_PM_OUT.csv" $Header = @( 'szIdentNr', 'szGeraeteNr', 'sGrpNr', 'szBezeichnung', 'sKlassifizierung', 'sPruefOrtBez', 'dtPruefTermin', 'dtLastPruefTermin', 'dwMaxMessungen' ) Import-Csv $in_file -Delimiter ';' -Header $Header | Select-Object -Property 'szIdentNr', 'szGeraeteNr', 'sGrpNr', 'szBezeichnung', 'sKlassifizierung', 'sPruefOrtBez', @{ Name = 'dtPruefTermin'; Expression = { (Get-Date $_.dtPruefTermin -Format 'yyyyMMdd') } }, 'dtLastPruefTermin', @{ Name = 'dwMaxMessungen'; Expression = { 'DefaultWert' } } | ConvertTo-Csv -NoTypeInformation -Delimiter ';' | ForEach-Object { $_ -replace '"' } | Select-Object -Skip 1 | Out-File $out_file
  18. Super. Wie hast Du's gemacht? Aha. Hmmm ... das ist ja nicht gerade sehr robust. Ich würd mich wohl mit dem Anbieter der Schnittstelle auseinandersetzen wollen. Warum toleriert man denn so eine Gängelei? Wo? Da ich Deinen Bildschirm nicht sehen und nicht weiß, was und wie Du's gemacht hast, musst Du jetzt mir helfen, Dir zu helfen. Und Du hilfst damit vielleicht auch anderen, die ein ähnliches Problem haben. Also zeig mal Deinen Code, wie Du ihn jetzt hast.
  19. Das mit dem "Trenner" ist einfach und das bekommst Du allein raus, wenn Du Dir einfach die Hilfe für Export-Csv anguckst. Wenn Du die Header weglassen willst und auch noch die Anführungszeichen, musst Du halt tricksen. standardkonformes CSV enthält nun mal beides und alle Tools, die standardkonformes CSV korrekt verarbeiten, können damit umgehen. Wofür brauchst Du die Daten denn so komisch? Ja, aber dann musst Du Dich eben um die entsprechende Formatierung selbst kümmern. Ich würde empfehlen, so standardkonform zu arbeiten wie es irgend geht. Alles andere ist üblicherweise aufwändiger, fehlerträchtiger und schwerer zu warten und anzupassen, falls mal nötig. Wenn Du's doch unbedingt so machen willst, schau Dir mal ConvertTo-Csv an.
  20. Ich finde, Du hast ein Talent zu verwirren ... was soll das mit dem "Get-Process | Select ..." und so weiter? Hast Du da versehentlich beim Kopieren das Falsche markiert? Hier ... so sollte's klappen $in_file = "D:\Daten\qsys\Powershell\NC_PM\NC_PM.csv" $out_file = "D:\Daten\qsys\Powershell\NC_PM\NC_PM_OUT.csv" $Header = @( 'szIdentNr', 'szGeraeteNr', 'sGrpNr', 'szBezeichnung', 'sKlassifizierung', 'sPruefOrtBez', 'dtPruefTermin', 'dtLastPruefTermin', 'dwMaxMessungen' ) Import-Csv $in_file -Delimiter ';' -Header $Header | Select-Object -Property 'szIdentNr', 'szGeraeteNr', 'sGrpNr', 'szBezeichnung', 'sKlassifizierung', 'sPruefOrtBez', @{ Name = 'dtPruefTermin'; Expression = { (Get-Date $_.dtPruefTermin -Format 'yyyyMMdd')} }, 'dtLastPruefTermin', @{ Name = 'dwMaxMessungen'; Expression = {'DefaultWert'} }| Export-CSV -Path $out_file -NoTypeInformation Ergänzung: Du solltest jeweils für die cmdlets, die Du benutzt, die Hilfe lesen - komplett und inklusive der Beispiele. Die Technik, die in diesem Code-Snippet benutzt wird nennt sich "calculated Properties". Einen ersten kleinen Hinweis darauf findest Du in der Hilfe für das cmdlet Select-Object im Beispiel #10. Dabei übergibst Du statt eines einfachen Strings, eine Hash-Table mit einem Stück Code, der die Property errechnet.
  21. ... wenn ich das etwas korrigieren/präzisieren darf ... Understanding the Six PowerShell Profiles ... (mit VSCode kommt quasi noch eins dazu )
  22. BOfH_666

    IMAP Konto

    ... und vielleicht beschreibst Du auch gleich mit, warum Du diese Frage im Scripting-Forum stellst.
  23. Du hast die Funktionsdefinition in das Profil für die Powershell_ISE eingefügt. Führst Du das Script denn in der ISE aus? Wenn nicht, dann ist die Funktionsdefinition dort überflüssig. Wenn Du die Funktion nicht noch irgendwo anders brauchst, ist es vermutlich direkt im Skript am Besten aufgehoben. Oder Du speicherst den Code in einem separaten Skript. Nehmen wir mal an, Du nennst die Datei mit der Funktionsdefinition genauso wie die Funktion und speicherst sie im gleichen Verzeichnis wie das eigentliche Skript. Dann kannst Du am Anfang des eigentlichen Skriptes, das Skript mit der Funktionsdefinition mittels "dot-Sourcing" importieren - also so ungefähr: . .\Start-ProcessWithTimeout.ps1 $ToolPath = 'C:\Users\Alex\Desktop\Tools\pdftest\pdfinfo.exe' $DefectFilesPath = 'N:\CutFolders' Get-ChildItem -Path 'N:\rec\Verloren\Dokumente\pdf' -Filter *.pdf | ForEach-Object{ $PDFFilePath = $PSItem.FullName # hier wird der komplette Pfad zur PDF-Datei innerhalb der switch-Anweisung nutzbar gemacht $Result = Start-ProcessWithTimeout -FilePath $ToolPath -ArgumentList $PSItem.FullName # -Timeout 20 # anpassen falls nötig If($Result.State -eq 'Completed' -and $Result.HasMoreData){ switch ($Result.Result) { {$Result.Result -match 'Usage:\s+pdfinfo'} { "PDF-Tool SyntaxError - $PDFFilePath"; break } {$Result.Result -match 'find\s+trailer\s+dictionary'} { Move-Item -Path $PDFFilePath -Destination $DefectFilesPath; break } {$Result.Result -match 'PDF\s+version:'} { "PDF file is valid - $PDFFilePath"; break } } } Else{ "PDF-Tool stuck ... - $PDFFilePath" } } Wenn Du das Skript mit der Funktionsdefinition irgendwo anders speicherst, solltest Du den kompletten Pfad zu diesem Skript angeben, statt nur ".\". Hier die Hilfe für about_Scripts. Lies Dir das am Besten mal alles durch und achte besonders auf das Kapitel "SCRIPT SCOPE AND DOT SOURCING".
  24. Hmmm ... also ich bin unschlüssig, ob und wie ich Dir antworten kann, weil ich nicht weiß, worauf sich Deine Antwort bezieht und was Du genau meinst. Meinst Du Send-MailMessage? Wenn "ja", kann ich Dir nur zustimmen. Ich gehe jetzt im Weiteren einfach mal davon aus, dass Du Send-MailMessage meintest ... Du kannst mehrere Empfänger einfach als Komma-separierte Liste übergeben, so wie das in Beispiel 2 der Online-Hilfe zu sehen ist. Send-MailMessage ist nicht für Massenmailings gemacht. Wenn Du Mails an hunderte Empfänger gleichzeitig schicken möchtest, gibt es vermutlich geeignetere Tools. Um wieviele Empfänger geht es denn? Um Deinen Code übersichtlicher zu gestallten, gibt es zahlreiche Möglichkeiten der Formatierung. Eine davon ist z.B. Splatting. Klar ... mit Import-Csv kannst Du die Daten einlesen und dann nach Belieben weiterverarbeiten. Der Code-Schnipsel, den Du gepostest hast ... hast Du dazu ne Frage? ... oder wofür ist der da?
×
×
  • Neu erstellen...