Snippets
Registry
Example to read registry values:
Get-ChildItem -Path "HKCU:\Software\Microsoft\Office\Outlook\Addins"
Get-ChildItem -Path "HKLM:\Software\Microsoft\Office\Outlook\Addins"
Media
One-liner to convert all PNG Images of a folder to JPG images:
Get-ChildItem -Path (Get-Location) -Filter *.png | ForEach-Object { $img=[System.Drawing.Image]::FromFile($_.FullName); $jpg=([System.IO.Path]::ChangeExtension($_.FullName, '.jpg')); $enc=[System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders()|?{$_.MimeType -eq 'image/jpeg'}; $par=New-Object System.Drawing.Imaging.EncoderParameters(1); $par.Param[0]=New-Object System.Drawing.Imaging.EncoderParameter([System.Drawing.Imaging.Encoder]::Quality,90); $img.Save($jpg,$enc,$par); $img.Dispose() }; Write-Output 'Conversion complete.'
Netzwerk
UDP
UDP Sender
$udpSender = New-Object System.Net.Sockets.UdpClient
$bytes = [System.Text.Encoding]::UTF8.GetBytes("Hallo vom Client")
$udpSender.Send($bytes, $bytes.Length, "1.2.3.5", 12345)
$udpSender.Close()
UDP Listener
$udpClient = New-Object System.Net.Sockets.UdpClient 12345
$remoteEP = New-Object System.Net.IPEndPoint ([System.Net.IPAddress]::Any, 0)
Write-Host "Lausche auf UDP-Port 12345..."
while ($true) {
$data = $udpClient.Receive([ref]$remoteEP)
$text = [System.Text.Encoding]::UTF8.GetString($data)
Write-Host "Empfangen von $($remoteEP.Address): $text"
}
UDP Check
Get-NetUDPEndpoint | Select-Object -Property LocalAddress, LocalPort, OwningProcess | Sort-Object LocalPort
With iPerf
UDP Download
iperf3.exe -c <server> -u -P 10 -4 -R
UDP Upload
iperf3.exe -c <server> -u -P 10 -4
TCP
TCP Connect
try { (New-Object Net.Sockets.TcpClient).Connect("1.2.3.4", 7600); "offen" } catch { "zu" }
TCP Firewall check
$tcp = New-Object System.Net.Sockets.TcpClient
$tcp.ReceiveTimeout = 3000
$tcp.SendTimeout = 3000
$sw = [System.Diagnostics.Stopwatch]::StartNew()
try {
$tcp.Connect("1.2.3.4", 7600)
"Port offen"
} catch {
$sw.Stop()
if ($sw.ElapsedMilliseconds -ge 2500) {
"Möglicherweise gefiltert (Timeout)"
} else {
"Port wahrscheinlich geschlossen (RST empfangen)"
}
}
TCP Listener
$listener = [System.Net.Sockets.TcpListener]::Create(7600)
$listener.Start()
Write-Host "TCP-Listener läuft auf Port 7600..."
while ($true) {
if ($listener.Pending()) {
$client = $listener.AcceptTcpClient()
Write-Host "Neue Verbindung: $($client.Client.RemoteEndPoint)"
$client.Close()
}
Start-Sleep -Milliseconds 500
}
TCP Check
Get-NetTCPConnection -State Listen | Select-Object -Property LocalAddress, LocalPort, OwningProcess | Sort-Object LocalPort
TCP Check with iPerf
TCP Download
iperf3.exe -c <server> -P 10 -4 -R
TCP Upload
iperf3.exe -c <server> -P 10 -4
Multicast
Checks
- Port must be allowed (check Firewall local or in network)
- Verify that the network infrastructure (switches, routers) allows multicast (no filtering/IGMP blocking).
- Ensure both sender and receiver are on the same LAN/subnet (unless you have multicast routing set up).
- Use a multicast address in the range 224.0.0.0 to 239.255.255.255
Listener
$groupAddress = "239.255.0.1"
$port = 5001
$udpClient = New-Object System.Net.Sockets.UdpClient
$localEp = New-Object System.Net.IPEndPoint ([System.Net.IPAddress]::Any, $port)
$udpClient.Client.SetSocketOption([System.Net.Sockets.SocketOptionLevel]::Socket, [System.Net.Sockets.SocketOptionName]::ReuseAddress, $true)
$udpClient.ExclusiveAddressUse = $false
$udpClient.Client.Bind($localEp)
$udpClient.JoinMulticastGroup([System.Net.IPAddress]::Parse($groupAddress))
Write-Host "Listening for multicast on $groupAddress:$port..."
while ($true) {
$received = $udpClient.Receive([ref]$localEp)
$text = [System.Text.Encoding]::UTF8.GetString($received)
Write-Host "Received from $($localEp.Address): $text"
}
Sender
$groupAddress = "239.255.0.1"
$port = 5001
$message = "Hello multicast from $(hostname)"
$remoteIp = [System.Net.IPAddress]::Parse($groupAddress)
$remoteEp = New-Object System.Net.IPEndPoint $remoteIp, $port
$udpClient = New-Object System.Net.Sockets.UdpClient
$bytes = [System.Text.Encoding]::UTF8.GetBytes($message)
for ($i = 1; $i -le 10; $i++) {
$udpClient.Send($bytes, $bytes.Length, $remoteEp) | Out-Null
Write-Host "Sent: $message"
Start-Sleep -Seconds 1
}
$udpClient.Close()