Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Modernizing PowerShell Scripts

92 views

Published on

Op 22/11/19 organiseerde Axxes een open sessie en liet consultant en expert in PowerShell Matthias van den Elsacker aan het woord. Focus van de avond: Het moderniseren van PowerShell scripts.

Ik zit in de informaticasector, dus logischerwijs ben ik net zoals de meesten van ons zeer geïnteresseerd in nieuwe technologieën en ontwikkelingen. Niet alleen binnen mijn eigen vakgebied (System en Network Engineering), maar ook daarbuiten (Development, Machine Learning, AI, VR,…).

Toch merk ik van mezelf dat ik deze nieuwe technologieën vaak voor mijn eigen projecten niet gebruik. Ik klamp nog te vaak vast aan methodes en programma’s die al jaar en dag hun dienst bewijzen. In principe is hier niets mis mee natuurlijk, maar het kan misschien efficiënter of beter. Je hoort je collega developers namelijk dagelijks klagen over “legacy code”, en het feit dat hun project geen gebruik maakt van het laatste hippe framework.

“Don’t change a winning team” of “stilstaan is achteruitgaan”? In deze talk vertel ik je met een aantal persoonlijke maar concrete voorbeelden hoe ik mijn eigen manier van werken met PowerShell scripts heb verbeterd of gemoderniseerd. Onder meer volgende onderwerpen komen aan bod:

- Afstappen van slechte gewoonten door enkele best-practices van Microsoft toe te passen.
- PowerShell is PowerShell Core geworden. Is deze versie wel een volwaardige opvolger? Kan deze versie even veel? En wat moet ik doen om mijn bestaande scripts te laten werken in deze nieuwe versie van PowerShell?
- Diezelfde PowerShell Core is ook cross-platform (en open source!). Zullen al mijn bestaande scripts dan ook werken op zowel Windows, Linux, OS X, en ARM-based systemen?
- Waarom pakt Microsoft mijn geliefde PowerShell ISE af, en hoe kan VS Code de leegte in mijn hart vullen?
- Wat is GIT, waarom zijn developers er zo’n grote fan van, en heeft het een meerwaarde voor mij als system engineer?
- Test-driven development: Putting the “dev” in DevOps.

Published in: Technology
  • Be the first to comment

Modernizing PowerShell Scripts

  1. 1. M o d e r n i z i n g Po w e r S h e l l S c r i p t s
  2. 2. whoami • Matthias van den Elsacker • Axxes since 2014 • System Engineer @ Umicore since 2014 • First Line for 1 year • Second/Third Line SCCM for 4 years • Network Engineer @ Umicore since 2019 • Contact: Matthias.vandenElsacker@axxes.com
  3. 3. Introduction Why this session
  4. 4. My Collection of Scripts
  5. 5. Where did I leave these again?
  6. 6. Problem? Solution!
  7. 7. Talking points • Best practices • PowerShell to PowerShell Core • Cross Platform • ISE to Visual Studio Code • Git • Pester
  8. 8. Best Practices And style rules
  9. 9. lowercase, PascalCase, UPPERCASE • lowercase: Powershell Keywords • foreach, switch, return, -eq, -like,… • PascalCase: All public identifiers • Functions, Modules, Cmdlets, Attributes, Classes,… • Do-Something, $SomeVariable, MyModule.psm1,… • UPPERCASE: Comment-based help keywords • .SYNOPSIS, .EXAMPLE, .DESCRIPTION,…
  10. 10. “One True Brace Style” • Brackets open at the end of a line. • Brackets close at the beginning of a line. • Exception: short CommandBlocks.
  11. 11. Verb-Noun • All PowerShell Modules, Functions and Cmdlets follow this rule. • Get-Process, New-LocalUser, Clear-Content,… • Follow this rule when creating functions. • Repair-Wmi, Add-DomainUserToLocalAdmins, Get- RootCertificatesFromComputer • List of approved Verbs: • Get-Verb
  12. 12. Aliases • Aliases are cool and all, but… • … make code hard to understand. • So try to avoid them. • (Unless you are playing Code Golf)
  13. 13. Comments • Comments should be useful. • Not useful: • Useful:
  14. 14. Other Best Practices
  15. 15. Other Best Practices • Re-usability
  16. 16. Other Best Practices • Re-usability • Modularity
  17. 17. Other Best Practices • Re-usability • Modularity • Don’t re-invent the wheel
  18. 18. Other Best Practices • Re-usability • Modularity • Don’t re-invent the wheel • Write-*
  19. 19. PowerShell to PS Core Moving to an open-source, cross-platform version
  20. 20. What’s broken?
  21. 21. Solution!
  22. 22. What’s broken?
  23. 23. Solution!
  24. 24. What’s broken?
  25. 25. Solution!
  26. 26. Solution!
  27. 27. What’s broken?
  28. 28. Solution?
  29. 29. PowerShell Core keeps evolving…
  30. 30. What about Linux? Cross-Platform PowerShell
  31. 31. PowerShell comes in a lot of flavors
  32. 32. Remote Connection to Linux
  33. 33. Remote Connection to Linux
  34. 34. Windows vs Linux
  35. 35. ISE vs Code Out with the old, in with the new
  36. 36. In Memoriam
  37. 37. Welcome Visual Studio Code
  38. 38. Main advantages • Workspaces, folders, and files • Add-ons • Themes • Cross Platform • Debugging • Multiple terminals • Integrated GIT • Not just for PowerShell • It’s just cooler
  39. 39. Git And GitHub for System Engineers
  40. 40. “A solution for growing pains”
  41. 41. G-I-T • Random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of "get" may or may not be relevant. • Stupid. Contemptible and Despicable. Simple. Take your pick from the dictionary of slang. • “Global information tracker": you're in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room. • “Goddamn idiotic truckload of sh*t": when it breaks
  42. 42. Pester Testing PowerShell, using PowerShell
  43. 43. Pester • Test Framework • For PowerShell • Written in PowerShell • DSL Syntax: • “Describe” • “It” • “Should”
  44. 44. Type of Tests • Unit Testing • In isolation (using $TestDrive) • No external code (using Mocks) • Integration Testing • “White/Clear Box Testing” • Integration with external code • Acceptance Testing • “Black Box Testing” • Third party
  45. 45. T h a n k y o u !
  46. 46. Resources • https://github.com/PoshCode/PowerShellPracticeAndStyle • https://poshcode.gitbooks.io/powershell-practice-and-style/ • https://docs.microsoft.com/en-us/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-6 • https://4sysops.com/archives/make-visual-studio-code-look-and-behave-like-powershell-ise/ • https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/ssh-remoting-in-powershell- core?view=powershell-6 • https://github.com/PowerShell/psl-omi-provider • https://lkml.org/lkml/1998/9/30/122 • https://guides.github.com/activities/hello-world/ • https://github.com/pester/Pester • https://www.red-gate.com/simple-talk/sysadmin/powershell/introduction-to-testing-your-powershell-code-with- pester/

×