Вообще-то есть метод GetIsNetworkAvailable в NetworkInterface - раз, во-вторых, можно обычный батник запускать как код PowerShell.
Код:
<# :
@echo off
powershell /noprofile /nointeractive /windowsstyle hidden /command ^
"&{[ScriptBlock]::Create((gc \"%~f0\") -join [Char]10).Invoke()}"
exit /b
#>
for ($i = 0; $i -lt 60; $i++) {
$con += [Int32][Net.NetworkInformation.NetworkInterface]::GetIsNetworkAvailable()
Start-Sleep -sec 5
}
if ($con -eq 0) {
rundll32 powrprof.dll,SetSuspendState Sleep
}