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

Обновлено: 07.07.2024

Здесь минимум теории, в основном практическая часть. Описывается как настроить WinRM, как изменить профиль сетевого адаптера, дается скрипт по добавлению в TrustedHosts с фильтрацией, объясняется зачем нужны доверенные хосты, и рассматриваются поверхностно удаленные подключения так чтобы можно было сесть и сразу админить удаленные машины.

для проверки куда можно подключаться используем:

для разрешения подключаться ко всем

Если вы открываете доступ для всех указав * то WinRM будет подключаться ко ВСЕМ машинам без проверки. Помните, что вы открываете самого себя для потенциального взлома из локальной сети. Лучше указывать адреса хостов куда вам нужно подключится, тогда WinRM будет отклонять все остальные адреса или имена. Если машина с которой ведется управление находится в домене она будет доверять всем машинам этого домена. Если она не в домене, или в другом домене, то нужно указать в TrustedHosts адрес или имя машины на которую мы будем подключаться. Добавлять себя на машине к которой мы подключаемся не нужно.

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

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

Есть разница указывать имя или адрес. Если в TrustedHosts будет только адрес то открыть сессию по имени не получится, и наоборот — если указать имя то прицепится по адресу не получится. Учитывайте это.

Часто встречается ссылка на команду

это не тоже самое что Enable-PSRemoting

Enable-PSRemoting делает больше действий чем «winrm quickconfig». Командлет Set-WSManQuickConfig делает точно такие же действия как «winrm quickconfig». Enable-PSRemoting запускает Set-WSManQuickConfig когда ведет настройку системы


Удаленные подключения
1. Сессии 1-to-1
открываются командой

Вы получите оболочку на удаленной машине. Подключится можно к самому себе указав localhost. Альтернативные кредиталы указываются с параметром -Credential, выход происходит командлетом Exit-PSSession

  • нельзя сделать второй прыжок — только 1 сессия, внутри сессии подключиться дальше нельзя
  • вы не можете использовать команды имеющие графический интерфейс. Если вы это сделаете оболочка повиснет, нажмите Ctrl+C чтобы отвисло
  • вы не можете запускать команды имеющие свой собственый шел, например nslookup, netsh
  • вы можете запускать скрипты если политика запуска на удаленной машине позволяет их запускать
  • нельзя прицепится к интерактивной сессии, вы заходите как «network logon», как будто прицепились к сетевому диску. Поэтому не запустятся логон скрипты, и вы можете не получить домашнюю папку на удаленной машине (лишний довод чтобы не мапать хом фолдеры логон скриптами)
  • вы не сможете взаимодействовать с юзером на удаленной машине даже если он туда залогинен. Не получится показать ему окошко или попечатать чтонибудь ему.
Комментарий.
объекты переданные по сети обрезаются и перестают быть живыми. У них удаляются методы, свойства остаются. Вытащить объект на свою машину, поколдовать и засунуть обратно не получится. Если нужно больше пишите, допишу отдельно.

2. Сессии 1-to-many

определяем что будем исполнять так:

передаем на удаленные машины Test1 и Test2

за раз можно забросить на 32 машины. Если альтернативные кредиталы то используем параметр -Credential

Запомним что на той стороне будет новый скоп, так что ваш скрипт не получит значений из вашей консоли, а переменные скрипта могут оказаться на той стороне пустыми. Поэтому передавайте сразу целиком готовые инструкции и скрипты с параметрами.

kuda78
В статье пропущен очень важный момент — передача параметров в скрипт на удаленной машине.

Invoke-Command -Session $session -ScriptBlock $deployRemote -ArgumentList ($targetEnvName, $targetUsername)

Да действительно пропущен. Сделал сознательно чтобы не загромождать обзор параметрами и описаниями. Спасибо. Параметр -ArgumentList работает как со скрипт блоками так и со сценариями

