Комментарии 11
Запросы к удалённому ПК осуществляются командами
Get-WmiObject
,Invoke-Command
и через доступ к папкам по SMB.
Делал подобное несколько лет назад. Но у меня был чуть другой кейс - был список подсетей, которые были в "моей власти", и по всему диапазону ip адресов я проводил сканирование. Если находился комп - сохранял с него подобные сведения, плюс информацию по мониторам (это наверное самое объëмное по коду, и проблемное, когда оказалось что в вин10 поменяли кое-что, и старые методы выташить EDID монитора уже не работают, но обошëл). Сохранял в файл csv, и его прямо в libreoffice calc открывал и сохранял как отдельный лист, на остальных листах - нужные выборки (ну прямо как БД на минималках, но без доп софта).
В процессе развития скрипта и доработок (это немало лет кстати), я выяснил, что часть способов не работает, т.к. где-то по пути маршрутизаторы режут (не моя зона ответственности), а часть не работает, т.к. по умолчанию нужные службы не запущены на компах, да и не везде это можно было настроить. Например, я не использовал совсем invoke-command, не использовал доступ по шарам. Использовал wmi, rpc. И для ряда вещей есть несколько способов получить те же данные, но некоторые работают заметно быстрее, некоторые работают только начиная с win8, какие-то с win7. Но я подобрал почти все команды так, чтобы работало во всех ОС, от winxp до win10, и работало максимально быстро (иначе скрипт пришлось бы ждать довольно долго).
Тоже начинал со сбора информации о железе принтерах и пользователях, затем делал таблицу и по ней находил ПК, на котором сидит звонящий сотрудник, хорошо экономило время, так как почти никто не знает имя ПК и как его посмотреть с системе. Сейчас это уже отдельная программа с GUI, готовлю её к релизу.
Сейчас есть скрипт пробегающий по серверам и на выходе формирует HTML. Выдаёт от кого и какие запускаются службы и задачи в планировщике, список виртуальных машин и активные роли сервера - очень помогло, когда искали где, что и под какими учётками запущено
В моей сети используется VPN и между ПК может быть очень высокая задержка, до 100мс, поэтому добавил Invoke-Command
, чтоб скрипт отрабатывал на удалённом ПК, но если данные не получены, то используется Get-WmiObject
и доступ по SMB. В моей сети ещё не нашёл ПК, где не доступна служба WinRM, а на прошлой работе было большинство таких - видимо это как-то зависит от фобий главного администратора
Тоже попадались приколы с неработающими или отсутствующими командами, в моём случае на Windows 7
Какое счастье иметь SCCM...
Как сие чудо запусьить ? "
C:>start "ScanPC" /D "C:" powershell.exe "a -join """r
n""")"
C:>EXIT /B
"
У вас странно подставился путь, как-будто вы положили файл в корень диска C:
Попробуйте запустить из другой директории или можете открыть powershell.exe
перейти в папку где находится файл ScanPC.cmd
(например cd C:\Users\User\Downloads)
, затем выполнить команду:
$a= Get-Content '.\ScanPC.cmd' -Encoding Oem | Select-Object -Skip 3; Invoke-Expression ($a -join "`r`n")
в переменную $a считается скрипт и запустится командой Invoke-Expression
Или открыть ScanPC.cmd в блокноте, удалить первые две строки, выделить всё, скопировать в буфер обмена, вставить код в окно PowerShell и нажать Enter
Здравствуйте меня звать Иванов Пётр Васильевич и я ищу комп в дамаваре Ivanov_PV, что я делаю не так?
Если вы знаете программы с подобным функционалом, напишите о них в комментариях, особенно если они лучше, возможно я о них просто не знал и потратил время зря :)
Есть (не знаю насколько широко, но) известный комбайн-всё-в-одном на PowerShell - https://lazywinadmin.com/LazyWinAdmin_GUI
Я взял его за основу, форкнул, допилил напильником под нужды своего места работы и успешно использую уже несколько лет:
Принцип работы: по логину пользователя скрипт берет имя ПК из AD (оно у нас пишется туда при каждом логоне). Затем по имени пользователя и ПК скрипт собирает необходимую информацию (верхняя часть окна). Далее нажимаются функциональные кнопки (полоса в середине окна), которые что-то делают, результат их действий выводится в окне вывода ниже кнопок.
Lansweeper все это делает а одном флаконе и скрипты еще позволяет запускать и отчеты делает. Но PowerShell однозначно нужно знать и пользовать.
Утилиты на PowerShell для системных администраторов