Skip to content

Instantly share code, notes, and snippets.

@eugrus
eugrus / Get-ActiveDocument.ps1
Created January 26, 2026 10:43
for Word-COM debug and play arounds
$global:doc = ($global:word = [Runtime.InteropServices.Marshal]::GetActiveObject("Word.Application")).ActiveDocument
@eugrus
eugrus / NormalizeHeadings.ps1
Created January 26, 2026 09:20
reformat built-in Word heading styles
$word = [Runtime.InteropServices.Marshal]::GetActiveObject("Word.Application")
$doc = $word.ActiveDocument
$headingStyles = 1..9 | ForEach-Object { -1 * $_ } # built-in Word heading styles (wdStyleHeading1 = -1 … wdStyleHeading9 = -9)
foreach ($styleId in $headingStyles) {
$style = $doc.Styles.Item($styleId)
$style.Font.Name = "Arial"
$style.Font.Size = 11
$style.Font.Color = 0 # wdColorBlack
$style.ParagraphFormat.LineSpacingRule = 3 # wdLineSpace1pt5
$style.ParagraphFormat.SpaceBefore = 0
param(
[string]$filePath
)
$filePath = Resolve-Path -Path $filePath
if (-not (Test-Path $filePath)) {
Write-Error "File does not exist: $filePath"
exit 1
}
Get-NetTCPConnection -State Listen | Select-Object LocalAddress,LocalPort, @{Name='Process';Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object LocalPort
$outlook = New-Object -ComObject Outlook.Application
$explorer = $outlook.ActiveExplorer()
$selection = $explorer.Selection
if ($selection.Count -eq 0) {
Write-Error "No email selected."
exit
}
$mail = $selection.Item(1)
Get-ChildItem -File | ForEach-Object { if ($_.Name -match '^(\d{2})\.(\d{2})\.(\d{4})\s+(.+)$') { $n = "$($matches[3])-$($matches[2])-$($matches[1]) $($matches[4])"; if (-not (Test-Path $n)) { Rename-Item -Path $_.FullName -NewName $n; Write-Host "✓ $($_.Name) -> $n" -ForegroundColor Green } } }
function NormalizeNonBreakingSpaceInBeck {
try {
$word = [Runtime.InteropServices.Marshal]::GetActiveObject("Word.Application")
} catch {
throw "Keine aktive Word-Instanz gefunden."
}
$doc = $word.ActiveDocument
$wdFindContinue = 1
$wdReplaceAll = 2
param (
[string]$FilePath,
[Parameter(ValueFromRemainingArguments = $true)]
[string[]]$Patterns
)
if (-not (Test-Path $FilePath)) {
Write-Error "'$FilePath' not found."
exit 1
}
@eugrus
eugrus / Extract-Audio.ps1
Created September 19, 2025 08:14
wrapper for ffmpeg
param([Parameter(Mandatory=$true)][string]$InputFile)
if (-not (Test-Path $InputFile)) { Write-Error "No '$InputFile'"; exit 1 }
ffmpeg -i "$InputFile" -vn -b:a 64k $("$( [System.IO.Path]::ChangeExtension($InputFile, '.mp3') )")
@eugrus
eugrus / lines.ps1
Last active September 16, 2025 09:07
basically grep -ni or findstr /N /I in PowerShell
param (
[string]$Pattern,
[string]$Path
)
if (-not (Test-Path $Path)) {
Write-Error "File '$Path' not found."
exit 1
}