Ich beschäftige mich ganz neu mit Powershell und habe eine grundsätzliche Frage zum Aufruf von Powershell Scripts aus der MS-Aufgabenplanung bzw. aus einem Kommandofenster, jedenfalls nicht aus dem Powershell-Commando Fenster oder der ISE.
Ich benutze folgende Varianten:
param
( [string] $InputPath, [string] $Filter, [string] $OutputPath, [int] $MinAge, [string] $Mode )
function Main-Function ### diese function wird von außerhalb aufgerufen
{
... code von Main-Function
...
function Inner-Function1
{
param
(
[Parameter(Mandatory=$true, ValueFromPipeline=$true)]
[string]
$QNumber
)
}
function Inner-Function2()
{
}
}
Main-Function -InputPath $InputPath -Filter $Filter -OutputPath $OutputPath -MinAge $MinAge -Mode $Mode } ##am Ende des Scripts
----
was ist der grundsätzlich Unterschied dazu, wenn man die Aufrufparamter neben dem Function-Name schreibt:
function Main-Function ( [string] $InputPath, [string] $Filter, [string] $OutputPath, [int] $MinAge , [string] $Mode )
{
}
Main-Function -InputPath $InputPath -Filter $Filter -OutputPath $OutputPath -MinAge $MinAge -Mode $Mode } ##am Ende des Scripts
Muss am Ende des Scripts die Aufruf-Zeile mit dem Function-Name und Parametern stehen?
---
Aufruf des Scripts aus der Aufgabenplanung
powershell.exe -noprofile -ExecutionPolicy Bypass -File <Path>\Main-Function.ps1 Param1 Param2 Param3 Param4 Param5
Nachdem mehrere Verzeichnisse verarbeitet werden, ist es State of the Art die einzelnen Powershell.exe Aufrufe in einer *.BAT File zusammenzufassen und in der Aufgabenplanung mit einem Aufruf der *.BAT File zeitgesteuert aufzurufen - Oder ist das ein Kunstfehler? Alternative wäre, mehrere Job-Einträge in der Aufgabenplanung des gleichen Scripts mit unterschiedlichen Parametern.
Siegmund Sonntag