Я сам не системный администратор, но задаю этот вопрос от имени моего клиента, компании «мама и папа», у которой около 50 компьютеров в сети Windows Server. Они хотят, чтобы их системный администратор мог определять, какие версии NET Framework установлены на компьютерах пользователей, без необходимости обходить каждый рабочий стол и запрашивать реестр каждой машины. Существует ли утилита, которую она может запускать со своего ПК? Или, возможно, существует параметр политики ActiveDirectory, который заставит каждый настольный компьютер в домене сообщать эту информацию о версии обратно в центральный репозиторий, который она может изучить?
Вы можете использовать PowerShell, чтобы определить, какая версия .NET установлена на удаленном компьютере из реестра:
Invoke-Command -Computer "COMPUTER_NAME" -ScriptBlock { gci ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP’ -recurse | gp -name Version -EA 0 | where { $_.PSChildName -match ‘^(?!S)\p{L}’} }
Ваш компьютер должен находиться в том же домене, быть доступным по локальной сети из вашего, чтобы иметь возможность использовать эту команду, а клиент должен включить PSRemoting - это можно сделать, запустив Enable-PSRemoting -Force
. Также вашей учетной записи домена требуются права администратора на удаленных компьютерах, но если это невозможно из-за политики безопасности компании, проверьте это: https://4sysops.com/archives/powershell-remoting-without-administrator-rights/
Также каждый может запустить этот сценарий локально в Powershell и сохранить результаты, например, в C: \ results.txt, как показано ниже:
gci ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP’ -recurse | gp -name Version -EA 0 | where { $_.PSChildName -match ‘^(?!S)\p{L}’} | Out-File C:\results.txt