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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 290701
Url: https://administrator.de/contentid/290701
Ausgedruckt am: 08.11.2024 um 09:11 Uhr
3 Kommentare
Neuester Kommentar
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"