Mag 11 Geschrieben 2. August 2012 Melden Teilen Geschrieben 2. August 2012 Schönen guten Morgen, ich hab da ein Anliegen und ich hoffe, ihr könnt mir helfen. Ich habe ein altes batch script, dass ich nun durch powershell ablösen möchte. Dort fand ich es früher ganz angenehm, dass ich in den 1. Zeilen folgendes griffbereit zum späteren Anpassen hatte: set mailokay = c:\tools\blat.exe -server ....-to user1 ... set mailerror = c:\tools\blat.exe -server ....-to user1, user2.... Im Code weiter unten konnte ich dann einfach darauf verweisen. mit %mailerror% usw. Das ganze konnte ich nun Abbilden in Powershell wie folgt: $mailokay = { Send-MailMessage ...-Attechment $logfile ....} Und rufe es dann später auf mit $mailokay.invoke() Das konnte ich gestern im Web finden. Nun möchte ich das gleiche hiermit machen, aber das klappt nicht. $logging = {out-file -filepath $log -append } sodass ich später bei jeder Ausgabe eines Fehlertextes, mir den in die logdatei schreiben lassen kann in der Art: echo "Dies ginbg nun mal in die Hose" | $logging.invoke() Wenn ich out-file an die stelle schreibe gehts, ich wollte mir das aber gerne zentral erhalten, um es bei einer Änderung nur einmal tun zu müssen. Fehlermeldung besagt "Ausdrücke sind nur als erstes Element einer Pipeline zulässig." Muss ich das anders lösen? Vielen Dank schonmal. Grüße Mag Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 2. August 2012 Melden Teilen Geschrieben 2. August 2012 Ja. das geht etwas anderst: $script = {out-file -filepath $log -append } $scriptblock = [scriptblock]::Create($script) Invoke-Command -ScriptBlock $scriptblock Wenn du nicht jedes mal 3 Zeilen schreiben willst kannst du das in eine Funktion einbinden. Btw. für Logging kannst du auch Apache log4net: Home unter Powershell nutzen. Zitieren Link zu diesem Kommentar
Mag 11 Geschrieben 2. August 2012 Autor Melden Teilen Geschrieben 2. August 2012 Hi Dukel, vielen Dank für die fixe Antwort. Hmmm, okay. Mit Funktionen hab ich gestern das erste mal angefangen, ich werde das mir dann mal anschauen. Das besagte Script hat nun auch ein Paar Funktionen, aber wenn ich eine neue funktion aufrufe, verlässt er mir dann nicht den abarbeitungsweg und springt nur zu der out-file funktion?! Scheint aber sehr aufwendig zu sein, für nur das out-file ... Aber danke, ich werde mir das mal zu Gemüte führen. Der Tip mit dem Apache muss ich später mal genauer schauen, merci! Grüße Mag Zitieren Link zu diesem Kommentar
Mag 11 Geschrieben 3. August 2012 Autor Melden Teilen Geschrieben 3. August 2012 Update: Hab das mit der Funktion falsch verstanden. Ich dachte ich müsste jedesmal die 3 Zeilen hinter dem echo "Fehlermeldung". War natürlich quatsch. Habs nun testen können, klappt wunderbar. Danke ! $logpath = "c:\temp\log.txt" $script = {Out-File $logpath -append } $scriptblock = [scriptblock]::Create($script) 'Ganz viele Fehler und noch mehr' | Invoke-Command -ScriptBlock $scriptblock Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 3. August 2012 Melden Teilen Geschrieben 3. August 2012 Danke für die Rückmeldung. 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.