Скрипт PowerShell, который частенько мне помогал в самых невероятных и спорных ситуациях. А ведь казалось бы…
Скрипт определяет дату и время последнего запуска удалённого хоста. Обращается напрямую к компьютеру в сети, предварительно проверив его доступность, запускает службу WinRM и получает дату и время последней загрузки операционной системы с помощью извлечения экземпляров CIM класса win32_OperatingSystem.
[System.Console]::Title = "Когда был запущен удалённый хост"
$hostname = Read-Host 'Имя удалённого компьютера'
[System.Console]::Title = "Когда был запущен удалённый хост $hostname"
$ping = Test-Connection -ComputerName $hostname -Quiet -Count 1
if ($ping)
{
Write-Host
Set-Service -ComputerName $hostname -Name WinRM -Status Running -PassThru | Out-Null
$getlastboot = (Get-CimInstance -ClassName win32_OperatingSystem -ComputerName $hostname | select -ExpandProperty lastbootuptime).ToString("dd MMMM yyyy в hh:mm:ss")
Write-Host "Последняя загрузка хоста $hostname была произведена $getlastboot" -ForegroundColor Cyan
}
else
{
Write-Host "Хост $hostname недоступен" -ForegroundColor Red
}
Write-Host
Read-Host "Нажмите любую клавишу для выхода..."
Обновление поста
Спустя некоторое время появилась такая функция:
function GetStartHost
{
param
(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$hostname
)
$ping = Test-Connection -ComputerName $hostname -Quiet -Count 1
if ($ping)
{
$getlastboot = (Get-CimInstance -ClassName win32_OperatingSystem -ComputerName $hostname | select -ExpandProperty lastbootuptime).ToString("dd.MM.yyyy - hh:mm:ss")
return $getlastboot
}
else
{
$error = "Хост $hostname недоступен!"
return $error
}
}
И такой скрипт:
[System.Console]::Title = "Когда был запущен удалённый хост"
function GetStartHost
{
param
(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string]$hostname
)
$ping = Test-Connection -ComputerName $hostname -Quiet -Count 1
if ($ping)
{
$getlastboot = (Get-CimInstance -ClassName win32_OperatingSystem -ComputerName $hostname | select -ExpandProperty lastbootuptime).ToString("dd.MM.yyyy - hh:mm:ss")
return $getlastboot
}
else
{
$error = "Хост $hostname недоступен!"
return $error
}
}
$hostname = Read-Host "Имя удалённого хоста"
$updatetime = GetStartHost -hostname $hostname
Write-Host "Хост $hostname был запущен: $updatetime" -ForegroundColor Cyan
Write-Host
Read-Host "Нажмите любую клавишу для выхода..."