Ciao!
La sintassi "__" in PowerShell... Non è una sintassi. :)
In realtà quello che hai notato è qualcosa di molto meno esotico e corrisponde al nome del campo d'istanza
value__, che contiene il valore numerico di tutte le enumerazioni all'interno del framework. Si tratta di un valore che viene recuperato automaticamente da tutte le funzioni che manipolano oggetti di questo tipo, per cui è davvero raro che si decida di renderne così esplicita l'acquisizione. Alcuni linguaggi di sviluppo, come ad esempio C#, nascondono ed impediscono addirittura allo sviluppatore di accedere direttamente a questo campo.
Detto questo, la sintassi utilizzata da Shay per accedere al valore dell'enumerazione personalmente non mi piace e credo non renda sufficiente giustizia al linguaggio di scripting della shell; quando si tratta di casting preferisco sempre utilizzare l'operatore [].
Nell'esempio che hai riportato - a dirla tutta - il cast non era nemmeno necessario e si sarebbe potuto rendere il codice più leggibile esplicitando il nome del valore dell'enumerazione, evitando al contempo di utilizzare valori "magici" (come il
3, menzionato nel codice).
Ecco come l'avrei rivista io:
function Get-FirstWednesday([int]$Month,[int]$Year){
$date = Get-Date -Year $Year -Month $Month -Day 1
while($date.DayOfWeek -ne 'Wednesday') { $date = $date.AddDays(1) }
$date
}
Nota, tra l'altro, che ho preferito restituire l'oggetto DateTime piuttosto che una rappresentazione testuale dello stesso.
Spero di avere chiarito il tuo dubbio. ;)
Ciao, 'notte