После переключения приложения с Linux на Windows мне нужно преобразовать сценарий оболочки в эквивалент Windows.В основном я выбирал пакетную версию и PowerShell, и я решил попробовать PowerShell.
Для всех, кто интересуется, это локальная проверка Check_MK для получения информации об установленной версии SoftEther и количестве сеансов с данными о производительности.
Первоначальный сценарий оболочки был следующим:
#!/bin/sh
cmd=$(/usr/local/vpnserver/vpncmd localhost:port /server /password:password /in:/usr/lib/check_mk_agent/local/vpncmd.txt)
version=$(echo "$cmd" | head -4 | tail -1)
sessions=$(echo "$cmd" | grep Sessions | awk '$1=$1' | cut -c21-22)
if [ -z "$version" ]; then
echo "3 VPN_Version - Can't get the information from vpncmd"
else
echo "0 VPN_Version - SoftEther VPN Server $version"
fi
if [ -z "$sessions" ]; then
echo "3 VPN_Sessions - Can't get the information from vpncmd"
else
echo "P VPN_Sessions sessions=$sessions;2;2"
fi
В основном все работает, кроме двух самых сложных строк кода:
cd "C:\Program Files\SoftEther VPN Server"
$cmd = vpncmd localhost:port /server /password:password /in:vpncmd.txt
$version=
$sessions=
if($version -eq $null) {
echo "3 VPN_Version - Can't get the information from vpncmd"
} else {
echo "0 VPN_Version - SoftEther VPN Server $version"
}
if($sessions -eq $null) {
echo "3 VPN_Sessions - Can't get the information from vpncmd"
} else {
echo "P VPN_Sessions sessions=$sessions;2;2"
}
Мне нужна помощь с переходом отhead
, tail
, grep
, awk
и cut
один вкладыш к тому, что эквивалентно в PowerShell.Я читал о Get-Content
, но я не уверен, что это самый эффективный способ сделать это, и хотел бы не переходить от определения 1 строки к 10 строкам, если это возможно, чтобы быть настолько эффективным в PowerShell.
Пример вывода vpncmd
: https://pastebin.com/J5FcHzHK