Как стать автором
Обновить

Комментарии 11

Запросы к удалённому ПК осуществляются командами Get-WmiObjectInvoke-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 "comp=a -join """rn""")"

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

Спасибо разобрался, удобная утилитка. Синтаксис powershell для меня довольно сложный. Добавил порты, на проверку доступности. Но не совсем понятно как выполняется функция PrtChk. Если добавите коментариев к коду будет не лишним.

Здравствуйте меня звать Иванов Пётр Васильевич и я ищу комп в дамаваре Ivanov_PV, что я делаю не так?

Если вы знаете программы с подобным функционалом, напишите о них в комментариях, особенно если они лучше, возможно я о них просто не знал и потратил время зря :)

Есть (не знаю насколько широко, но) известный комбайн-всё-в-одном на PowerShell - https://lazywinadmin.com/LazyWinAdmin_GUI

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

Принцип работы: по логину пользователя скрипт берет имя ПК из AD (оно у нас пишется туда при каждом логоне). Затем по имени пользователя и ПК скрипт собирает необходимую информацию (верхняя часть окна). Далее нажимаются функциональные кнопки (полоса в середине окна), которые что-то делают, результат их действий выводится в окне вывода ниже кнопок.

А есть возможность как-нибудь Вашу версию получить?)

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

Lansweeper все это делает а одном флаконе и скрипты еще позволяет запускать и отчеты делает. Но PowerShell однозначно нужно знать и пользовать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории