Benutzer mit den meisten Antworten
Wie Funktion an Job übergeben bzw. in Job aufrufen?

Frage
-
Hallo Zusammen,
ich versuche eine Funktion, die in meiner Profildatei steht, an einen Job zu übergeben bzw. die Funktion innerhalb des Jobs aufzurufen. Leider bekomme ich es aber nicht hin...
Was ich bisher hinbekommen habe ist folgendes:
$Func = $ExecutionContext.InvokeCommand.NewScriptBlock({ function X {...} }) Start-Job -InitializationScript $Func -Scriptblock ({...})
Allerdings wird hier die Funktion nicht von der Profildatei geladen. Wie bekomme ich es nun hin, dass ich die Funktion nicht mehrfach schreiben muss und von der Profildatei laden kann?
Folgendes funktioniert nicht:
Start-Job -InitializationScript ({ X }) -Scriptblock ({...})
X soll einfach der Name der Funktion sein (die in der Profildatei steht)...
Viele Dank für eure Hilfe
Antworten
-
Wenn es nicht unbedingt aus dem Profil herraus sein muss, würde ich ein entsprechendes Powershell Module erstellen. Als Beispiel:
test.psm1 entsprechend im persönlichen Module Pfad gespeichert (siehe $env:psmodulepath), z. B. C:\Users\<Benutzername>\Documents\WindowsPowerShell\Modules\test\test.psm1
function test { Get-Date | Out-File C:\test.txt }
Dann kannst du die Funktion wie eine ganz normale Powershell Funktion aufrufen, z. B.
Start-Job -ScriptBlock {Test}
bzw.
Start-Job -InitializationScript {Test} -ScriptBlock {xyz}
Gruß Olaf
- Bearbeitet Olaf Reitz Samstag, 16. Mai 2015 09:30
- Als Antwort markiert Mitsch1986 Montag, 18. Mai 2015 20:59
Alle Antworten
-
Wenn es nicht unbedingt aus dem Profil herraus sein muss, würde ich ein entsprechendes Powershell Module erstellen. Als Beispiel:
test.psm1 entsprechend im persönlichen Module Pfad gespeichert (siehe $env:psmodulepath), z. B. C:\Users\<Benutzername>\Documents\WindowsPowerShell\Modules\test\test.psm1
function test { Get-Date | Out-File C:\test.txt }
Dann kannst du die Funktion wie eine ganz normale Powershell Funktion aufrufen, z. B.
Start-Job -ScriptBlock {Test}
bzw.
Start-Job -InitializationScript {Test} -ScriptBlock {xyz}
Gruß Olaf
- Bearbeitet Olaf Reitz Samstag, 16. Mai 2015 09:30
- Als Antwort markiert Mitsch1986 Montag, 18. Mai 2015 20:59
-
Erstmal vielen Dank für die Hilfe.
Ich hätte zwar gerne alles zentral an einer stelle aber das bringt mich definitiv schon weiter. Was würde denn dagegen sprechen meine anderen Funktionen auch als Modul auszulagern? Dann hätte ich ja wieder alles an einer Stelle. Sorry für die "Anfängerfrage", aber ich bin noch im Lernprozess, beschäftige mich erst seit kurzem mit Powershell.
Vielen Dank schonmal
-
Generell würde nichts dagegen sprechen, für mich ist das Powershell Profil auch eher eine Art Logon/Startup Skript, in welchem ich die Sachen definiere, welche beim Start einer Powershell Sitzung vorgenommen werden sollen, z. B. das Aussehen oder das Laden bestimmter Module.
Gruß Olaf