Skip to content

Instantly share code, notes, and snippets.

View PanosGreg's full-sized avatar

Panos Grigoriadis PanosGreg

  • Dublin, Ireland
View GitHub Profile
@PanosGreg
PanosGreg / Get-DurationText.ps1
Created December 26, 2024 12:05
Get the elapsed duration as a string
function Get-DurationText {
<#
.SYNOPSIS
Get the elapsed duration as a string, in a number of different formats
.EXAMPLE
Get-DurationText -Duration ([timespan]::FromDays(2))
2d 0hr
#>
[CmdletBinding(DefaultParameterSetName='Timespan')]
[OutputType([string])]
@PanosGreg
PanosGreg / Encryption-Decryption_AES128-AES256.ps1
Last active December 10, 2024 16:14
Encryption-Decryption with and without .NET streams & Key Generation with PBKDF
# I wrote these notes in Sep-2024
# AES 128 and 256 bits
# Without using .NET Streams
## Initial Input
[string]$PlainText = 'this is a test message'
[string]$Password = 'SampleSecret'
@PanosGreg
PanosGreg / Get-ArgumentCompleter.ps1
Last active October 22, 2024 20:32
Get the argument completers that are registered in the current session (if any)
function Get-ArgumentCompleter {
<#
.SYNOPSIS
Get the argument completers that are registered in the current session (if any)
.EXAMPLE
Import-Module PowerShellGet
Get-ArgumentCompleter
shows the argument completers that are registered from the PowerShellGet module
.EXAMPLE
@PanosGreg
PanosGreg / Get-AzRequestInfo.ps1
Created October 13, 2024 15:50
Get the web request details from an azure command
function Get-AzRequestInfo {
<#
.SYNOPSIS
It gets the web request details from an azure command.
IMPORTANT:
The azure command must be run with the -Debug switch AND you need to collect the debug stream
.EXAMPLE
$ResGrp = Get-AzResourceGroup -Name mysub -Location eastus2 -Debug 5>&1
Get-AzRequestInfo $ResGrp
@PanosGreg
PanosGreg / Hex_Conversions.ps1
Created September 1, 2024 19:36
Hex Conversions (from/to Hex)
# Convert to/from Hex
### From Byte array to Hex String
$bytes = [byte[]](10,20,30,40)
# a) via .ToString() method
$bytes.ForEach({$_.ToString('x2')}) -join ''
@PanosGreg
PanosGreg / Get-TaskManager.ps1
Last active September 1, 2024 17:38
Get a result like task-manager on the console
function Get-TaskManager {
<#
.SYNOPSIS
Gets the CPU, memory and disk utilization of the top X processes (by default 10)
The command can also query remote computers.
Sorting works based on the processes with the highest CPU utilization.
.DESCRIPTION
Very briefly, these are the steps taken by this command as part of its process workflow:
- Load an internal function, the Get-TaskUsage
- Remote to one or more computers with Invoke-Command and pass in the internal function
@PanosGreg
PanosGreg / ParamSet.ps1
Created June 24, 2024 08:41
PowerShell Parameter Sets
## Parameter Sets Examples
# Example #1
# Choose 1 or 2 out of 2
# order is not important
<# Combinations: 3 in total
@PanosGreg
PanosGreg / Get-WindowsVersion.ps1
Last active April 15, 2024 10:18
It provides the equivalent information to winver.exe
function Get-WindowsVersion {
<#
.SYNOPSIS
It provides the equivalent information to winver.exe
.EXAMPLE
Get-WindowsVersion
#>
[cmdletbinding()]
param ()
@PanosGreg
PanosGreg / Get-WinUpdate.ps1
Last active March 26, 2024 14:46
Get a list of the windows updates with a KB ID using the COM Microsoft.Update.Searcher
function Get-WinUpdate {
<#
.SYNOPSIS
Get a list of all the windows updates on the system
Note: This function will only show the updates that have a KB ID
Any hotfixes without an update ID won't be included in the results
.EXAMPLE
Get-WinUpdate | where Title -like '*cumulative update for windows*'
.EXAMPLE
@PanosGreg
PanosGreg / Get-RuntimeDiagnostics.ps1
Last active February 22, 2024 21:50
Collect the count and memory size of the .NET objects used by a process
function Get-RuntimeDiagnostics {
<#
.SYNOPSIS
Collect the count and memory size of the .net objects used by a process
.DESCRIPTION
Collect the count and memory size of the .net objects used by a process
This function is using the Microsoft.Diagnostics.Runtime .NET library from nuget:
https://www.nuget.org/packages/Microsoft.Diagnostics.Runtime