Skip to content

Instantly share code, notes, and snippets.

View mavaddat's full-sized avatar
🏠
Working from home

Mavaddat Javid mavaddat

🏠
Working from home
View GitHub Profile
@mavaddat
mavaddat / getCerts.ps1
Last active August 9, 2024 17:38
Set Maven Certificates using certificate-ripper crip
&"$env:LOCALAPPDATA\Programs\certificate-ripper\crip.exe" export der --destination="$env:TEMP\certs\" --resolve-ca --url=https://repo.maven.apache.org/maven2
$certs = Get-ChildItem -Path "$env:TEMP\certs\"
Get-Command -Name java -All | ForEach-Object {
$binDir = $_.Source | Split-Path -Parent
$keyToolPath = Join-Path -Path $binDir -ChildPath 'keytool.exe'
if (Test-Path -Path $keyToolPath -PathType Leaf) {
foreach ($cert in $certs) {
$hash = Get-FileHash -Path $cert -Algorithm MD5 | Select-Object -ExpandProperty Hash
Write-Verbose -Message "Installing cert '$cert' into '$binDir' with hash '$hash'" -Verbose
&$keyToolPath -delete -alias "$hash" -cacerts -storepass changeit -noprompt
@mavaddat
mavaddat / saxonicaUpdater.cs
Last active August 21, 2024 01:40
Small utility application to update Saxon-HE from Maven repository
using System;
using System.IO;
using System.Net.Http;
using System.Security.Cryptography;
using System.Xml;
namespace SaxonicaDownloader
{
class Program
{
@mavaddat
mavaddat / progressPrediction.ps1
Last active March 22, 2024 04:24
Demo for effective time prediction in progress in PowerShell
$queries = 0..25
Set-Variable -Name SecondsPerQuery -Value 11 -Option ReadOnly -Force
Set-Variable -Name Variability -Value 0.07 -Option ReadOnly -Force
$queries | ForEach-Object -Begin {
$averageSecondsPerQuery = $SecondsPerQuery # Average seconds per query will be used to predict the time per iteration
} -Process {
$index = $_
$timing = [timespan]::FromSeconds((Get-Random -Minimum ((1.00 - $Variability) * $SecondsPerQuery) -Maximum ((1.00 + $Variability) * $SecondsPerQuery)))
$averageSecondsPerQuery = $averageSecondsPerQuery * ($index / $queries.Length) + $timing.TotalSeconds * ($queries.Length - $index) / $queries.Length
[pscustomobject]@{
@mavaddat
mavaddat / MoveAzStorageBlob.ps1
Last active March 14, 2024 19:46
A small function to move Azure Blobs using the already available cmdlets from Az.Storage
function Move-AzStorageBlob {
#Requires -Modules Az.Storage
[CmdletBinding(ConfirmImpact = 'High', SupportsShouldProcess)]
param (
[Parameter(Mandatory)]
[System.Object]
$SrcBlob,
[Parameter(Mandatory)]
[string]
$SrcContainer,
@mavaddat
mavaddat / sqlclUpdate.ps1
Last active January 26, 2024 02:24
PowerShell script and C# program to download and install latest SQLcl
$sqlclDownload = Invoke-RestMethod -Uri "https://www.oracle.com/database/sqldeveloper/technologies/sqlcl/download/"
$sqlclDownloadHash = ($sqlclDownload | Select-String -Pattern "SHA256: (?<sha256>[^<]+)" | Select-Object -ExpandProperty Matches).Groups['sha256'].Value
$sqlclDownloadUri = ($sqlclDownload | Select-String -Pattern "https:.*\.zip" | Select-Object -ExpandProperty Matches).Value
Invoke-WebRequest -Uri $sqlclDownloadUri -OutFile $env:TEMP\sqlcl.zip
if(Get-FileHash -Path $env:TEMP\sqlcl.zip | ForEach-Object { $_.Hash -ieq $sqlclDownloadHash }){
Expand-Archive -Path $env:TEMP\sqlcl.zip -DestinationPath $env:LOCALAPPDATA\Programs\ -Force
}
function ConvertTo-TnsnamesOra
{
[CmdletBinding(DefaultParameterSetName = 'PipelineStringArray')]
param
(
[Parameter(ParameterSetName = 'ConnectionsJsonPath')]
[String]$ConnectionsJsonPath = "$env:APPDATA\SQL Developer\system*\o.jdeveloper.db.connection\connections.json",
[Parameter(ParameterSetName = 'PipelineStringArray', ValueFromPipeline, ValueFromPipelineByPropertyName = $true)]
[ValidateScript({ $null -ne $_ -and $null -ne ($_ | ConvertFrom-Json -Depth 99) }, ErrorMessage = 'The input string is not valid JSON.')]
[string[]]$ConnectionsJsonStrArray,
@mavaddat
mavaddat / moveAzStorageBlob.ps1
Last active August 24, 2023 14:56
PowerShell cmdlet to move Azure Storage blobgs
function Move-AzStorageBlob {
#Requires -Modules Az.Storage, Az.Accounts
[CmdletBinding()]
param (
$SrcBlob,
$SrcContainer,
$DestContainer,
$DestBlob,
$Context
)
@mavaddat
mavaddat / decryptSqlDb.ps1
Created August 17, 2023 12:38
decrypt oracle sql developer password using PowerShell
function Get-DecryptedPassword {
[CmdletBinding()]
param (
[Parameter(ValueFromPipelineByPropertyName)]
[securestring]
$EncryptedPassword = (Get-Content -Path 'C:\Users\B0649033\AppData\Roaming\SQL Developer\system*\o.jdeveloper.db.connection\connections.json' | ConvertFrom-Json | ForEach-Object { $_.connections.info } | Out-ConsoleGridView -Title "Choose connection" -OutputMode Single | ConvertTo-SecureString -AsPlainText -Force ),
[Parameter(ValueFromPipelineByPropertyName)]
[string]
$DbSystemId = (([xml]$(Get-Content -Path "$env:APPDATA\SQL Developer\system*\o.sqldeveloper\product-preferences.xml")) | ForEach-Object { $_.preferences.value } | Where-Object -FilterScript { $_.n -eq 'db.system.id' } | Select-Object -ExpandProperty v -Unique -First 1)
)
@mavaddat
mavaddat / htmlImagesToBaseSixtyFour.ps1
Created August 8, 2023 16:24
Convert all images to base64
$md = <# PATH TO MARKDOWN FILE #>
$images = Select-String -Pattern "(?<=!\[[^\(]+\()[^\)]+(?=\))" -Path $md | ForEach-Object { $_.Matches.Value }
$html = <# PATH TO HTML FILE #>
$images = Select-String -Pattern "(?<=src=`")[^`"]+(?=\))" -Path $html | ForEach-Object { $_.Matches.Value }
$imagesBase64 = [string[]]::new($images.Count)
foreach($image in $images){
try {
# $filehandle = [System.IO.File]::Open((Join-Path -Path (Split-Path -Path $md -Parent) -ChildPath $image),[System.IO.FileMode]::Open)
$filehandle = [System.IO.File]::Open($image,[System.IO.FileMode]::Open)
$bytes = [byte[]]::new($filehandle.Length)
@mavaddat
mavaddat / oneDriveTrustedZones.ps1
Last active August 4, 2023 19:55
Set OneDrive and SharePoint trusted zones
#Requires -RunAsAdministrator
$zones = "onedrive.com", "*.onedrive.com", "onedrive.live.com", "login.live.com", "g.live.com", "spoprod-a.akamaihd.net", "*.mesh.com", "p.sfx.ms", "oneclient.sfx.ms", "*.microsoft.com", "fabric.io", "*.crashlytics.com", "vortex.data.microsoft.com", "posarprodcssservice.accesscontrol.windows.net", "redemptionservices.accesscontrol.windows.net", "token.cp.microsoft.com/", "tokensit.cp.microsoft-tst.com/", "*.office.com", "*.officeapps.live.com", "*.aria.microsoft.com", "*.mobileengagement.windows.net", "*.branch.io", "*.adjust.com", "*.servicebus.windows.net", "vas.samsungapps.com", "odc.officeapps.live.com", "login.windows.net", "login.microsoftonline.com", "*.files.1drv.com", "*.onedrive.live.com", "*.*.onedrive.live.com", "storage.live.com", "*.storage.live.com", "*.*.storage.live.com", "*.groups.office.live.com", "*.groups.photos.live.com", "*.groups.skydrive.live.com", "favorites.live.com", "oauth.live.com", "photos.live.com", "skydrive.live.com", "api.live.net", "apis.live.