Powershell script mstsc
Hej.Jeg er ikke en haj til powershell scripts skal jeg lige starte med at sige.
Lidt historie:
Hver morgen skal jeg ind og tjekke om jeg kan få en rdp session til 20 terminal servere. Hvis en server ikke svare skal den genstartes.
Jeg har indtil videre fundet og modificeret et script som selv starter 'mstsc' og går ind i en txt fil hvor alle server navnene står og forbinder til dem alle. Så langt så godt.
Det jeg godt kunne tænke mig er at få tilføjet en funktion til mit script som sender en mail ud til mig og en kollega, hvis en terminal server ikke svarer. Min tanke var at sætte det op som en scheduled task.
Her er mit nuværende script:
$servers = Get-Content "C:\TSTjek\Servers.txt"
ForEach ($s In $servers)
{
Invoke-Expression "$env:systemroot\system32\mstsc.exe /v:$s"
}
Jeg har et andet script som tjekker tilgang til en hjemmeside hver 15min. Hvis hjemmesiden fejler sendes der en mail ud. Måske noget af denne funktion kan genbruges. Det script ser således ud:
function Test-Site {
param($URL)
trap{
"Failed. Details: $($_.Exception)"
$emailFrom = "me@email.com"
# Use commas for multiple addresses
$emailTo = "me@email.com,me1@email.com,me2@email.com,me3@email.com"
$subject = "hemmelig.dk nede"
$body = "hemmelig.dk webside er nede!. Details: $($_.Exception)"
$smtpServer = "10.1.4.30"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)
exit 1
}
$webclient = New-Object Net.WebClient
# The next 5 lines are required if your network has a proxy server
$webclient.Credentials = [System.Net.CredentialCache]::DefaultCredentials
if($webclient.Proxy -ne $null) {
$webclient.Proxy.Credentials = `
[System.Net.CredentialCache]::DefaultNetworkCredentials
}
# This is the main call
$webclient.DownloadString($URL) | Out-Null
}
Test-Site "http://hemmelig.dk"