[PowerShell/en] execution-policy, builtin variables, configure your shell

This commit is contained in:
Laoujin 2015-11-27 01:07:45 +01:00
parent 083eb1c4a5
commit 4d44e241d7

View File

@ -13,6 +13,22 @@ A key difference with Bash is that it is mostly objects that you manipulate rath
[Read more here.](https://technet.microsoft.com/en-us/library/bb978526.aspx) [Read more here.](https://technet.microsoft.com/en-us/library/bb978526.aspx)
If you are uncertain about your environment:
```powershell
Get-ExecutionPolicy -List
Set-ExecutionPolicy AllSigned
# Execution policies include:
# - Restricted: Scripts won't run.
# - RemoteSigned: Downloaded scripts run only if signed by a trusted publisher.
# - AllSigned: Scripts need to be signed by a trusted publisher.
# - Unrestricted: Run all scripts.
help about_Execution_Policies # for more info
# Current PowerShell version:
$PSVersionTable
```
The tutorial starts here:
```powershell ```powershell
# As you already figured, comments start with # # As you already figured, comments start with #
@ -25,17 +41,18 @@ echo Hello world!
echo 'This is the first line'; echo 'This is the second line' echo 'This is the first line'; echo 'This is the second line'
# Declaring a variable looks like this: # Declaring a variable looks like this:
$Variable="Some string" $aString="Some string"
# Or like this: # Or like this:
$Variable1 = "Another string" $aNumber = 5
# Using the variable: # Using the variable:
echo $Variable echo $aString
echo "$Variable" echo "Interpolation: $aString"
echo '$($Variable + '1')' echo "`$aString has length of $($aString.length)"
echo '$aString'
echo @" echo @"
This is a Here-String This is a Here-String
$Variable $aString
"@ "@
# Note that ' (single quote) won't expand the variables! # Note that ' (single quote) won't expand the variables!
# Here-Strings also work with single quote # Here-Strings also work with single quote
@ -45,12 +62,35 @@ $Variable
echo "Booleans: $TRUE and $FALSE" echo "Booleans: $TRUE and $FALSE"
echo "Empty value: $NULL" echo "Empty value: $NULL"
echo "Last program's return value: $?" echo "Last program's return value: $?"
echo "Exit code of last run Windows-based program: $LastExitCode"
echo "The last token in the last line received by the session: $$"
echo "The first token: $^"
echo "Script's PID: $PID" echo "Script's PID: $PID"
echo "Number of arguments passed to script: $#" echo "Full path of current script directory: $PSScriptRoot"
echo "All arguments passed to script: $Args" echo 'Full path of current script: ' + $MyInvocation.MyCommand.Path
echo "Script's arguments separated into different variables: $1 $2..." echo "FUll path of current directory: $Pwd"
echo "Bound arguments in a function, script or code block: $PSBoundParameters"
echo "Unbound arguments: $($Args -join ', ')." ######################## MOVE THIS TO FUNCTIONS
# More builtins: `help about_Automatic_Variables`
# Reading a value from input: # Reading a value from input:
$Name = Read-Host "What's your name?" $Name = Read-Host "What's your name?"
echo "Hello, $Name!" echo "Hello, $Name!"
[int]$Age = Read-Host "What's your age?" [int]$Age = Read-Host "What's your age?"
```
Configuring your shell
```powershell
# $Profile is the full path for your `Microsoft.PowerShell_profile.ps1`
# All code there will be executed when the PS session starts
if (-not (Test-Path $Profile)) {
New-Item -Type file -Path $Profile -Force
notepad $Profile
}
# More info: `help about_profiles`
```