Получение имени хоста, текущей даты и времени для удаленного сервера с использованием IP-адреса в Powershell - PullRequest
0 голосов
/ 09 сентября 2018

Я новичок в сценариях powershell и что он может делать. У меня есть IP-адрес удаленного сервера, и я хочу получить дату и время на моем локальном компьютере, который подключен к нему, используя cisco any connect. Могу ли я сделать это с помощью powershell.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

FYI, удаленное взаимодействие через WinRM через IP, требует установки значения параметра -credential. (Сделайте это с $admin = Get-Credential и используйте -credential $admin в качестве параметра в команде invoke). Вы не можете удаленно через ip использовать ваши текущие учетные данные. Также, при использовании команды invoke, я НАСТОЯТЕЛЬНО рекомендую использовать -sessionoption (new-pssessionoption -nomachineprofile), иначе вы создаете профили на каждой машине, что не только занимает больше времени, но и оставляет огромные следы вашей работы.

например. (используется ответ Nas)

$admin = Get-Credential
$remoteIP = 'x.x.x.x'
Invoke-Command -ComputerName $remoteIP -credential $admin -sessionoption (new-pssessionoption -nomachineprofile) -ScriptBlock {
    $env:COMPUTERNAME
    Get-Date
}

если вы хотите использовать тонну машин, вы можете сделать это ...

$admin = Get-Credential
$remoteIP = "x.x.x.x","x.x.x.x"
foreach ($pc in $remoteIP) {
Invoke-Command -ComputerName $pc -credential $admin -sessionoption (new-pssessionoption -nomachineprofile) -ScriptBlock {
    [pscustomobject][ordered]@{'Hostname'=$env:COMPUTERNAME
    'Date'=Get-Date}
}
}

чтобы ускорить его, я бы удалил "env: computername", так как в любом случае он должен был бы вернуть pscomputername

это должно быть намного быстрее

$remoteIP = "x.x.x.x","x.x.x.x"
foreach ($pc in $remoteIP) {
    $object = Get-WmiObject -Class win32_operatingsystem -ComputerName $pc -Property localdatetime,__server
    [pscustomobject][ordered]@{'computername'=$object.__server
                'Date'=$object.converttodatetime($object.localdatetime)}


}

__ Сервер - это ДВА подчеркивания, чем слово сервер. НЕ _Сервер, а __Сервер

[pscustomobject] - это сокращение от new-object -typename psobject -property ...

и [заказанный] просто гарантирует сохранение вашего порядка хеш-таблиц.

0 голосов
/ 09 сентября 2018

Попробуйте, это должно работать, если у вас есть необходимые разрешения и на целевом сервере включена функция psremoting (Редактировать: преобразовать ip в имя хоста)

$remoteIP = 'x.x.x.x'
$remoteServer = [System.Net.Dns]::GetHostByAddress($remoteIP)
Invoke-Command -ComputerName $remoteServer.HostName -ScriptBlock {
    $env:COMPUTERNAME
    Get-Date
}

Попробуйте, и мы можем вам помочь, в зависимости от результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...