Skip to content

Instantly share code, notes, and snippets.

View santisq's full-sized avatar

Santiago Squarzon santisq

View GitHub Profile
Invoke-RestMethod https://gist.githubusercontent.com/santisq/bd3d1d47c89f030be1b4e57b92baaddd/raw/aa78870a9674e9e4769b05e333586bf405c1362c/Measure-Expression.ps1 |
Invoke-Expression
Add-Type @'
using System;
public static class TestString
{
public static string Create(string @string, int len) =>
string.Create(length: len, state: @string, action: Action);
Invoke-RestMethod https://gist.githubusercontent.com/santisq/bd3d1d47c89f030be1b4e57b92baaddd/raw/236c79877ebaa75ce81c1806ef568d77abad6724/Measure-Expression.ps1 |
Invoke-Expression
$range = [System.Linq.Enumerable]::Range(1, 100kb)
time @{
'foreach + if' = {
param($range)
$result = foreach ($i in $range) { if ($i % 2) { $i } }
@santisq
santisq / nonblockingform.ps1
Created June 5, 2024 21:03
easiest example i could think of using a runspace
using namespace System.Management.Automation.Runspaces
using namespace System.Windows.Forms
using namespace System.Drawing
Add-Type -AssemblyName System.Windows.Forms, System.Drawing
$form = [Form]@{ StartPosition = [FormStartPosition]::CenterScreen }
$iss = [initialsessionstate]::CreateDefault2()
$iss.Variables.Add([SessionStateVariableEntry]::new('form', $form, ''))
$PrintWindowCode = @'
using System;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Drawing.Imaging;
public class ScreenCapture
{
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out Rect lpRect);
$map = @{
color = 'red'
person = @{
firstname = 'Bob'
lastname = 'Smith'
}
gender = 'his'
}
$template = @'
$func = Invoke-RestMethod https://gist.githubusercontent.com/santisq/bd3d1d47c89f030be1b4e57b92baaddd/raw/73952eceb82cd31b8cb9f2fd04e2a3ef3c428110/Measure-Expression.ps1
. ([scriptblock]::Create($func))
time -TestCount 5 -OutputAllTests @{
'TestUpdateTypeData' = {
class TestUpdateTypeData {
hidden [int] $_x
hidden [int] $_y
TestUpdateTypeData([int] $x, [int] $y) {
Import-Module ActiveDirectory
$func = Invoke-RestMethod https://gist.githubusercontent.com/santisq/bd3d1d47c89f030be1b4e57b92baaddd/raw/73952eceb82cd31b8cb9f2fd04e2a3ef3c428110/Measure-Expression.ps1
. ([scriptblock]::Create($func))
$adsi = {
$searcher = [adsisearcher]::new(
'(&(objectClass=user)(objectCategory=person))',
[string[]] @(
'DistinguishedName'
'userAccountControl'
@santisq
santisq / appreport.ps1
Last active May 22, 2024 16:59
App Registrations with Secret or Certificate Expiration Date GT 100 Days
class AppRegistration {
[string] $DisplayName
[guid] $AppId
[guid] $Id
$CreatedDateTime
AppRegistration([hashtable] $app) {
$this.DisplayName = $app['DisplayName']
$this.AppId = $app['AppId']
$this.Id = $app['Id']
@santisq
santisq / method1.ps1
Last active May 13, 2024 02:21
bind default values to `$PSBoundParameters`
& {
[CmdletBinding(DefaultParameterSetName = 'A')]
param(
[Parameter(ParameterSetName = 'A')]
$ParamA = 'A',
[Parameter(ParameterSetName = 'B')]
$ParamB = 'B',
[Parameter(Mandatory)]
$ParamBoth
)
class JwtAssertion {
[System.Security.Cryptography.X509Certificates.X509Certificate2] $Certificate
hidden [System.Text.Encoding] $encoding = [System.Text.Encoding]::UTF8
hidden [hashtable] $claims = @{
# exp: 5-10 minutes after nbf at most
exp = [System.DateTimeOffset]::UtcNow.AddMinutes(5).ToUnixTimeSeconds()
# jti: a GUID, unique identifier for the request
jti = [guid]::NewGuid().ToString()