Powershell: Parameter einer Funktion soll eine Funktion aufrufen
Hallo zusammen,
mein Ziel ist es die Zeitdauer einer Prozesses zu ermitteln. Dafür ist die folgende Funktion zuständig:Leider wird die Funktion Test vor der Funktion Zeitberechnen aufgerufen. Jemand eine Idee wie man das realisieren kann?
Danke und Gruß, Sascha
mein Ziel ist es die Zeitdauer einer Prozesses zu ermitteln. Dafür ist die folgende Funktion zuständig:
function Test {
Sleep -Seconds 5
}
function Zeitberechnen($Arg){
$StartProcess = date
$Arg
$EndProcess = date
$ProcessDifference = $EndProcess - $StartProcess
Write-Host "$($ProcessDifference.Hours)h:$($ProcessDifference.Minutes)m:$($ProcessDifference.Seconds)s:$($ProcessDifference.Milliseconds)ms"
}
Zeitberechnen -Arg (Test)
Danke und Gruß, Sascha
Please also mark the comments that contributed to the solution of the article
Content-Key: 290701
Url: https://administrator.de/contentid/290701
Printed on: April 19, 2024 at 11:04 o'clock
3 Comments
Latest comment
function test {sleep(5)}
function ZeitBerechnen($arg){
write-host "Mach hier was"
iex $arg
}
ZeitBerechnen -arg "test"
iex = Alias für Invoke-Expression
Aber wozu dieser Umweg ? Du kannst die Funktion doch direkt aus der anderen Funktion aus aufrufen ...
Gruß jodel32
Zitat von @SaschaRD:
Hallo Jordel,
ich verwende die Funktion ZeitBerechnen mehrfach; dabei übergebe ich als Parameter stets eine andere Funktion die einen Prozess ausführt.
Mit Invoke-Expression funktioniert es einwandfrei.
p.s. Du kannst eine Funktion auch in einer Variablen kappseln und dann ausführen:Hallo Jordel,
ich verwende die Funktion ZeitBerechnen mehrfach; dabei übergebe ich als Parameter stets eine andere Funktion die einen Prozess ausführt.
Mit Invoke-Expression funktioniert es einwandfrei.
# Variable mit Skriptblock definieren
$test = {
sleep(5)
}
# Variable/Skriptblock ausführen
.$test
$test = {
param($arg1)
write-host $arg1
}
.$test "Hallo"