Powershell имя компьютера: Получаем через Powershell имя компьютера
Содержание
Как изменить имя компьютера в Windows 10
В данной статье показаны действия, с помощью которых можно изменить имя компьютера (переименовать компьютер) в операционной системе Windows 10.
Операционная система Windows 10 по умолчанию генерирует имя компьютера, однако при необходимости можно его изменить. Прежде всего изменение имени компьютера позволит проще идентифицировать его, особенно если речь идет о персональных компьютерах или ноутбуках в сети организации (т.е. в сети вы будете видеть имя и понимать, что это за компьютер).
Чтобы изменить имя компьютера, необходимо войти в систему с правами администратора.
При переименовании компьютера нельзя использовать кириллицу, некоторые специальные символы и знаки препинания.
Если вы ранее включили автоматический вход в систему, то временно отключите его, и после изменения имени компьютера и перезагрузки, при необходимости включите автоматический вход в систему. В противном случае иногда возможны проблемы, связанные с появлением новых учетных записей с тем же именем.
Содержание
- Как изменить имя компьютера в приложении «Параметры Windows»
- Как переименовать компьютер в окне «Свойства системы»
- Как изменить имя компьютера в командной строке
- Как изменить имя компьютера в 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 Узнайте
Обратная связь
Редактировать
Твиттер
Фейсбук
Эл. адрес
- Ссылка
- Модуль:
- 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
Вводы
Нет
Этот командлет не имеет параметров, которые принимают ввод по значению.