3. Сессии
Это когда с той стороны создается копия пошика постоянно висящая в памяти, и в нее отправляются команды. Как результат к ней можно переподключится, ченить долгое запустить на исполнение, цепляться из разных скриптов или разными юзерами. Например у вас есть набор скриптов решающих одну задачу по частям, каждый из них поочереди может подключатся к одной удаленной сессии, видеть результаты работы предыдущих команд, иметь одни загруженные модули, общие переменные, общее окружение, до тех пор пока сессия не будет принудительно закрыта.

Создание сессии происходит командлетом New-PSSession, результат можно поместить в переменную

использовать можно такие же параметры подключения как в Invoke-Command

Как использовать:
если 1-to-1

посмотреть какие сессии открыты можно с помощью Get-PSSession, закрыть Remove-PSSession
закрыть вообще все сессии

прицепится к сессии можно с помощью Connect-PSSession, отключиться через Disconnect-PSSession

Invoke-Command может создать сразу disconnected сессию, он отправляет команды на исполнение и отключатся, позже можно подключится и сгрузить результаты работы. Делается это параметром -Disconnected. Получение результатов через командлет Recieve-PSSession.

Сессии имеют очень много настроек, возможно даже создание сессий с обрезаным набором команд, модулей и т.п. Называется custom endpoints

AD: Добавление записи в описание компьютера
Здравствуйте, У меня вопрос по Active Directory. Допустим есть некий компьютер test и надо этот.

Меняем интеплетатор (как то так) или просто ассоциация с новым кмд
Нужно сделать так Переименовать Кмд в другое имя -- Готово ассоциировать файлы bat и желательно.

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

меняем IP.
Доброго времени суток!! начал изучать СИ шарп и вот появился вопрос..))) как можно поменять.

получилось фио полностью, только получается "фио " почему пробел стоит? потому что так записано в %temp%\dispname.txt - с завершающим пробелом, попробуйте так

короче заработало вот так:

