[cmdletbinding()] param() Import-Module ../lib/Q3Rcon.psm1 function Read-HostUntilEmpty { param([object]$rcon) "Input 'Q' or to exit." while (($line = Read-Host -Prompt 'Send command') -cne [string]::Empty) { if ($line -eq 'Q') { break } if ($line -in @('fast_restart', 'map_rotate', 'map_restart')) { $cmd = $line -replace '(?:^|_)(\p{L})', { $_.Groups[1].Value.ToUpper() } $rcon.$cmd() } elseif ($line.StartsWith('map mp_')) { $mapname = $line.Split()[1] $rcon.SetMap($mapname) } else { $rcon.Send($line) } } } function Get-ConnFromPSD1 { $configpath = Join-Path $PSScriptRoot 'config.psd1' return Import-PowerShellDataFile -Path $configpath } try { $conn = Get-ConnFromPSD1 $rcon = Connect-Rcon -hostname $conn.host -port $conn.port -passwd $conn.passwd Read-HostUntilEmpty -rcon $rcon } finally { Disconnect-Rcon -rcon $rcon }