Skip to content

Instantly share code, notes, and snippets.

View steviecoaster's full-sized avatar
🤠
It's a sweet day to write some Powershell

Stephen Valdinger steviecoaster

🤠
It's a sweet day to write some Powershell
View GitHub Profile
@steviecoaster
steviecoaster / Write-ReverseOutput.ps1
Created January 8, 2025 20:40
Fooling around with Write-Output in PowerShell
function Write-ReverseOuput {
[Alias('Write-Output')]
[CmdletBinding()]
Param(
[Parameter(Mandatory)]
[String]
$InputObject
)
end {
@steviecoaster
steviecoaster / Get-AllBoundParameters.ps1
Created January 6, 2025 20:31
Get all parameters to function, including default values
Function Get-AllBoundParameters {
[CmdletBinding()]
Param(
# A simple string parameter that is mandatory
[Parameter(Mandatory)]
[String]
$Name,
# A simple switch
[Parameter()]
@steviecoaster
steviecoaster / machineSetup.ps1
Last active December 10, 2024 20:18
My workstation pkgs
#Requires -RunAsAdministrator
#Set our execution policy for the process
Set-ExecutionPolicy Bypass -Scope Process -Force
#Store our packages.config from the gist here temporarily
$tempFile = Join-Path $env:TEMP -ChildPath 'packages.config'
#Write our config file contents
$configFile = 'https://gist.githubusercontent.com/steviecoaster/798bb1046b8fc3275b5a4801cb6f46e4/raw/6e68dbca121276af44ff540c4b6e26df42ee6832/packages.config'
@steviecoaster
steviecoaster / New-RandomPass.ps1
Last active December 10, 2024 23:31
Cross platform password generator
function New-RandomPass {
<#
.Synopsis
Generates and returns a suitably secure password
.EXAMPLE
New-RandomPass
Returns a random password as a SecureString object
.EXAMPLE
@steviecoaster
steviecoaster / Copy-CertToStore.ps1
Last active December 6, 2024 17:12
Copy a x509 certificate from one windows store to another
function Copy-CertToStore {
<#
.SYNOPSIS
Copy a certificate from one store location to another
.DESCRIPTION
Long description
.PARAMETER Certificate
The certificate to copy
@steviecoaster
steviecoaster / dogs.ps1
Created December 2, 2024 18:08
Evaluate breed in a collection
$breeds = @('Labrador','Poodle','St. Bernard','Husky')
'mut' -in $breeds # false
'Poodle' -in $breeds #true
@steviecoaster
steviecoaster / Explaination.md
Last active October 9, 2025 18:40
Use a module from another machine with Implicit remoting

Implicit Remoting explained

Implicit remoting allows you to load a module from a remote session and execute it "locally". What you are actually doing is running a proxy command. The actual function executes on the remote session, and the data is returned to you locally.

This approach does have the same caveats as running a command directly via Invoke-Command in that it is deserialized and rehydrated, losing any available methods on the object.

This is still a hugely useful trick, and I highly recommend using a prefix so you know in your code when something is running on the remote system. For example Get-ADComputer may become Get-RemoteADComputer. You can specify whatever prefix you want, just make it

@steviecoaster
steviecoaster / New-EncryptedEnvironmentVariable.ps1
Last active November 22, 2024 15:00
Write an encrypted Environment variable
function New-EncryptedEnvironmentVariable {
<#
.SYNOPSIS
Writes an Environment variable as a secure string using DPAPI
.DESCRIPTION
Writes an Environment variable as a secure string using DPAPI
.PARAMETER Scope
The scope of the variable. Can be machine, user, or process
@steviecoaster
steviecoaster / hiddenparam.ps1
Created November 19, 2024 18:56
Demonstrating hidden params
function Hide-Param {
[CmdletBinding()]
Param(
[Parameter(DontShow)]
[String]
$SecretValue
)
end {
@steviecoaster
steviecoaster / Microsoft.PowerShell_profile.ps1
Last active August 26, 2025 18:17
My PowerShell Profile script
function Merge-Csv {
<#
.SYNOPSIS
Merge the data from multiple csv files into one
.DESCRIPTION
Merge data from multiple csv files into one. Data from each file should be the same shape
.PARAMETER CsvFile
The path to two or more csv files to combine