Skip to content

Instantly share code, notes, and snippets.

Avatar

Christian Sandfeld csandfeld

  • Demant A/S
  • Copenhagen
View GitHub Profile
@csandfeld
csandfeld / azure automation sequence diagram 1.md
Last active Jul 22, 2022
azure automation sequence diagrams
View azure automation sequence diagram 1.md

sequenceDiagram autonumber

actor User as Requester
participant AYS as At Your Service
participant SM as Service Manager
participant Init as Init Script
participant Transaction as Transaction Runbook
participant Action as Action Runbook(s)

participant Share as File Share

@csandfeld
csandfeld / Output.txt
Created Jan 9, 2019
Testing Custom Validators and Transforms
View Output.txt
VERBOSE: Loading module from path 'C:\Custom Validators and Transforms\TestMod.psm1'.
VERBOSE: Exporting function 'Test-OwnClass'.
VERBOSE: Exporting function 'Test-ValidatePathExists'.
VERBOSE: Exporting function 'Test-PathTransform'.
VERBOSE: Importing function 'Test-OwnClass'.
VERBOSE: Importing function 'Test-PathTransform'.
VERBOSE: Importing function 'Test-ValidatePathExists'.
SomeString
----------
@csandfeld
csandfeld / IsAttributeSetOrNot.ps1
Last active May 2, 2016
Working with file attributes
View IsAttributeSetOrNot.ps1
$Path = 'C:\TEMP\TEST1'
$Filter = '*.pdf'
$Attribute = [System.IO.FileAttributes]::Archive
# Get all files in $Path matching $Filter
Get-ChildItem -Path $Path -Filter $Filter -Recurse
# Get all files in $Path matching $Filter where $Attribute is set
Get-ChildItem -Path $Path -Filter $Filter -Recurse | Where-Object { $_.Attributes -band $Attribute }
View 2015-NovemberScriptingGamesPuzzle.ps1
param([string]$VMNameStr)
# Split string by comma, and trim of any whitespace
VMNameStr.Split(',').Trim()
@csandfeld
csandfeld / VerifyTodaysLogExist.ps1
Last active Nov 3, 2015
Script to check if log file created today exist
View VerifyTodaysLogExist.ps1
# Folder where logfiles are stored
$Path = 'C:\TEMP'
# Filename pattern for regex match operator (<guid>.log)
$Pattern = '^.{8}-.{4}-.{4}-.{4}-.{12}\.log$'
$From = 'from@example.com'
$To = 'to@example.com'
$SmtpServer = 'smtpserver.domain.local'
$Subject = 'Todays log file was not found'
@csandfeld
csandfeld / CreateIFScheduledTasks.ps1
Last active Oct 30, 2015
Image Factory: Create Scheduled Tasks
View CreateIFScheduledTasks.ps1
Param(
[pscredential]
$Credential
,
[String]
$TaskPath = ''
)
$TaskName = 'ImageFactory - Build {0} images'
@csandfeld
csandfeld / 2015-OctoberScriptingGamesPuzzle.ps1
Last active Oct 4, 2015
@csandfeld 2015 - October Scripting Games Puzzle
View 2015-OctoberScriptingGamesPuzzle.ps1
function Get-RSSFeed {
[CmdletBinding()]
Param(
[Parameter(
Mandatory = $True
)]
[String[]]
$Uri
)
View TrimCSV.ps1
# Specify input and output files
$InputCSVFile = '.\input.csv'
$OutputCSVFile = '.\output.csv'
# Import data from CSV
$CSVData = Import-Csv -Path $InputCSVFile
# Run trim() (remove leading and trailing whitespace) on all property values
$CSVTrimmedData = $CSVData | Foreach-Object {
@csandfeld
csandfeld / 2015-SeptemberScriptingGamesPuzzle.ps1
Last active Sep 6, 2015
@csandfeld 2015 - September Scripting Games Puzzle
View 2015-SeptemberScriptingGamesPuzzle.ps1
# No semicolons, only one set of curlies, using aliases etc. to keep it as short as possible
ipcsv I*|%{$_|Add-Member OSVERSION (gwmi -CN $_.MACHINENAME Win32_OperatingSystem).Caption -P}|epcsv Output.csv
# Same as the above, but longer as I am not taking shortcuts with aliases and an incomplete filename
Import-Csv Input.csv | %{ $_ | Add-Member OSVERSION (Get-WmiObject -ComputerName $_.MACHINENAME Win32_OperatingSystem).Caption -PassThru } | Export-Csv Output.csv
# How I would have done it, had there been no limitations on lenght, semicolons
View 2015-AugustScriptingGamesPuzzle.ps1
# One-liner, command and parameter names spelled out
Invoke-RestMethod -Uri 'www.telize.com/geoip' | Format-Table -Property longitude, latitude, continent_code, timezone
# Advanced function wrapping the www.telize.com JSON endpoint
function Get-GeoInformation {
<#
.SYNOPSIS
Get IP address geo information