05/09/2008

Il blocco if

A cura di Efran Cobisi
Tag: Sintassi


Il blocco if di Windows PowerShell consente di eseguire un determinato set di comandi nel caso in cui una determinata condizione sia soddisfatta; è il più semplice dei blocchi condizionali ed è presente nella quasi totalità dei linguaggi di sviluppo.

La sintassi di questo elemento prevede la definizione obbligatoria della condizione da verificare e dell'insieme di comandi da eseguire nel caso in cui questa sia soddisfatta (il suo valore, perciò, deve corrispondere a $true).

Vediamo dunque un semplice script di esempio, che visualizza una scritta se il giorno corrente è lunedì:

if ([DateTime]::Now.DayOfWeek -eq 'Monday')
{
    "Oggi è lunedì."
}

Come mostra lo schema seguente, inoltre, il blocco if supporta altri elementi, opzionali, che lo rendono più completo ed utile.

Sintassi blocco if

L'elemento else introduce un blocco di comandi eseguito nel caso in cui la condizione principale non sia soddisfatta.
Vediamo un ipotetico proseguimento dell'esempio precedente:

if ([DateTime]::Now.DayOfWeek -eq 'Monday')
{
    "Oggi è lunedì."
}
else
{
    "Domani non è martedì."
}

Il comando if, inoltre, supporta la presenza di più blocchi elseif, eseguiti qualora la condizione principale non sia soddisfatta ma lo sia, invece, una condizione secondaria specificata nell'elemento stesso.

L'esempio precedente potrebbe, dunque, essere completato come segue:

if ([DateTime]::Now.DayOfWeek -eq 'Monday')
{
    "Oggi è lunedì."
}
elseif ([DateTime]::Now.DayOfWeek -eq 'Saturday')
{
    "Buon weekend!"
}
elseif ([DateTime]::Now.DayOfWeek -eq 'Sunday')
{
    "Ancora un po' di pacchia, domani si ricomincia!"
}
else
{
    "Domani non sarà martedì."
}

Commenti


30/09/2010 16.59
mind_wipe: Controllo Servizio e ... Trigger?
Ciao,

Premetto che sono un newbie quindi perdona le imprecisioni e le banalita'.

Vorrei usare uno scriptino per controllare lo stato di un servizio su una macchina remota e in base al suo "STATE" fermarlo o startarlo. Credo che utilizzare il blocco if sia necessario ma non saprei come procedere.

Riesco cioe' a interrogare via wmi lo stato del servizio:

PS C:\Windows\system32> Get-WmiObject win32_service -computername NOMEPC | where-object {$_.name -eq "wuauserv"}


ExitCode : 0
Name : wuauserv
ProcessId : 792
StartMode : Auto
State : Running
Status : OK

ma poi come posso fare a "triggerarlo" ? in questo esempio vorrei che se l'output contemplasse lo state in "stopped" innescasse un comando tipo net start "wuauserv" ?

Grazie !!!

MW
30/09/2010 17.25
efran.cobisi: @mind_wipe: per piacere, posta la domanda nel forum
Ciao mind_wipe:

ti consiglio di usare il nostro forum per postare questo tipo di domande. Lì lo scambio di messaggi è molto più agevole e troverai sicuramente qualcuno disposto ad aiutarti. ;)

Ciao!


EmailVerify.NET is a Microsoft .NET software component that validates e-mail addresses. valid email