Mag 11 Geschrieben 2. August 2012 Melden 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
Dukel 460 Geschrieben 2. August 2012 Melden 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
Mag 11 Geschrieben 2. August 2012 Autor Melden 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
Mag 11 Geschrieben 3. August 2012 Autor Melden 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
Dukel 460 Geschrieben 3. August 2012 Melden Geschrieben 3. August 2012 Danke für die Rückmeldung. Zitieren
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.