Demo-PSBasics.ps1

<#PSScriptInfo
 
.VERSION 1.0.2
 
.GUID d94598b3-6791-4c35-87dd-3db7282a1510
 
.AUTHOR Frits van Drie (3-Link.nl)
 
.COMPANYNAME 3-Link Opleidingen
 
.COPYRIGHT free to use and distribute without modifications
 
.TAGS
 
.LICENSEURI
 
.PROJECTURI
 
.ICONURI
 
.EXTERNALMODULEDEPENDENCIES
 
.REQUIREDSCRIPTS
 
.EXTERNALSCRIPTDEPENDENCIES
 
.RELEASENOTES
some small adjustments in informational lines
 
.PRIVATEDATA
 
#>
 






<#
 
.DESCRIPTION
Developed by 3-Link Opleidingen for training purposes only
 
.NOTES
    Install-Script -Name Demo-PSBasics -Repository PSGallery
    $file = Get-Item "$env:ProgramFiles\WindowsPowerShell\Scripts\Demo-PSBasics.ps1"
    ise $file.FullName
 
    Find-Script -Name Demo-* -Repository PSGallery
 
#>
 

Param($x)




Write-Warning 'Do not run this script on mission-critical devices!'
Write-Warning 'This script is developed for step-by-step demonstration.'
Write-Warning 'Open it in your code editor and demo each line/block separately'

Write-Host
Write-Host "File : Demo-PSBasics.ps1"
Write-Host "Author: Frits van Drie (3-Link.nl)"
Write-Host "Date : 2022-04-11"

BREAK

dir 'C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe'
dir 'C:\Windows\system32\WindowsPowerShell\v1.0\powershell_ISE.exe'


$PSVersionTable

# PS 7
cmd.exe /k "`"C:\Program Files\PowerShell\7\pwsh.exe`" -WorkingDirectory ~"


# Windows Terminal app (Windows 11: present / Windows 10: download from Store)
# Visual Studio Code (https://code.visualstudio.com/Download)


# Script Editor

# comment

<#
Comment block
 
Syntax Cmdlets: <verb>-<noun>
 
Syntax:
    Object-oriented:
 
 
#>


#region: Verbs and Nouns
    # GET: Read only
    Get-Service  # Retrieve services
    Get-Process
    Get-LocalUser
    Get-AzureADUser


    # SET: Modify an existing object
    Set-Service


    # Add
    Add-LocalGroupMember


    # Remove
    Remove-Item


    # NEW
    New-LocalGroup


    # Invoke
    Invoke-Command

    # Out
    Out-File
    Out-GridView


    # Export
    Export-Csv

    # ConvertTo
    ConvertTo-Json


#endregion

#region: Modules

    Install-Module
    Import-Module

    Get-Module
    Get-Module -ListAvailable

    # ModulePath
    $env:PSModulePath
    # PS 5.1
        <#
        $env:USERPROFILE\Documents\WindowsPowerShell\Modules;
        C:\Program Files\WindowsPowerShell\Modules;
        C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
        #>


    # PS7.2:
        <#
        $env:USERPROFILE\Documents\PowerShell\Modules;
        C:\Program Files\PowerShell\Modules;
        c:\program files\powershell\7\Modules;
        C:\Program Files\WindowsPowerShell\Modules;
        C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
        #>


    Get-Module ActiveDirectory
    Get-Command -Module ActiveDirectory
    Get-Command -Module AzureAD

    Get-Command -Module 3LToolKit


#endregion

#region: Help

    Get-Help Get-Help
    Get-Help Get-Service
    Get-Help Get-Service -Full
    Get-Help Get-Service -Examples
    Help Get-Service     -ShowWindow
    Help Get-Service     -Online

    help about*
    help about_Command_Syntax -ShowWindow
    help about_Comparison_Operators -ShowWindow


#endregion

#region: Get-Command
    Get-Command
    Get-Command -verb get
    Get-Command set-*adapter
    Get-Command *service

    Get-Command Get-LocalUser
    Get-Command Get-AzureADUser
    Get-Command Get-ADUser
    Get-Command Get-ADComputer


#endregion

#region: Alias

    cd \users
    cd \\dc1\Scripts
    chdir \windows
    Set-Location 'C:\Program Files'
    sl .\WindowsPowerShell


    Set-Location C:\Windows
    dir
    ls
    Get-ChildItem
    gci


    Get-Alias cd
    Get-Alias gci

    Get-Alias -Definition Get-Service

    # alias of Get-Command ?
    # alias of Get-Process ?
    # alias of Invoke-Expression ?
    Get-Alias -Definition Get-Command, Get-Process, Invoke-Expression


    New-Alias -Name goto -Value Set-Location
    Get-Alias -Definition Set-Location
    goto C:\Windows



#endregion

#region: Parameters

    # syntax: Cmdlet -ParameterName Value -ParameterName Value ...

    Get-Service -Name spooler
    Get-Service -Name spooler Bits
    Get-Service -Name spooler, Bits
    Get-Service -Name sp*
    Get-Service spooler, bits


    Get-Service -ComputerName DC1
    Get-Service -ComputerName LON-*
    Get-Service -ComputerName DC1, SVR1, localhost
    Get-Service -Name spooler -ComputerName DC1, SVR1, localhost

    Get-Service spooler -ComputerName DC1, SVR1, localhost

    Get-Service -Name spooler DC1, SVR1, localhost
    
    # Get-Service [ [-Name] <string[] ] [ -ComputerName <string[]> ]

    Get-Help Get-Service -ShowWindow  # compare syntax




#endregion

#region: Variables

    $var1 = 'abc'
    $var1

    Start-Service spooler
    $svc = Get-Service spooler
    Stop-Service spooler
    Get-Service spooler
    $svc

    Get-Variable
    Get-Variable -Name svc
    $svc = $null
    $svc = $empty
    $svc = ''

    Get-Variable -Name svc
    Remove-Variable svc
    Get-Variable -Name svc

#endregion