Я пишу функцию, которая возвращает весь Интернет Компьютеры в нашей сети, так что я могу делать такие вещи, как это:Какой самый быстрый способ получить онлайн компьютеры
Get-OnlineComputers | % { get-process -computername $_ }
Теперь я в основном получили мою функция готова, но это слишком долго. Я хочу только вернуть компьютеры, у которых есть WinRM active, но я также хочу предоставить возможность получить каждый компьютер, даже те, у которых не было настроено WinRM (параметр переключателя).
Это моя функция. сначала он создает pssession для domaincontroller, чтобы получить все компьютеры в нашей локальной сети. затем за компьютером, он будет проверять, активны ли они в WinRM или если они принимают пинг. если это так, он возвращается.
$session = New-PSSession Domaincontroller
$computers = Invoke-Command -Session $session { Get-ADComputer -filter * } | select -ExpandProperty Name
$computers | % {
if ($IncludeNoWinRM.IsPresent)
{
$ErrorActionPreference = "SilentlyContinue"
$ping = Test-NetConnection $_
if ($ping.PingSucceeded -eq 'True')
{
$_
}
}
else
{
$ErrorActionPreference = "SilentlyContinue"
$WinRM = Test-WSMan $_
if ($WinRM)
{
$_
}
}
}
Является ли это лучшим способом, чтобы проверить свои онлайн-компьютеры? Кто-нибудь имеет более быструю и лучшую идею?
Спасибо!
Я бы сначала протестировал, если они принимают пинг. то вы знаете, если они в сети, и если да, вы можете проверить WinRM. я могу ошибаться, но, возможно, это ускоряет его. – XtremeBaumer
oops - почему я получил нижестоящий знак? Что я могу улучшить в своем вопросе? – SimonS