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 / DownloadSyzygyTablebases.ps1
Last active March 2, 2025 06:14
Small cmdlet to download and install the syzygy tablebases from lichess.org
function Get-Tablebases
{
[CmdletBinding()]
param (
[int]
[ValidateScript({ $_ -ge 3 },ErrorMessage = "'{0}' is not a valid number of pieces")]
[Parameter(HelpMessage = "The maximum number of pieces whose tablebases you want to download.")]
$MaxPieces = 7,
[string]
[ValidateScript({ Test-Path -Path $_ -PathType Container }, ErrorMessage = "Cannot find install path '{0}' because it does not exist.")]
Get-Service -DisplayName "*Network Virtualization*" | Restart-Service -Force -Verbose
Get-Service -DisplayName "*Virtual Disk*" | Restart-Service -Force -Verbose
Get-Service -DisplayName "*Virtual Machine*" | Restart-Service -Force -Verbose
Get-Service -DisplayName "*Host Compute*" | Restart-Service -Force -Verbose
Get-Service -DisplayName "*Container Manager*" | Restart-Service -Force -Verbose
Get-Service -DisplayName "*Remote Procedure*" | Where-Object { $_.Status -eq [System.ServiceProcess.ServiceControllerStatus]::Stopped } | Start-Service -Verbose
Get-Service -DisplayName "*Application Guard*" | Where-Object { $_.Status -eq [System.ServiceProcess.ServiceControllerStatus]::Stopped } | Start-Service -Verbose
@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 January 7, 2025 17:20
Small utility application to update Saxon-HE from Maven repository. The PowerShell script is a preliminary prototype of the C#.
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)
)