A PowerShell szkriptjeinket gyakran szeretnénk nem mi magunk futtatni, hanem a háttérben a gép által indítani, akár logon szkript, akár ütemezett feladat formájában. Ilyenkor nem a szkriptünket hívjuk meg közvetlenül, hanem a powershell.exe programot, és ennek paraméterként adjuk át a szkriptünket.
Ilyenkor persze általában nem látjuk, ha egy nem annyira jól megírt szkriptünk hibára fut, de még kellemetlen helyzetbe kerülhetünk, ha a szkriptünk egy hiányzó kötelező paraméter megadására vagy egy ottfelejtett adatbekérésre vár. Ennél már a hibára futás is jobb, hiszen legalább nem ragad be a powershell.exe folyamat.
Ennek biztosítására találták ki a –noninteractive kapcsolót a powershell.exe futtatásához. Ilyenkor minden olyan esetben, amikor a felhasználónak kellene beavatkozni egy hibajelzést kapunk és megszakad a futtatás. Nézzünk erre néhány példát:
[1] PS C:\> powershell.exe -noninteractive
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
[1] PS C:\> Read-Host "kakukk"
Read-Host :
Windows PowerShell is in NonInteractive mode. Read and Prompt func
tionality is
not available.
At line:1
char:10
+ Read-Host
<<<< "kakukk"
+ CategoryInfo : InvalidOperation: (:) [Read-Host],
PSInvalidOpe
rationException
+ FullyQualifiedErrorId :
InvalidOperation,Microsoft.PowerShell.Commands.
ReadHostCommand
[2] PS C:\> Get-EventLog
Get-EventLog
: Cannot process command because of one or more missing mandatory
parameters: LogName.
At line:1
char:13
+
Get-EventLog <<<<
+ CategoryInfo : InvalidArgument: (:)
[Get-EventLog], ParameterB
indingException
+ FullyQualifiedErrorId :
MissingMandatoryParameter,Microsoft.PowerShell.
Commands.GetEventLogCommand
[3] PS C:\> exit
[2] PS C:\> Get-EventLog
cmdlet Get-EventLog at command pipeline position 1
Supply values for the following parameters:
LogName:
Ha a hibafolyamot kiirányítjuk egy fájlba, akkor ráadásul még ezeket a hibákat meg is tudjuk nézni utólag, így javíthatjuk a szkriptünket.