После того как новая ферма RDS развернута и протестирована, и мы готовы к тому, чтобы перенаправить всех пользователей на эту ферму, - может возникнуть необходимость автоматизации процесса замены адреса подключения в RDP-файлах, сохранённых на рабочих столах пользователей. Задача может усложниться тем, что у разных пользователей прежние адреса подключений могут быть указаны по разному, например у кого-то указано FQDN имя, у кого-то - NetBIOS имя, а где-то вообще - IP-адрес.
Вот пример PowerShell скрипта, в котором в качестве переменных укажем новый адрес подключения и все возможные старые адреса и выполним соответствующую замену во всех найденных RDP-файлах на рабочем столе пользователя.
# $NewString - Строка адреса подключения которую хотим установить # $OldString - Массив вариантов старых значений строк адреса подключения, которые хотим заменить на $NewString # $NewString = "full address:s:KOM-AD01-RDSNLB.HOLDING.COM" $OldStrings = @( ` "full address:s:KOM-AD01-TS02.HOLDING.COM", ` "full address:s:KOM-AD01-SRV-RDSH.HOLDING.COM", ` "full address:s:KOM-AD01-TS02", ` "full address:s:KOM-AD01-SRV-RDSH", ` "full address:s:10.160.0.140" ) # $DesktopPath = [Environment]::GetFolderPath("Desktop") $RDPFiles = Get-ChildItem -Path $DesktopPath -Recurse -Include *.RDP Write-Host "Всего найдено RDP-файлов:" $RDPFiles.Count -ForegroundColor Green $Changed = 0 ForEach ($RDPFile in $RDPFiles) { $FileChanged = 0 $LinesArray = Get-Content $RDPFile $LinesCount = $LinesArray.Count For($i=0; $i -lt $LinesCount; $i++){ ForEach ($OldString in $OldStrings) { If ($LinesArray[$i] -like $OldString) { $LinesArray[$i] = $LinesArray[$i] -replace $OldString, $NewString Write-Host "Изменяем файл:" $RDPFile.FullName "`nстрока" $i "принимает значение:" $LinesArray[$i] "`n" -ForegroundColor Gray $FileChanged = 1 } } } If ($FileChanged -eq 1) { $LinesArray > $RDPFile $Changed = $Changed + 1 } } Write-Host "Изменено RDP-файлов:" $Changed -ForegroundColor Green
Скрипт распространяем на компьютеры пользователей либо как logon-скрипт через раздел групповых политик User Configuration, либо "заворачиваем" как программу для SCCM также соответственно с выполнением в контексте вошедшего в систему пользователя.
"либо «заворачиваем» как программу для SCCM также соответственно с выполнением в контексте вошедшего в систему пользователя"
Интересен процесс создания такой задачи....
Как выполнить через SCCM запуск программы только в течение загрузки ПК в течение логирования пользователя?
Но зачем такие сложности?
Скрипт выполнит CCM когда "увидит" в системе пользователя.
На мой взгляд выполнить в контексте рядового пользователя что-либо когда ОС только загружается -- не представляется возможным. Если конечно, этот пользователь не System. :)
Может быть eleytan имел виду пошаговое описание того как именно в SCCM "вкорячить" этот скрипт...
Алексей, и это (описание того как ипсользовать скрипт в SCCM) тоже имел в виду :)
Вот кратенько: https://blog.it-kb.ru/2013/09/25/deploy-and-execute-powershell-scripts-with-system-center-2012-configuration-manager-sccm-configmgr-package/
Спасибо, Алексей!
Но почему то не приходят оповещения на комментарии к заметке в блоге...
Попробую проверить. В качестве альтернатвы вы можете подписаться на RSS-ленту обновления комментариев (ссылка в правой панели навигации в разделе "Подписка на блог") или если есть какие-то вопросы для обсуждения - регистрируйтесь на нашем форуме http://forum.it-kb.ru)
Это не сложность, а необходимость выполнить действия до запуска приложений пользователем.
Обратная ссылка: Распространение и выполнение сценариев PowerShell с помощью System Center 2012 Configuration Manager | vMind.ru /