stefan4711 3 Geschrieben 12. März 2021 Autor Melden Teilen Geschrieben 12. März 2021 Wow, na da hat sich doch mal jemand Gedanken gemacht, dass man diese, von mir gestellte Aufgabe in einen PS Einzeiler bekommt sehe ich zwar noch nicht, werde das Script von Dir @BOfH_666 am Montag mal testen, ich perönlich finde Powershel jedenfalls um einiges kryptischer, aber ist wohl Gewöhnungssache, bin halt eher für schnelle funktionierende Lösungen, als für simple Aufgabenstellungen gleich ne andere Sprache erlernen zu müssen. Aber ist wohl Geschmackssache, ich jedenfalls habe bei PowershellScripten oftmals festgestellt, dass auf verschiednen Rechnern unterschiedliche Grundvorrausetzungen bzgl. bestimmter Repostories etc. vorhanden sind, gibte es zwar teilweise bei Batch auch, zumindest nicht ganz so arg. Schönes Wochende noch und Danke Zitat foreach($i in (2..254)){[PSCustomObject]@{IP="192.168.178.$i";File=If(Test-Connection "192.168.178.$i" -Cou 1 -Q){Test-Path "\\192.168.178.$i\c$\Program Files (x86)\Prg\aktvers.txt"}else{'n/a'}}} Dieser Einzeiler ist ja wirklich beindruckend, er macht das selbe wie das Script weiter obben, nur leider kann mit dem Ergebnis keiner was anfangen, oder soll ich die Ip Adressen durchzählen um die IP zu finden, auf dem die Datei existiert, und mehr tut diesers Script ja nicht. Ich wollte im Prinzip eine CSV als Ergebnis, mit 4 Spalten, IP,Hostname, Hoststaus und die ausgelesen Nummer aus der Datei. Mit einer solchen Datei kann niemand etwas anfangen, oder doch? IP File -- ---- 192.168.178.2 n/a 192.168.178.3 n/a 192.168.178.4 n/a 192.168.178.5 n/a 192.168.178.6 n/a 192.168.178.7 n/a 192.168.178.8 n/a 192.168.178.9 n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... n/a 192.168.17... F... 192.168.17... True 192.168.17... F... 192.168.17... n/a Gruss Stefan Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 12. März 2021 Melden Teilen Geschrieben 12. März 2021 (bearbeitet) Die Faszination für Einzeiler hab ich irgendwie noch nie verstanden. vor 6 Stunden schrieb stefan4711: finde Powershel jedenfalls um einiges kryptischer, aber ist wohl Gewöhnungssache hmmmm ... Du meinst also, dass sowas hier eingängiger und leichter verständlich ist? ping -n 1 %NET%.%%f | findstr /i "TTL" >nul 2>&1 && ( Hmmm .... da werden wir wohl unterschiedlicher Meinung bleiben. vor 6 Stunden schrieb stefan4711: bin halt eher für schnelle funktionierende Lösungen, als für simple Aufgabenstellungen gleich ne andere Sprache erlernen zu müssen Aber CMD/Batch musstest Du doch auch irgendwann mal gelernt haben ... oder konntest Du das einfach irgendwann einfach so? vor 6 Stunden schrieb stefan4711: festgestellt, dass auf verschiednen Rechnern unterschiedliche Grundvorrausetzungen bzgl. bestimmter Repostories etc. vorhanden sind Das kommt auf Deine Aufgabe drauf an. Wenn Du z.B. ein AD abfragen möchtest, ist es mit einem entsprechenden Modul einfacher. Dafür gibt es aber auch Lösungen. vor 6 Stunden schrieb stefan4711: nur leider kann mit dem Ergebnis keiner was anfangen, oder soll ich die Ip Adressen durchzählen um die IP zu finden Hmmm ... Du kannst mit dem Ergebnis nix anfangen. ... Wenn man CMD/Batch gewöhnt ist - quasi eine Hohepriesterin der kryptischen Eigenheiten - wird man wohl Powershell auch die ein oder andere kleine Schrulligkeit durchgehen lassen müssen, oder? Um die Kommandozeile zu verkürzen, habe ich die Eigenschaftsnamen (IP, File) sehr kurz gewählt. Und Powershell ist immer bemüht Platz zu sparen, also schneidet es ab einer gewissen Länge, die ausgegebenen Werte auf der Konsole ab. Aber eben auch nur auf der Konsole. Die eigentlichen Werte sind noch da. Und auch dagegen ist natürlich ein Kraut gewachsen. $a=foreach($i in (2..254)){[PSCustomObject]@{IP="192.168.178.$i";File=If(Test-Connection "192.168.178.$i" -Cou 1 -Q){Test-Path "\\192.168.178.$i\c$\Program Files (x86)\Prg\aktvers.txt"}else{'n/a'}}};$a|ft -a bearbeitet 12. März 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
stefan4711 3 Geschrieben 12. März 2021 Autor Melden Teilen Geschrieben 12. März 2021 (bearbeitet) Hallo, Zitat ping -n 1 %NET%.%%f | findstr /i "TTL" >nul 2>&1 && ( von daher sagte ich ja auch Gewöhnungsache, am Anfang war das für mich auch kryptisch, mit dieser Zeile teste ich, ob ein PC vorhanden ist, indem ich einenPing ausführe und nach em String TTL, der bei einem erfolgreichen Ping immer unten steht, suchen lasse. Da mich die Ausgabe nicht interessiert, schicke ich diese mit >nul ins Nirvana, wie gesagt Gewöhnungssache. Zitat Aber CMD/Batch musstest Du doch auch irgendwann mal gelernt haben ... oder konntest Du das einfach irgendwann einfach so Ne natürlich nicht, und von könne will ich ja auch gar nicht reden, zumindest führt eine Scriptsprache mit der man sich wenigstens zu 10% auskenntimmer noch eher zum Ziel, als eine Scriptsprache bei der man sich zu 0% auskennt, insb. wenn es sich um eine einfach strukturierte Aufgabe handelt. Zitat $a=foreach($i in (2..254)){[PSCustomObject]@{IP="192.168.1 Werde ich ausprobieren, danke für den Hinweis. (An welcher Stelle mus ich das denn einfügen?Trotzdem habe ich aber immer mehr das Gefühl, dass ich mich bei der Aufgabenstellung wohl nicht ganz verständlich ausgedrückt hatte, ich möchte eine CSV Liste erhalten, die ggf. auch für einen Entscheidungsträger in lesbarer Form zur Verfügung stellen. danke und lg stefan bearbeitet 12. März 2021 von stefan4711 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 12. März 2021 Melden Teilen Geschrieben 12. März 2021 (bearbeitet) vor 32 Minuten schrieb stefan4711: (An welcher Stelle mus ich das denn einfügen? Wieso einfügen? Entweder Du nimmst das ausführliche Script, oder die komplette Zeile, die ich zuletzt gepostet hatte. Zitat ich möchte eine CSV Liste erhalten, die ggf. auch für einen Entscheidungsträger in lesbarer Form zur Verfügung stellen. Das hast Du wohl vergessen zu erwähnen. Das macht mich dann aber schon ein wenig stutzig. Welche Entscheidung wird denn von wem auf Grund dieser Information getroffen? Der letzte Einzeiler, den ich gepostet hatte, erzeugt eine Variable "$a", die Liste mit den Informationen enthält, welche Rechner erreichbar waren und welche dann auch noch die Datei hatten. Mit $a | Where-Object -Property File -EQ -Value $true filterst Du alle Rechner aus, die nicht erreichbar waren oder die Datei nicht hatten. Mit $a | Where-Object -Property File -EQ -Value $false könntest Du alles rausfiltern, was nicht erreichbar war und was die Datei hatte und mit $a | Where-Object -Property File -EQ -Value 'n/a' gibst Du nur noch die Adressen aus, die nicht erreichbar waren. Wenn Du unbedingt willst, kannst Du die Ausgabe aber natürlich noch mit jeder Menge Prosa anreichern, was den Informationsgehalt aber auch nicht wirklich erhöht. Edit: Achja ... ganz vergessen ... mit $a | Export-Csv -Path D:\sample\liste.csv -Delimiter ';' -NoTypeInformation exportierst Du die Liste in eine CSV-Datei mit dem Trennzeichen "Semikolon". Ein deutsches Excel erkennt diese also auch als CSV und zeigt sie ansatzweise vernünftig an. bearbeitet 12. März 2021 von BOfH_666 Zitieren Link zu diesem Kommentar
stefan4711 3 Geschrieben 12. März 2021 Autor Melden Teilen Geschrieben 12. März 2021 (bearbeitet) Zitat ich möchte eine CSV Liste erhalten, die ggf. auch für einen Entscheidungsträger in lesbarer Form zur Verfügung stellen. Weil es so oder so, ich habe natürlich beides schon ausprobiert, sich an der Ausgabe nichts ändert, ab der 10 Position ,in etwa, seh ich nur noch Punkte, das ist nicht die gewünschte Ausgabe, ich habe keine Glaskugel hier. Zitat ich möchte eine CSV Liste erhalten, die ggf. auch für einen Entscheidungsträger in lesbarer Form zur Verfügung stellen. Nein hatte ich bereits im Anfangspost erwähnt und dann noch 2 weitere Male;) Aber das passiert mir oft, dass man was bei mir überließt, wenn man mir das in der Umkehrung ebenso nachsieht, ist alles ok;) menschlich Zitat wenn er den jweiligen Hostnamen mittels nslookup mit angeben würde und dies in eine CSV schreibt, gibt es da eine Möglichkeit? Vielen Dank i.V. Den Code werde ich morgen noch mal in Ruhe ausprobieren, ich bedanke mich schon mal für den hilfreichen Ansatz,, bloß die ... müssen auf jeden Fall weg, ob Scnörkel oder nicht, ich will die Information haben, und ... hat keinen Infogehalt für mich. Nennt mich b***d, aber da find ich die gute alte Batch immer noch einleuchtender, auch, wenn ich oft genug selber schon drauf geschimpft habe;) Gruß Stefan bearbeitet 12. März 2021 von stefan4711 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 13. März 2021 Melden Teilen Geschrieben 13. März 2021 vor 4 Stunden schrieb stefan4711: ab der 10 Position ,in etwa, seh ich nur noch Punkte, Das ist mit der letzten Kommandozeile, die ich gepostet habe - die mit dem "$a=foreach..." vorne dran, technisch unmöglich. Natürlich macht es nur Sinn, wenn Du die Grundlagen von Powershell verstanden hast und nicht bei jeder Kleinigkeit andere fragen musst. Das ist genau wie bei anderen komplexen Technologien. Sie erschließen sich nicht, nachdem man ein paar Zeilen Code von anderen Leute kopiert und ausprobiert hat. Ein bissl mehr gehört eben schon dazu. vor 4 Stunden schrieb stefan4711: ich möchte eine CSV Liste erhalten stimmt ... na das Prinzip hab ich ja dann auch schon erklärt. Wenn das funktioniert, können wir ja nochmal über die genaue "Form" sprechen. Oder vielleicht kommst Du ja schon selber drauf. Ich hatte ja schon erklärt, welche Ausgabe bei welchen Bedingungen erzeugt werden. Das kann man natürlich den eigenen Anforderungen anpassen. vor 4 Stunden schrieb stefan4711: ... bloß die ... müssen auf jeden Fall weg, Wie schon mehrfach erklärt ... den richtigen Code nehmen, dann klappt das. Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 13. März 2021 Melden Teilen Geschrieben 13. März 2021 Am 11.3.2021 um 21:07 schrieb stefan4711: stuck was? egal, bestimmt ne Floskel, wie ach wie furchbar So war das nicht gemeint - ich spreche fließend Batch (inkl delayedExpansion und aller Variationen von "for") und VBScript. Ich hab auch mit |, & und > mehr Erfahrung als die meisten (eins davon reicht übrigens, doppelte braucht man nicht). Nur verstehe ich nicht, warum sich noch jemand in aufwändige Batch-Konstrukte reinfuchst, wenn es in Powershell so viel einfacher ist. "Code von anderen" trägt zu meinen Skripts übrigens sicher mehr als 30% bei - die meisten Standardprobleme hat ja schon mal jemand gelöst, ich erfinde nicht gerne neue Räder 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.