Powershell имя компьютера: Получаем через Powershell имя компьютера

Содержание

Как изменить имя компьютера в Windows 10

В данной статье показаны действия, с помощью которых можно изменить имя компьютера (переименовать компьютер) в операционной системе Windows 10.

Операционная система Windows 10 по умолчанию генерирует имя компьютера, однако при необходимости можно его изменить. Прежде всего изменение имени компьютера позволит проще идентифицировать его, особенно если речь идет о персональных компьютерах или ноутбуках в сети организации (т.е. в сети вы будете видеть имя и понимать, что это за компьютер).

Чтобы изменить имя компьютера, необходимо войти в систему с правами администратора.

При переименовании компьютера нельзя использовать кириллицу, некоторые специальные символы и знаки препинания.

Если вы ранее включили автоматический вход в систему, то временно отключите его, и после изменения имени компьютера и перезагрузки, при необходимости включите автоматический вход в систему. В противном случае иногда возможны проблемы, связанные с появлением новых учетных записей с тем же именем.

Содержание

  1. Как изменить имя компьютера в приложении «Параметры Windows»
  2. Как переименовать компьютер в окне «Свойства системы»
  3. Как изменить имя компьютера в командной строке
  4. Как изменить имя компьютера в Windows PowerShell

Как изменить имя компьютера в приложении «Параметры Windows»

Чтобы изменить имя компьютера (переименовать компьютер), откройте приложение «Параметры Windows», для этого нажмите на панели задач кнопку Пуск

и далее выберите Параметры или нажмите на клавиатуре сочетание клавиш + I.

В открывшемся окне «Параметры Windows» выберите Система.

Затем выберите вкладку О системе, и в правой части окна в разделе «Характеристики устройства» нажмите кнопку Переименовать этот ПК.

В окне «Переименуйте компьютер» введите новое имя компьютера и нажмите кнопку Далее.

В следующем окне вам будет предложено перезагрузить компьютер, нажмите кнопку Перезагрузить сейчас. После перезапуска имя компьютера изменится.

Как переименовать компьютер в окне «Свойства системы»

Чтобы переименовать компьютер данным способом, нажмите сочетание клавиш

+ R, в открывшемся окне Выполнить введите sysdm.cpl и нажмите клавишу Enter ↵.

В открывшемся окне «Свойства системы» нажмите кнопку Изменить.

Далее введите новое имя компьютера и нажмите кнопку ОK.

Чтобы изменения вступили в силу, вам будет предложено перезагрузить компьютер. Сделайте это, не забыв предварительно сохранить все открытые файлы и закрыть все программы, нажмите кнопку ОK, окно закроется.

Далее в окне «Свойства системы» нажмите кнопку Закрыть, это окно тоже закроется.

В следующем окне нажмите кнопку Перезагрузить сейчас. После перезагрузки изменения вступят в силу.

Как изменить имя компьютера в командной строке

Чтобы изменить имя компьютера данным способом, запустите командную строку от имени администратора выполните команду следующего вида:

wmic computersystem where name=»%COMPUTERNAME%» call rename name=»New_Name»

Замените New_Name в команде выше новым именем компьютера.

В данном примере команда выглядит следующим образом:

wmic computersystem where name=»%COMPUTERNAME%» call rename name=»winnote»

Как изменить имя компьютера в Windows PowerShell

Чтобы изменить имя компьютера данным способом, откройте консоль PowerShell от имени администратора и выполните командe следующего вида:

Rename-Computer -NewName NewComputerName

Замените NewComputerName в команде выше новым именем компьютера.

В данном примере команда выглядит следующим образом:

Rename-Computer -NewName winnote

После выполнения команды, в окне консоли PowerShell появится предупреждение о том что изменения вступят в силу после перезагрузки компьютера. Закройте окно консоли PowerShell и перезагрузите компьютер.

Изменение имени компьютера в Windows 10 при использовании учетной записи Microsoft приводит к тому, что к вашему онлайн-аккаунту привязывается «новый компьютер». Это не должно вызывать проблем, и можно удалить компьютер со старым именем на странице своей учетной записи на сайте Microsoft.

