[xml]$inputs = New-Object system.Xml.XmlDocument
$inputs.Load('.\inputs.xml')
[string]$result = ''
[string]$adresses = ''
$matrix = New-Object System.Collections.ArrayList
$Get_Ping={ # функция будет выполняться в задании
param($server)
$hostname = $server.host
if (Test-Connection $hostname -Quiet -count 1){
$resPing += "Ping to " + $hostname + " success`r`n" # формируем содержимое файла report.txt
$port = $server.port
$sock = new-object System.Net.Sockets.Socket -ArgumentList (
$([System.Net.Sockets.AddressFamily]::InterNetwork),
$([System.Net.Sockets.SocketType]::Stream),
$([System.Net.Sockets.ProtocolType]::Tcp) )
try {
$sock.Connect($hostname,$Port) | Out-Null # попытка соединения
$resPing += "Port " + $port + " connect success`r`n`r`n"
$sock.Close()
}
catch {
$resPing += "Port " + $port + " connect fail`r`n`r`n"
}
}
else {
$resPing += "Ping to " + $hostname + " fail`r`n" # формируем содержимое файла report.txt
}
return $resPing
}
foreach ($server in $inputs.SelectNodes('//server'))
{
$jb = Start-Job $Get_Ping -Args $server # запускаем задание для каждого хоста
$matrix.Add($jb)
}
foreach ($process in $inputs.SelectNodes('//process')) # определяет какие процессы запущены
{
if (Get-Process -Name $process.InnerText -ErrorAction SilentlyContinue)
{
$result += "Process " + $process.InnerText + " exists`r`n"
}
else
{
$result += "Process " + $process.InnerText + " not exists`r`n"
}
}
$result += "`r`n"
foreach ($service in $inputs.SelectNodes('//service'))
{
if (Get-service -Name $service.InnerText -ErrorAction SilentlyContinue)
{ #
$Servicestatus = Get-service $service.InnerText | select status, DisplayName # получение списка служб в Powershell
$result += "Service " + $service.InnerText + " " + $Servicestatus.status + "`r`n"
}
else
{
$result += "Service " + $service.InnerText + " " + "not exists`r`n"
}
}
$result += "`r`n"
foreach($jb in $matrix) # собираем результаты выполнения пингов
{
$rez = $jb|Wait-Job|Receive-Job
$result += $rez
}
Out-File -FilePath .\report.txt -InputObject $result -Encoding Default
foreach ($adress in $inputs.SelectNodes('//email'))
{
$adresses += $adress.InnerText + "; "
}
if ($adresses -ne '')
{
Add-Type -AssemblyName Microsoft.Office.Interop.Outlook
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = $adresses
$Computer = Get-WmiObject -Class win32_ComputerSystem
$Mail.Subject = "Testing report on "+ $Computer.Name
$Mail.Body =$result
$Mail.Send()
}
RecsLiveData.observe(this, Observer<List<Rec>>() {
fun onChanged(@Nullable Recs: List<Rec>) {
val lvMain: ListView = findViewById(R.id.lvMain) as ListView // создаем адаптер
recAdapter = RecAdapter(this@MainActivity, Recs)
lvMain.setAdapter(recAdapter) // присваиваем адаптер списку
}
RecsLiveData.observe(this, Observer<List<Rec>>() {
val lvMain: ListView = findViewById(R.id.lvMain) as ListView // создаем адаптер
recAdapter = RecAdapter(this@MainActivity, it)
lvMain.setAdapter(recAdapter) // присваиваем адаптер списку
})
fun main(args: Array<String>) {
var s: String?
var m: Int = 0 // Для максимального значения
var count: Int
var old_m: Int = 0 // Для предыдущего максимального значения
s = readLine()!!
count = s?.toInt()
while (count > 0){
s = readLine()!!
if (s == "1"){
m++
}else{
if(old_m < m){
old_m = m
}
m = 0
}
count--
}
if(old_m < m){
old_m = m
}
println(old_m)
}