Sto facendo un programma per insegnare a PowerShell i colleghi non programmatori. Il primo gruppo non pilota con cui farò il corso sarà un team che distribuisce e configura uno dei nostri prodotti software. Sono brillanti lavoratori IT motivati intelligenti, ma non programmatori.
Intendo coprire i concetti di base (variabili, matrici, funzioni e cicli) e quindi passare ad esempi che sono vicini al loro dominio problematico. Non sono sposato con una lezione di 4 ore, se necessario posso estenderlo a due lezioni di quattro ore.
Sto giocando con l'idea di saltare per e mentre loop e semplicemente insegnare ForEach-Object. Ho usato personalmente i loop tradizionali e while negli script PowerShell, ma possono sempre essere riscritti come loop ForEach-Object con un po 'di creatività. Una parte di me sente il buon vecchio per ($ i = 0 $ i < foo; $ i ++) è una fondamentale necessaria prima di passare a foreach, ma l'altra parte di me pensa che potrebbe essere me stesso aggrappato al mio Model M e la mia Bibbia K & R .
Per disegnare un'analogia con SQL, non insegnerei mai un CURSOR o altri loop in una lezione di 4 ore perché dovresti essere in grado di fare tutto in SQL come un'operazione SET. In teoria, è necessario attenersi alla pipeline in PowerShell. Uso i loop while e while in PowerShell più spesso di quanto non facciano i cursori e i loop while in SQL. Tuttavia, PowerShell è un linguaggio di scripting e le convenzioni vengono applicate in modo meno rigoroso e spingo anche i limiti di PowerShell con C # in linea e dipendenze eccessive sulla chiamata alle API native di .NET. Il mio pubblico non lo farà.
Per coloro che non sono esperti di PowerShell, sono abbastanza sicuro che non hai effettivamente bisogno di un ciclo for o while. Li uso, ma è perché ho esperienza con altre lingue. Ad esempio se si desidera solo i primi 10 membri di un array di 20 membri:
1..20 | Select-Object -First 10 | ForEach-Object { Write-Host $_ }