-
Getting a list of registered PS repos
Get-PSRepository
Register a repo on the file share
[string]$repoPath = '\\fileserver\hiddenShare$\PSModules'
[string]$repoName = 'TemporaryLocalRepo'
Register-PSRepository -Name $repoName -SourceLocation $repoPath -PublishLocation $repoPath -ScriptSourceLocation $repoPath -ScriptPublishLocation $repoPath -InstallationPolicy Trusted -PackageManagementProvider NuGet
-
Publish your module
It would be better if this repository was also registered on the developer's computer. But you may just specify the share path. Like here: https://docs.microsoft.com/ru-ru/powershell/scripting/gallery/how-to/working-with-local-psrepositories You need to have NuGet on the developer or publisher machine, or on a node of your CI system (e.g. Jenkins). Run:
Publish-Module -Path <path to the root directory of your module> -Repository $repoName -NuGetApiKey 'none'
-
Find and install the module on client computers:
Find-Module $moduleName -Repository $repoName | Install-Module
-
You can write a PS script, that checks if your repository is registered, and assign this script as startup script via GPO. Do not forget about PowerShell execution policy!
You may use script like this and either deploy it with GP preferences and add to the Task Sheduler, or set it as a startup script. And again: do not forget about PowerShell execution policy!
Необходимо решить задачу контроля и мониторинга обновления пользовательских рабочих станций (PC) и терминальных машин. Предполагается, что учётная запись, под которой будет решаться задача, имеет права администратора на целевых PC и WSUS, а также возможно создание групповой политики AD. Задача разбита на 3 части которые можно решать по отдельности или вместе.
-
Сбор информации
- получить из ветки AD список PC;
- сформировать отчёт, который будет включать в себя:
- имя PC;
- имена пользователей;
- дату последнего установленного обновления;
- кол-во доступных для установки обновлений;
- статус "Pending for reboot" если обновления установлены и ожидается перезагрузка;
- адрес WSUS сервера;
- дата последней синхронизации с WSUS.
-
Уведомление пользователей и контроль:
- если на PC доступны обновления для установки, необходимо, в рабочее время, вывести пользователю всплывающее окно с сообщением вида «Необходимо выполнить установку критических обновлений и обновлений безопасности»;
- если на PC установлены обновления в состоянии "Pending for reboot" , необходимо, в рабочее время, вывести пользователю всплывающее окно с сообщением вида "для завершения установки обновлений";
- если пользователь в течении 3-х рабочих дней не выполнил установку и перезагрузку, то должно появиться сообщение с указанием даты установки обновлений и перезагрузки в автоматическом режиме;
- количество таких сообщений желательно добавить в отчёт.
-
Автоматический ребут:
- выполнить перезагрузку PC в состоянии "Pending for reboot" при просрочке перезагрузки более 3-х дней;
- необходимо выполнить автоматическую установку при просрочке более 3-х дней.
На выходе хотелось бы видеть один или несколько PowerShell скриптов/модулей которые позволяют решить задачу полностью или частично. Групповую политику можно описать отдельно. Комментарии будут плюсом.