# By the time I'd written compare-exmaple-1, the AI copilot had figured out
# I was writing a crib sheet for PowerShell. I was impressed by the AI copilot's
# ability to figure out what I was doing. I was also impressed by the AI copilot's
# ability to generate code that was similar to what I was writing. I was also
# impressed by the AI copilot's ability to generate code that was better than
# what I was writing. I was also impressed by the AI copilot's ability to generate
# code that was more concise than what I was writing. I was also impressed by the
# AI copilot's ability to generate code that was more readable than what I was
# writing. I was also impressed by the AI copilot's ability to generate code that
# Ok ok ok copilot, I'll stop autocompleting here. But VS Code rocks for Powershell.
# It's one of the things for which I won't use vim.
# Printing, Input
function snarf {
$a = Read-Host "snarf"
Write-Host "you gave me $a to snarf"
}
# logic comparison
function compare-example-1 {
$a = 1
$b = 2
if ($a -eq $b) {
Write-Host "a equals b"
} else {
Write-Host "a does not equal b"
}
}
# parse integer
function parse-integer-example-1 {
$a = Read-Host "give me a number"
$a = [int]$a
Write-Host "you gave me $a"
}
# switch
function switch-example-1 {
$a = Read-Host "give me a number"
switch ($a) {
1 { Write-Host "you gave me 1" }
2 { Write-Host "you gave me 2" }
default { Write-Host "you gave me something else" }
}
}
# loops
function while-loop-example-1 {
$a = 0
while ($a -lt 5) {
Write-Host "a is $a"
$a++
}
}
function for-loop-example-1 {
for ($i = 0; $i -lt 5; $i++) {
Write-Host "i is $i"
}
}
function do-loop-example-1 {
$a = 0
do {
Write-Host "a is $a"
$a++
} while ($a -lt 5)
}
# services
function get-service-example-1 {
$services = Get-Service
$numberOfServicesRunning = ($services | Where-Object { $_.Status -eq "Running" }).Count
foreach ($service in $services) {
Write-Host "service name: $($service.Name)"
Write-Host "service status: $($service.Status)"
}
Write-Host "number of services running: $numberOfServicesRunning"
}
get-service-example-1
# math
function math-example-1 {
$a = 1
$b = 2
$sum = $a + $b
$product = $a * $b
$quotient = $a / $b
$remainder = $a % $b
$difference = $a - $b
Write-Host "sum,product,quotient,remainder,difference is $sum, $product, $quotient, $remainder, $difference"
}
# arrays
function array-example-1 {
$a = @("a", "b", "c")
$a += "d"
$a += "e"
$a += "f"
foreach ($element in $a) {
Write-Host "element is $element"
}
}
# hash tables
function hash-table-example-1 {
$a = @{}
$a["a"] = 1
$a["b"] = 2
$a["c"] = 3
foreach ($key in $a.Keys) {
Write-Host "key is $key"
Write-Host "value is $($a[$key])"
}
}
# functions
function function-example-1 {
function add {
param($a, $b)
return $a + $b
}
$sum = add 1 2
Write-Host "sum is $sum"
}
# classes
function class-example-1 {
class Person {
[string] $name
[int] $age
Person([string] $name, [int] $age) {
$this.name = $name
$this.age = $age
}
[string] ToString() {
return "name: $($this.name), age: $($this.age)"
}
}
$person = [Person]::new("john", 30)
Write-Host "person is $person"
}
# objects
function object-example-1 {
$person = New-Object PSObject
$person | Add-Member -MemberType NoteProperty -Name "name" -Value "john"
$person | Add-Member -MemberType NoteProperty -Name "age" -Value 30
Write-Host "person is $person"
}
# files
function file-example-1 {
$path = "C:\Users\john\Documents\file.txt"
$content = Get-Content $path
Write-Host "content is $content"
}
# json
function json-example-1 {
$json = @"
{
"name": "john",
"age": 30
}
"@
$object = ConvertFrom-Json $json
Write-Host "object is $object"
}
# web
function web-example-1 {
$url = "https://jsonplaceholder.typicode.com/todos/1"
$response = Invoke-RestMethod -Uri $url
Write-Host "response is $response"
}
# regex
function regex-example-1 {
$text = "hello world"
$pattern = "hello"
$isMatch = $text -match $pattern
Write-Host "isMatch is $isMatch"
}
# error handling
function Handle-ErrorExample-1 {
try {
throw "error"
} catch {
Write-Host "error is $_"
}
}
# main
function main {
snarf
compare-example-1
parse-integer-example-1
switch-example-1
while-loop-example-1
for-loop-example-1
do-loop-example-1
get-service-example-1
math-example-1
array-example-1
hash-table-example-1
function-example-1
class-example-1
object-example-1
file-example-1
json-example-1
web-example-1
regex-example-1
Handle-ErrorExample-1
}