Добавлено через 2 часа 56 минут
проблема другая возникла - как это все пропустить на всех компах в домене. просто так батник не отрабатывается (( пофиксил комментарий в vbs обозначается '
после выполнения скрипта не фио а логин учетки вставляется тоже работает, но по 2 пробела спереди и сзади от ФИО получается
кстати дополнительно спрошу, а как сделать чтоб к ФИО еще номер телефона оттуда же из учетки писался?

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

Добавлено через 10 минут
Видел так еще сочетают

у меня нет такой утилиты чтобы проверить или самому что-то сделать, она бывает отдельно?

alpap, опять этот dsquery! неужели нет аналога и без него никак?

Добавлено через 10 минут
через runas он заполняет описание админским ФИО

Добавлено через 17 часов 9 минут
вот крутая штука скрипт vbs только "ДНС_имя_домена" свое не забудьте указать
и еще проблемка - у пользователей пишет разрешение отклонено "get object"

Добавлено через 7 часов 12 минут
вот последний вариант без всяких прав

Добавлено через 18 часов 27 минут
в XP не работает - переименовывает так - ИМЯКОМПА$
может запускать надо по другому? сейчас у меня так:

Добавлено через 25 минут
короче это все из-за прав! захожу под собой-админом на XP - скрипт работает, под пользователем нет

Добавлено через 22 часа 27 минут
нифига не работает без прав

новая задача - как запускать и отключать групповую политику по расписанию\через батник и т п?

Конфигурация компьютера
Процессор: I7 10700
Материнская плата: Asus h470-plus
Память: Hyper 32 GB
HDD: Crucial ct1000
Видеокарта: Gigabyte GeForce rtx 260
Блок питания: Thermaltake smart 650 w
Монитор: Samsung U32J592UQU
Ноутбук/нетбук: Lenovo T420s
ОС: W10 x64
Добрый день.
Есть доменная сеть на 2003 сервере.
Есть клиенты ХР SP3.
Однако не у всех клиентов в описании компьютера стоят их Ф.И.О.
Что хочу, в GPO положить скрипт, который менял бы описание компьютера согласно "полному имени" в свойствах учётной записи.
Т.е. кто зашёл в систему, тот и отобразился в описании.
К сожалению у простых пользователей нет прав менять описание, поэтому нужно как-то повысить права.
Где-то я встречал подобный скрипт, но где? не помню.
Спасибо.

-------
Вежливый клиент всегда прав!

Конфигурация компьютера
Процессор: I7 10700
Материнская плата: Asus h470-plus
Память: Hyper 32 GB
HDD: Crucial ct1000
Видеокарта: Gigabyte GeForce rtx 260
Блок питания: Thermaltake smart 650 w
Монитор: Samsung U32J592UQU
Ноутбук/нетбук: Lenovo T420s
ОС: W10 x64

Petya V4sechkin, Iska, прошу прощения. а "слона" я и не заметил.

в продолжении. нужно автоматически заполнять "моё описание".
Но где его брать. Я думаю так же через командную строку:
net ещё в чём-нибудь мне поможет?

-------
Вежливый клиент всегда прав!

Последний раз редактировалось exo, 29-10-2010 в 16:30 .

Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Конфигурация компьютера
Процессор: I7 10700
Материнская плата: Asus h470-plus
Память: Hyper 32 GB
HDD: Crucial ct1000
Видеокарта: Gigabyte GeForce rtx 260
Блок питания: Thermaltake smart 650 w
Монитор: Samsung U32J592UQU
Ноутбук/нетбук: Lenovo T420s
ОС: W10 x64

вот что нашли с коллегой:

его в GPO, дать права на изменения описания осталось.

-------
Вежливый клиент всегда прав!

Я менял (удалённо) через wmi, но стандартный wmic совершенно не переваривал пробелы в описании, в итоге переписал на wsh.

А зачем вообще нужно в описание компьютера проставлять текущего пользователя? - практически весь вменяемый софт для мониторинга и т.п. итак умеет запрашивать залогиненых пользователей.

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

Применяется к: Windows Server 2012 R2
Исходный номер КБ: 934958

Введение

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

Удаленное восстановление является компонентом Pak администратора Winternals.

Дополнительная информация

При неправильном изменении реестра с использованием редактора реестра или другого способа могут случиться серьезные проблемы. Для решения этих проблем может потребоваться переустановка операционной системы. Корпорация Майкрософт не может гарантировать, что эти проблемы можно решить. Вносите изменения в реестр на ваш страх и риск.

Для удаленного редактирования реестра клиентского компьютера должны быть верны следующие условия для клиентского компьютера и для хост-компьютера:

  • Компьютеры должны запускать ту же операционную систему.
  • На компьютерах должен быть установлен один и тот же пакет служб.

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

На хост-компьютере запустите редактор реестра.

Найдите следующий подтрий, а затем выберите его:
HKEY_LOCAL_MACHINE

В меню File выберите Load Hive.

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

Ульй реестра расположен в папке в качестве %Windir%\System32\Config одного из следующих файлов:

  • SAM представляет ульй Sam.
  • SECURITY представляет собой ульй Security.
  • SOFTWARE представляет ульй Software.
  • SYSTEM представляет ульй System.

Выберите Открыть.

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

Изменение ключей реестра.

На шаге 7 можно изменить клавиши реестра, так как они теперь являются частью реестра хост-компьютера.

date

20.12.2019

directory

Active Directory, PowerShell

comments

комментариев 11

Командлет Set-ADComputer позволяет изменить атрибуты учетной записи компьютера в Active Directory. В этой статье мы покажем, как с помощью логон скриптов и командлета Set-ADComputer записать имя текущего пользователя и IP адрес в свойства компьютера в AD. Такой скрипт может быть полезен, когда вам нужно найти в домене компьютер, за которым работает конкретный пользователь.

Использование Set-ADComputer для изменения атрибутов компьютера в AD

Командлет Set-ADComputer входит в состав модуля Active Directory для PowerShell и требует наличие установленного модуля на компьютере. Рассмотрим как пользоваться командлетом Set-ADComputer. Попробуем добавить в свойства компьютера в AD наименование компании и департамента. Сначала с помощью Get-ADComputer проверим, что указано у конкретного компьютера домена в полях company, department и description.

Get-ADComputer dNSHostName,operatingSystem,company,department, description

Get-ADComputer SRV-MAN01 -properties *|select-object dNSHostName,operatingSystem,company,department, description|ft -wrap -auto

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

Попробуем изменить описание компьютера командой:

Set-ADComputer -Identity SRV-MAN01 -Add @

Можно указать местоположение компьютера:

Set-ADComputer –Identity SRV-MAN01–Location “Spb/Russia”

Если нужно задать несколько параметров компьютера, воспользуйтесь такой конуструкцией PowerShell:

$Server = Get-ADComputer -Identity SRV-MAN01
$Server.company = "contoso"
$Server.department = "IT"

Проверим, что атрибуты компьютера изменились:

Get-ADComputer SRV-MAN01 -properties *|select-object dNSHostName,operatingSystem,company,department, description|ft -wrap -auto

Set-ADComputer изменить свойства компьютера в AD

Как вы видите, теперь в атрибутах компьютера содержится нужная нам информация. Теперь мы можем выбирать компьютеры в AD на основе этих критериев. Например, я хочу выбрать все компьютеры департамента IT компании Contoso. Команда для выборки может выглядеть так:

Get-ADComputer -Filter -properties *|select-object dNSHostName,operatingSystem,company,department, description|ft -wrap -auto

Командлет Set-ADComputer также позволяет заблокировать (разблокировать)учетную запись компьютера в AD:

Set-ADComputer pc-name -Enabled $false

Set-ADComputer - заблокировать компьютер

Как добавить имя пользователя в свойства компьютера в AD?

Рассмотрим более интересный и полезный пример использования командлета Set-ADComputer. Допустим, вы решили хранить в атрибутах каждого компьютера в Active Directory его текущий IP адрес и имя последнего залогиненого пользователя.

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

В первую очередь необходимо делегировать права группе Domain Users (или другой группе безопасности пользователей) на OU с компьютерами на изменение значений в полях объктов типа Computer: ManagedBy и description (Write Description + Write Managed By).

делегирование прав Write Description + Write Managed By в AD на компьютеры

Теперь создаем новую политику со следующим Logon скриптом PowerShell (User Configuration -> Policies -> Windows Settings -> Scripts -> Logon), который должен запускаться при входе пользователя в систему:

$curhostname=$env:computername
$env:HostIP = (
Get-NetIPConfiguration |
Where-Object $_.IPv4DefaultGateway -ne $null -and
$_.NetAdapter.Status -ne "Disconnected"
>
).IPv4Address.IPAddress
$currus_cn=(get-aduser $env:UserName -properties *).DistinguishedName
$ADComp = Get-ADComputer -Identity $curhostname
$ADComp.ManagedBy = $currus_cn
$ADComp.description = $env:HostIP
Set-ADComputer -Instance $ADComp

Данный PowerShell скрипт запускается под пользователем, определяет имя и IP адрес текущего компьютера, CN пользователя и сохраняет их в учетной записи компьютера в AD.

Эту политику нужно прилинковать на контейнер с компьютерами и включить замыкание групповой политики Configure user Group Policy Loopback Processing mode (см. здесь).

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

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

имя пользователя в свойствах компьютера ad

Теперь вы можете быстро найти компьютеры в домене по IP адресу:

get-adcomputer -filter -properties *|select name,description,managedBy

Или можно найти все компьютеры в домене, на которых залогинен конкретный пользователь (командлет Get-AdUser испоьзуется для получения DistinguishedName пользователя):

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

поиск компьютеров в ad по имени пользователя

Аналогичным образом вы можете записать в свойства аккаунтов компьютеров в AD любую информацию о рабочей станции или пользователе, и использовать ее для поиска (выборки) компьютеров в AD.

Читайте также: