PowerShell/README.md
2020-12-30 15:40:07 +00:00

11 KiB

Collection of Useful PowerShell Scripts

This repository contains 80+ useful and cross-platform PowerShell scripts - to be used by command-line interface (CLI), for remote control (RC), by context menu, by voice control, by automation software (e.g. Jenkins), or simply to learn PowerShell.

List of Scripts

The following PowerShell scripts can be found in the Scripts/ subfolder:

What is PowerShell?

PowerShell is a task automation and configuration management framework from Microsoft, consisting of a command-line shell and associated scripting language.

How to get PowerShell?

  • Windows 7 and newer do provide PowerShell by default. It's recommended to install Windows Terminal (see the Microsoft Store at https://www.aka.ms/terminal) for a comfortable command-line usage. Per default, Windows does not allow script execution (execution policy "restricted"). To enable this, enter as administrator:
    $ Set-ExecutionPolicy RemoteSigned
    
  • On CentOS, Debian, Docker, Fedora, macOS, openSUSE, Red Hat, Ubuntu visit https://github.com/PowerShell/PowerShell for installation.

Afterward, install this collection by clicking on the green "Code" button or execute:

$ git clone https://github.com/fleschutz/PowerShell

Configure PowerShell as Default Shell

  • Linux: make sure PowerShell is installed, then execute: chsh -s /snap/bin/powershell <username>
  • Windows: no need to, PowerShell is the default shell

Adding the Scripts to the Search Path

Want to use the PowerShell scripts everywhere on the command-line? Then you need to add the Scripts/ subfolder to the search path:

  • Bash or sh: edit .profile in your home directory and add the line: PATH="$PATH:/path/to/PowerShell/Scripts"
  • Windows: open the environment variables dialogue and add the full path to Scripts/ to the system environment variable "Path"

Using PowerShell in Context Menus

  • to enable "right-click > New > Windows PowerShell Script" execute Add_ps1_to_New_context_menu.reg in subfolder Misc/
  • to disable this execute Remove_ps1_from_New_context_menu.reg in subfolder Misc/

Script Conventions

Each PowerShell script should follow the 9 golden rules:

  • Rule #1: the filename should be named <verb>-<object>.ps1
  • Rule #2: the first line reads #!/snap/bin/powershell to support PowerShell on Linux
  • Rule #3: the script has execute file permissions (chmod a+rx ) to support PowerShell on Linux
  • Rule #4: provide a comment-based help with syntax, description, link, author, and license
  • Rule #5: prefer command-line options, else ask the user
  • Rule #6: the encoding of the script is in UTF-8 with BOM to support Unicode characters
  • Rule #7: use Set-StrictMode -Version Latest to enable additional error checking
  • Rule #8: for readibility use UpperCamelCase for variables and functions, lowerCamelCase for everything else
  • Rule #9: exits 0 for success, else print an error message and exit with the error code (mostly 1)

Feedback

Send your email feedback to: markus [at] fleschutz [dot] de

This open source release is licensed under the CC0 license. All trademarks are the property of their respective owners.