Skip to content

Instantly share code, notes, and snippets.

View scriptingstudio's full-sized avatar
👍
Awake and ready

Matthew Gray scriptingstudio

👍
Awake and ready
  • Interstellar Systems
  • Hiranyaloka
View GitHub Profile
@scriptingstudio
scriptingstudio / asyncprogressbar.ps1
Created February 9, 2023 15:52
Simple one-level asynchronous wrapper over the builtin PowerShell progress bar
<#
.SYNOPSIS
Displays an asynchronous progress bar within a PowerShell command window.
.DESCRIPTION
A simple one-level asynchronous wrapper over the builtin PowerShell progress bar.
Features:
- Non-blocking screen output
- Separate run phases: start,next,stop
- Automatic percentage calculation
- Automatic state control
@scriptingstudio
scriptingstudio / gporeport.ps1
Last active January 29, 2023 07:51
Quick GPO Report
# Quick GPO Report for further analysis
param (
[string]$csv,
[alias('xlsx')][string]$excel
)
$gporeport = {
$domain = $env:USERDNSDOMAIN
if (-not $domain) {return}
#$dommask = "$domain/" -replace '\.','\.'
@scriptingstudio
scriptingstudio / Foreach-Parallel.ps1
Last active January 14, 2023 06:33
Foreach-Parallel
<#
.SYNOPSIS
Performs parallel processing of input objects.
.DESCRIPTION
Simple PowerShell function to asynchronously run jobs.
Yet another parallel processing manager on Earth.
FEATURES:
- no modules, just one small self-sufficient function
- automatic scriptblock variables: $_, $psitem
@scriptingstudio
scriptingstudio / safedate.ps1
Last active January 6, 2023 18:58
Safe date format
# safe (culture invariant) date format - ISO 8601 - YYYY-MM-DD
[datetime]::now.tostring('yyyy-MM-dd')
@scriptingstudio
scriptingstudio / fibonacci.ps1
Last active January 30, 2023 15:22
Powershell fibonacci - just for fun
# DEMO: caching calculations demo - superfast
# reverse calculations
function fibonacciR ([Double]$fn, [switch]$series, $fbcache) {
#if ($MyInvocation.MyCommand.name -ne $(Get-PSCallStack)[1].FunctionName) {
# $fbcache = $null # prevent using $fbcache from root
#}
if ($fbcache -eq $null) {$fbcache = [System.Collections.Generic.Dictionary[string,Double]]::new($fn)}
if ($fbcache.ContainsKey($fn)) {$fbcache[$fn]}
elseif ($fn -lt 2) {
$fbcache[$fn] = $fn