Еще одна возможная проблема — появление в сети двух компьютеров: со старым и новым именем. В этом случае попробуйте при выключенном компьютере отключить питание маршрутизатора (роутера), а затем снова включить сначала роутер, а затем — компьютер.

Как узнать имя пользователя на удаленном компьютере?

Довольно часто администратору нужно быстро узнать имя пользователя, который выполнил вход на удаленном компьютере Windows. В это статье мы рассмотрим несколько утилит и PowerShell скриптов, которые помогут вам узнать имена пользователей, залогиненых на удаленных компьютерах в сети.

Содержание:

  • Утилиты PSLoggedOn и Qwinsta
  • Получаем имя пользователя на удаленном компьютере через PowerShell
  • PowerShell скрипт для проверки пользователей на удаленных компьютерах

Утилиты PSLoggedOn и Qwinsta

В комплекте утилит SysInternals PSTools от Microsoft есть консольная утилита PSLoggedOn. exe, которую можно использовать для получения имени пользователя, который вошел на удаленный компьютер, а также список подключенных к нему SMB сеансов.

Скачайте утилиту и запустите ее в формате:

psloggedon \\RemoteCompName

Как вы видите, утилита вернула имя залогиненного пользователя (Users logged on locally), а также список пользователей, которые по сети используют ресурсы с этого компьютера (Users logged on via resource shares).

Если нужно получить только имя пользователя, вошедшего локально, используйте опцию –l:

Psloggedon.exe \\wks215s1 –l

Утилита Psloggedon подключается к реестру и проверяет в нем имя пользователя, вошедшего локально. Для этого должна быть включена служба RemoteRegistry. Вы можете запустить ее и настроить автозапуск службы с помощью PowerShell:

Set-Service RemoteRegistry –startuptype automatic –passthru
Start-Service RemoteRegistry

Также можно получить список сессий на удаленном компьютере с помощью встроенной утилиты
qwinsta
. Эта утилита должна быть знакома любому администратору, управляющему терминальными серверами с Remote Desktop Services. Чтобы получить список сессий с удаленного компьютера, выполнит команду:

qwinsta /server:dc01

Утилита возвращает список всех сессий (активных и отключенных по таймауту) на RDS сервере или десктопной редакции Windows 10 (даже если вы разрешили к ней множественные RDP подключения).

Получаем имя пользователя на удаленном компьютере через PowerShell

Вы можете получить имя пользователя, который залогинен на компьютере через WMI класс Win32_ComputerSystem. Откройте консоль PowerShell и выполните команду:

Get-WmiObject -class Win32_ComputerSystem | Format-List Username

Команда вернула имя пользователя, который выполнил вход на компьютер.

У командлета Get-WmiObject есть параметр –ComputerName, который можно использовать для получения доступа к WMI объектам на удаленном компьютере. Следующая команда вернет имя пользователя с удаленного компьютера:

(Get-WmiObject -class Win32_ComputerSystem –ComputerName wks215s1). Username

Данная команда показывает только пользователя, вошедшего на консоль (не через RDP).

Также для получения информации с удаленных компьютеров можно использовать PSRemoting с помощью командлета Invoke-Command.

Если нужно получить только имя пользователя на компьютере (без домена), воспользуетесь следующими командами:

$userinfo = Get-WmiObject -ComputerName 'wks215s1' -Class Win32_ComputerSystem
$user = $userinfo.UserName -split '\\'
$user[1]

PowerShell скрипт для проверки пользователей на удаленных компьютерах

Если вам нужно собрать информацию о пользователях сразу с нескольких компьютерах, можете использовать следующую PowerShell функцию получить имена пользователей.

function Get-LoggedUser
{
    [CmdletBinding()]
    param
    (
        [string[]]$ComputerName 
    )
    foreach ($comp in $ComputerName)
    {
        $output = @{'Computer' = $comp }
        $output. UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
  [PSCustomObject]$output
    }
}

На вход функции Get-LoggedUser нужно передать имена компьютеров, на которых нужно проверить имена пользователей:

Get-LoggedUser wks215s1,wks215s2,dc01

Если для какого-то компьютера функция вернула пустое имя пользователя, значит на компьютер никто не залогинен.

Можно получить имена пользователей, которые работают на компьютерах в домене Active Directory. Для получения списка компьютеров нужно использовать командлет Get-ADComputer. В следующем примере мы получим имена пользователей, которые работают за активными компьютерами в определенном OU домена. Чтобы скрипт работал быстрее перед тем, как обратится к обратится к удаленному компьютеру, я добавил проверку его доступности по сети через ICMP пинг с помощью командлета Test-NetConnection:

function Get-LoggedUser
{
    [CmdletBinding()]
    param
    (
        [string[]]$ComputerName 
    )
    foreach ($comp in $ComputerName)
    {
        if ((Test-NetConnection $comp -WarningAction SilentlyContinue). PingSucceeded -eq $true) 
            {  
                $output = @{'Computer' = $comp }
                $output.UserName = (Get-WmiObject -Class win32_computersystem -ComputerName $comp).UserName
            }
            else
            {
                $output = @{'Computer' = $comp }
                         $output.UserName = "offline"
            }
         [PSCustomObject]$output 
    }
}
$computers = (Get-AdComputer -Filter {enabled -eq "true"} -SearchBase 'OU=Kazan,DC=winitpro,DC=loc').Name
Get-LoggedUser $computers |ft -AutoSize

Также обратите внимание, что вы можете хранить в свойствах компьютеров в AD имя пользователя, который выполнил вход. Для этого можно использовать логон скрипт, описанный в статье “Set-ADComputer: добавляем информацию о пользователе в свойства компьютеров AD”

После этого вам не нужно сканировать все компьютеры, чтобы найти где залогинен определенный пользователь. Можно найти компьютер пользователя простым запросом к Active Directory:

$user='dvpetrov'
$user_cn=(get-aduser $user -properties *). DistinguishedName
Get-ADComputer -Filter "ManagedBy -eq '$user_cn'" -properties *|select name,description,managedBy|ft

Как использовать PowerShell для быстрого получения имени компьютера

Вам нужно найти имя локального или удаленного компьютера Windows в сценарии PowerShell? Не смотрите дальше. В этом руководстве вы узнаете, как использовать PowerShell для получения имени компьютера несколькими различными и иногда неожиданными способами.

Не читатель? Посмотрите соответствующий видеоурок!

Не видите видео? Убедитесь, что ваш блокировщик рекламы отключен.

Содержание

Предварительные условия

Если вы ИТ-специалист и боретесь со слишком большим количеством запросов на сброс пароля в Active Directory, попробуйте Specops uReset, безопасное решение SSPR.

Эта статья будет практическим руководством. Если вы хотите применить концепции, которые вы изучите в этом руководстве, убедитесь, что у вас есть PowerShell. Вот и все! В статье будет использоваться PowerShell 7 (последняя на момент написания этой статьи), но Windows PowerShell, вероятно, будет работать так же хорошо.

Использование команды

Hostname в PowerShell для получения имени компьютера

До появления PowerShell единственным интерпретатором команд Windows, который у нас был, был старый добрый cmd .exe . Тогда нам не нужен был вонючий PowerShell, чтобы получить имя компьютера; у нас была команда hostname !

Команда hostname проще некуда. Откройте PowerShell (или даже командную строку cmd.exe) и введите hostname . Сделанный. Эта команда возвращает одну строку (имя локального компьютера).

Запуск команды hostname

Использование

System.Net.DNS .NET Class

Если вы предпочитаете более ориентированный на PowerShell подход, вы также можете сослаться на статический метод с именем GetHostByName() , расположенный в System. Net.DNS Класс .NET или, возможно, метод GetHostName() .

Метод

GetHostName()

Использование метода GetHostName() , вероятно, является самым простым способом использования PowerShell для получения имени компьютера. Просто вызовите этот статический метод без аргументов, как показано ниже. Эта команда вернет одну строку точно так же, как 9Команда 0025 hostname делает.

 [System.Net.Dns]::GetHostName()
 

Метод

GetHostByName()

Альтернативный, но похожий метод класса System.Net.DNS , который можно использовать для получения имени компьютера, называется GetHostByName() . Этот метод на самом деле является распознавателем DNS и может использоваться для поиска других имен хостов.

Если, например, вы хотите найти имя хоста локального компьютера, запустите [System.NET.DNS]::GetHostByName($null) или [System. NET.DNS]::GetHostByName('') ​​ .

 [Система.Net.DNS]::GetHostByName('')
[System.Net.DNS]::GetHostByName($Null)
 

Вы увидите, что этот метод не предназначен строго для поиска имен компьютеров; вы также можете искать IP-адреса через свойство AddressList , как показано ниже.

Использование метода GetHostByName()

Если, однако, вы хотите найти только имя локального компьютера; ссылаться на свойство HostName , и PowerShell вернет только имя хоста.

 [System.Net.DNS]::GetHostByName('').HostName
[System.Net.DNS]::GetHostByName($Null).HostName
 

Использование переменных среды

Переменные среды — это всегда отличное место для поиска информации о компьютерах Windows; использование PowerShell для получения имени компьютера ничем не отличается.

Переменная среды ComputerName

Каждый компьютер Windows хранит переменную среды с именем ComputerName . Как и все другие переменные среды, вы можете получить доступ к пользовательским переменным среды через $env Конструкция PowerShell.

Чтобы сослаться на переменную среды COMPUTERNAME , откройте PowerShell и предварите имя переменной среды $env: . Затем PowerShell вернет имя локального компьютера в виде одной строки.

 $env:ИМЯ КОМПЬЮТЕРА
 

Свойство MachineName

В качестве альтернативы, если по какой-либо причине пользовательская переменная среды COMPUTERNAME не работает в вашей ситуации, вы также можете использовать переменную MachineName свойство, которое является частью класса .NET Environment .

Ссылка на свойство MachineName в классе Environment .NET, как показано ниже.

 [Окружающая среда]:: ИмяМашины
 

Использование WMI

Наконец, у вас всегда есть возможность использовать WMI или CIM. Вы, вероятно, должны сделать это своим последним средством, поскольку оно потребует наибольшего количества накладных расходов, хотя и крошечных. Использование PowerShell для получения имени компьютера с помощью WMI лучше всего подходит для запроса имен удаленных компьютеров.

Если вы хотите использовать WMI для запроса имени локального компьютера, используйте Get-CimInstance для запроса класса Win32_ComputerSystem , как показано ниже. Поскольку Get-CimInstance возвращает не имя компьютера, а объект, представляющий экземпляр CIM, обратитесь к свойству Name , чтобы вернуть только имя компьютера.

 Get-CimInstance-ClassName Win32_ComputerSystem
(Get-CimInstance -ClassName Win32_ComputerSystem).Имя
 

Win32_ComputerSystem Запрос

Поиск имен удаленных компьютеров

Возможно, вы управляете многими компьютерами и вам нужно найти имя хоста для всех из них. Как правило, имя хоста будет представлено в Active Directory (AD), если вы находитесь в такой среде или собраны каким-либо другим инструментом управления активами. Но если это не так, вы всегда можете вернуться к PowerShell.

Чтобы использовать PowerShell для получения имен удаленных компьютеров, у вас есть два варианта. Вы можете либо обернуть методы, которые вы узнали выше, в блок сценария PowerShell Remoting, либо использовать WMI.

Использование PowerShell Remoting

Вместо того, чтобы снова рассматривать каждый метод ранее в этом разделе, просто знайте это. Вы можете обернуть любую локальную команду в блок сценария PowerShell Remoting.

Если, например, на удаленном компьютере включено удаленное взаимодействие PowerShell, вы можете поместить любой из вышеперечисленных методов в блок сценария и выполнить этот блок сценария с помощью команды Invoke-Command .

Предполагая, что у вас есть только IP-адрес и вам нужно найти имя хоста компьютера с IP-адресом 192.168.1.2 и вы не находитесь в среде AD, вызовите Invoke-Command , как показано ниже.

 ## Создайте объект pcredential для передачи в Invoke-Command
$credential = Получить учетные данные
## Запускаем команду на удаленном компьютере
Invoke-Command -ComputerName 192. 168.1.2 -ScriptBlock { [System.Net.Dns]::GetHostName() } -Credential $credential
 

Если PowerShell Remoting удалось подключиться к удаленному компьютеру, PowerShell вернет тот же результат, что и при локальном выполнении этой команды.

Использование WMI

Кроме того, вы также можете использовать WMI для использования PowerShell для получения имени компьютера без необходимости заключать команду в блок сценария. Процесс поиска имени удаленного компьютера почти такой же, как и локально; просто используйте параметр ComputerName .

 Get-CimInstance - имя класса Win32_ComputerSystem - имя компьютера 192.168.1.2
(Get-CimInstance -ClassName Win32_ComputerSystem -ComputerName 192.168.1.2).Имя
 

Get-CimInstance требует аутентификации. Если вы находитесь в среде AD, вам не нужно будет предоставлять какие-либо учетные данные, как показано выше. Однако, если вы не находитесь в среде AD, вам потребуется установить новый сеанс CIM с помощью командлета New-CimSession , использовать Get-CimInstance для использования этого сеанса, а затем самостоятельно удалить сеанс CIM. Ниже приведен фрагмент кода о том, как это сделать.

 ## Создайте объект PSCredential
$credential = Получить учетные данные
## Подключаемся к удаленному компьютеру, передавая кредиты и создавая удаленную сессию
$cimSession = New-CimSession -ComputerName 192.168.1.5 -Учетные данные $учетные данные
## Используйте сеанс для запроса WMI и ссылки на свойство Name
(Get-CimInstance -Session $cimSession -ClassName Win32_ComputerSystem).Имя
 

Дальнейшие действия

Если вы ИТ-специалист и боретесь со слишком большим количеством запросов на сброс пароля в Active Directory, попробуйте Specops uReset, безопасное решение SSPR.

Если вы прочитали весь этот учебник, теперь у вас должны быть почти все самые популярные способы использования PowerShell для получения имени компьютера. Хотя мы, вероятно, пропустили гораздо больше, это все способы выполнения этой задачи во многих скриптах.

Теперь, когда вы знаете, как выполнить эту задачу, попробуйте создать сценарий, который будет получать имена компьютеров в цикле, возможно, через CSV или текстовый файл!

Еще от ATA Learning & Partners

Переименовать компьютер (Microsoft.

PowerShell.Management) — PowerShell | Microsoft Узнайте

Обратная связь

Редактировать

Твиттер

LinkedIn

Фейсбук

Эл. адрес

  • Ссылка
Модуль:
Microsoft.PowerShell.Управление

Переименовывает компьютер.

Синтаксис

 Переименование-Компьютер
      [-ИмяКомпьютера <Строка>]
      [-Пройти через]
      [-DomainCredential ]
      [-LocalCredential ]
      [-НовоеИмя] <Строка>
      [-Сила]
      [-Запустить снова]
      [-WsmanAuthentication ]
      [-Что если]
      [-Подтверждать]
      [<Общие параметры>] 

Описание

Этот командлет доступен только на платформе Windows.

Командлет Rename-Computer переименовывает локальный или удаленный компьютер.
Он переименовывает один компьютер в каждой команде.

Этот командлет появился в Windows PowerShell 3.0.

Примеры

Пример 1: Переименование локального компьютера

Эта команда переименовывает локальный компьютер в Server044 , а затем перезапускает его, чтобы внести изменения
эффективный.

 Rename-Computer -NewName "Server044" -DomainCredential Domain01\Admin01 -Restart 

Пример 2. Переименование удаленного компьютера

Эта команда переименовывает компьютер Srv01 в Server001 . Компьютер не перезагружается.

Параметр DomainCredential указывает учетные данные пользователя, имеющего разрешение на переименование.
компы в домене.

Параметр Force подавляет запрос подтверждения.

 Rename-Computer -ComputerName "Srv01" -NewName "Server001" -DomainCredential Domain01\Admin01 -Force 

Parameters

-ComputerName

-Confirm

-DomainCredential

-Force

-LocalCredential

-NewName

-PassThru

-Restart

-WhatIf

-WsmanAuthentication

Вводы

Нет

Этот командлет не имеет параметров, которые принимают ввод по значению.