Jump to content

PS - Befehl in Variable schreiben


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...