Skip to content

Instantly share code, notes, and snippets.

View davidlu1001's full-sized avatar

David Lu davidlu1001

View GitHub Profile
@davidlu1001
davidlu1001 / getRegValues.ps1
Last active June 25, 2024 09:17
Get Reg Values
[CmdletBinding()]
param (
[Parameter(Mandatory=$false)]
[string]$dnsNamePattern = 'google',
[Parameter(Mandatory=$false)]
[string[]]$registryPaths = @("HKLM:\SOFTWARE\WOW6432Node\Google"),
[Parameter(Mandatory=$false)]
[string[]]$excludePaths = @("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Update*"),
[Parameter(Mandatory=$false)]
[string[]]$computerNames = @("localhost"),
@davidlu1001
davidlu1001 / updateIISBindings.ps1
Last active June 25, 2024 09:21
Update IIS Bindings
[CmdletBinding()]
param (
[Parameter(Mandatory=$false)]
[string]$matchPattern = "\.co\.nz",
[Parameter(Mandatory=$false)]
[string]$originalString = "dev",
[Parameter(Mandatory=$false)]
[string]$targetString = "dev2",
@davidlu1001
davidlu1001 / setRegValues.ps1
Created June 25, 2024 22:38
Set Reg Values
# Examples
#
# Run locally with dry-run mode
#.\setRegValues.ps1 -csvFilePath ".\DNSPatternMatches.csv" -dryRun -Verbose
#
# Run locally
#.\setRegValues.ps1 -csvFilePath ".\DNSPatternMatches.csv"
#
# Run remotely
#.\setRegValues.ps1 -csvFilePath ".\DNSPatternMatches.csv" -computerNames "RemoteComputer1", "RemoteComputer2"
@davidlu1001
davidlu1001 / ops.ps1
Last active July 30, 2024 06:12
Operation scripts for copy files and run commands on remote servers
<#
.SYNOPSIS
Executes commands or copies files on remote computers with enhanced features.
.DESCRIPTION
This script provides functionality to execute commands or copy files on multiple remote computers simultaneously.
It supports both running commands/scripts and copying files/directories, with added features like retry logic,
enhanced error handling, and more detailed logging.
.PARAMETER ComputerName
@davidlu1001
davidlu1001 / getReg.ps1
Last active July 2, 2024 21:40
Get REG baed on Key or Value
[CmdletBinding()]
param (
[Parameter(Mandatory=$false)]
[string]$regKeyPattern = '.*',
[Parameter(Mandatory=$false)]
[string]$regValuePattern = '.*',
[Parameter(Mandatory=$false)]
[string[]]$registryPaths = @("HKLM:\SOFTWARE\WOW6432Node\Google"),
[Parameter(Mandatory=$false)]
[string[]]$excludePaths = @("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Update*"),
@davidlu1001
davidlu1001 / setReg.ps1
Created July 2, 2024 03:50
Set REG values
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[string]$regPath,
[Parameter(Mandatory=$true)]
[string]$regName,
[Parameter(Mandatory=$true)]
[string]$regNewValue,
@davidlu1001
davidlu1001 / RemoteOps.Tests.ps1
Created July 4, 2024 07:07
Testing RemoteOps.ps1 with Pester
# RemoteOps.Tests.ps1
BeforeAll {
. $PSScriptRoot\RemoteOps.ps1
Mock Write-Log {}
Mock Resolve-FullPath { $Path }
Mock Get-Content { "Write-Output 'Test Script'" }
}
Describe "RemoteOps - Command Execution" {
@davidlu1001
davidlu1001 / scanConfig.ps1
Last active July 7, 2024 22:13
Scan Config
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[string[]]$ComputerNames = @($env:COMPUTERNAME),
[string[]]$ScanPaths = @("D:\", "E:\"),
[string]$OutputFile = "DNSUrls_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv",
[string]$LogFile = "ScanLog_$(Get-Date -Format 'yyyyMMdd_HHmmss').log",
[string]$UrlPattern = '(?i)([a-z0-9-]+\.)+co\.nz',
[int]$MaxConcurrentJobs = 5,
[int]$BatchSize = 1000
@davidlu1001
davidlu1001 / updateConfigWithCsv.ps1
Last active July 8, 2024 00:08
Update Config With CSV (includes old and new value)
[CmdletBinding()]
param(
[Parameter(ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[string[]]$ComputerNames = @($env:COMPUTERNAME),
[string[]]$ScanPaths = @("D:\", "E:\"),
[string]$OldNewDnsFile = "old_new_dns.csv",
[string]$OutputFile = "scanConfigResult_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv",
[string]$LogFile = "ScanLog_$(Get-Date -Format 'yyyyMMdd_HHmmss').log",
[int]$MaxConcurrentJobs = 5,
[int]$BatchSize = 1000,
[CmdletBinding()]
param (
[Parameter(Mandatory = $false)]
[string]$OldNewDnsFile = "dns_old_new.csv",
[Parameter(Mandatory = $false)]
[string[]]$ComputerNames = @("localhost"),
[Parameter(Mandatory = $false)]
[string]$OutputFile = "updateIISBindingsResult.csv",