Skip to content

Instantly share code, notes, and snippets.

View trackd's full-sized avatar
:shipit:
👻🚀

Andree Renneus trackd

:shipit:
👻🚀
View GitHub Profile
function Enable-DebugSpectre {
[cmdletbinding()]
param()
$moduleName = 'PwshSpectreConsole'
$module = Get-Module -Name $ModuleName
if (-Not $Module) {
$Module = Import-Module $ModuleName -PassThru
}
$new = {
param(
function Set-DemoPrompt {
<#
.SYNOPSIS
Creates a simple prompt with WT highlighting using a temporary module.
minor trickery with setting an alias for prompt so we can easily restore old prompt on module removal.
.NOTES
it adds terminal prompt markings for WT Preview.
see links below for more info
.LINK
https://learn.microsoft.com/en-us/windows/terminal/tutorials/shell-integration#powershell-pwshexe/
@trackd
trackd / protocolhandler-clipboard.ps1
Created December 28, 2023 01:50
prototype something something
function Add-ClipboardProtocolHandler {
# clipboard://
$custom = Get-Command "$env:temp\customclip.exe" -CommandType Application -ErrorAction 'Stop'
$uri = 'clipboard'
if (!(Test-Path "HKCU:\Software\Classes\$uri")) {
New-Item "HKCU:\Software\Classes\$uri"
}
Set-ItemProperty "HKCU:\Software\Classes\$uri" '(Default)' "URL:$uri Protocol"
Set-ItemProperty "HKCU:\Software\Classes\$uri" 'URL Protocol' ''
if (!(Test-Path "HKCU:\Software\Classes\$uri\shell")) {
function ConvertTo-TableFormat {
<#
.SYNOPSIS
Rebuild an object based on the Format Data for the object.
.DESCRIPTION
Allows an object to be rebuilt based on the view data for the object. Uses Select-Object to create a new PSCustomObject.
#>
[CmdletBinding()]
param (
<#
yoinked and just stripped the namespace and change internal to public
https://github.com/PowerShell/PowerShell/blob/master/src/System.Management.Automation/utils/FuzzyMatch.cs
https://www.geeksforgeeks.org/damerau-levenshtein-distance/
https://yassineelkhal.medium.com/the-complete-guide-to-string-similarity-algorithms-1290ad07c6b7
#>
Add-Type -TypeDefinition @'
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
@trackd
trackd / Get-TibberMonth.ps1
Last active November 9, 2023 20:24
example code how to format query for retrieving a month from the GraphQL api
function Get-TibberMonth {
<#
.DESCRIPTION
gets tibber usage for a month, will automatically turn any date into the first day of the month
and will calculate the amount of hours for that month
.PARAMETER Startdate
startdate
if no enddate is given it will take day 1 of the month in startdate and +1 month
.PARAMETER Enddate
enddate
function colortable {
param(
[Int]$Padding = 2
)
$ht = @{
reset = "$([char]27)[0m"
pad = ' ' * $Padding
bg = "$([char]27)[48;5;"
# numbers + space + padding
len = [math]::Floor(($host.ui.RawUI.WindowSize.Width - 10) / (3 + 1 + (2 * $Padding)))
-join (1..255 | % { "`e[48;5;$($_)m  {0:00#}  `e[0m" -f $_ + ($_ % 15 -eq 0 ? "`n" : " ") })
-join (1..255 | % { "`e[48;5;$($_)m  {0:00#}  `e[0m" -f $_ + ($_ % ($host.ui.RawUI.WindowSize.Width / 10) -eq 0 ? "`n" : " ") })


#Windows Powershell compatible version
-join (1..255 | % { "$([char]27)[48;5;$($_)m  {0:00#}  $([char]27)[0m" -f $_;if ($_ % ($host.ui.RawUI.WindowSize.Width / 10) -eq 0) { "`n" } else { " " } })
@trackd
trackd / table2am.ps1
Last active November 4, 2023 23:11
i made it better or worse, depending on your view 🤣
using namespace System.Management.Automation.Language
function table2am {
<#
format-table sugar that knows not to format if you're assigning to a variable.
it will automatically switch to Select-Object when assigned.
also tries to figure out if it's the last command in the pipeline otherwise it will default to Select-Object.
only implemented Property param atm, just testing it out for fun.
Set-Alias -Name ft -Value table -Force
to override default ft alias you need -Force.
function table {
<#
format-table sugar that knows not to format if you're assigning to a variable.
it will automatically switch to Select-Object when assigned.
only implemented Property param atm, just testing it out for fun.
Set-Alias -Name ft -Value table -Force
to override default ft alias you need -Force.
#>
[CmdletBinding()]