Functions
# Defining
function Get-Length($text)
{
Write-Hist $text.Length
}
# Executing
Get-Length "Lukasz"
# Passing reference
function Change-Value([ref] $x)
{
$x = 5;
}
# Executing
$x = 1
Change-Value ([ref]$x)
# Functions with pipeline
function Proc-Pipeline()
{
begin {}
process {}
end {}
}
# Filters
filter Filter-Files
{
if($_.Name -like "*.cs")
{
return $_
}
}
# Support for switches
function Get-Help ()
{
param([switch]$x, [switch]$y)
if($x.IsPresent)
{
}
}
Error Handling
# Trap
function With-Trap($x, $y)
{
$z = $x/$y
trap [System.DivideByZeroException]
{
}
trap
{
Write-Host $_.ErrorID
Write-Host $_.Exception.Message
continue
# break
}
}
Files
# Getting the content
$content = Get-Content "file.txt"
# Getting lines
$content[0]
$content[1]
# Joining
$content_as_string = [String]::Join($sep, $content)
# Wildcard support
$content = Get-Content "*.txt"
# Writing to file (with overwrite)
Set-Content -Value "Text to file" -Path "file.txt"
# Append to file
Add-Content -Value "Some more text" -Path "file.txt"
# Remove file
Remove-Item "file.txt"
# CSV files
Export-Csv
$header = "Col1", "Col2"
$content = Import-Csv "File.csv" -Header $header
# XML files - write
$content = "<html><body>Body text</body></html>"
$content | Out-File "file.xml"
# XML files - read
$content = New-Object xml
$content.Load("file.xml")
# Read data
$body_text = (@(content.html.body)[0]).Clone()