PowerShell - Меняем адрес подключения в RDP файлах пользователя

imageПосле того как новая ферма 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 также соответственно с выполнением в контексте вошедшего в систему пользователя.

Всего комментариев: 9 Комментировать

  1. eleytan /

    "либо «заворачиваем» как программу для SCCM также соответственно с выполнением в контексте вошедшего в систему пользователя"

    Интересен процесс создания такой задачи....
    Как выполнить через SCCM запуск программы только в течение загрузки ПК в течение логирования пользователя?

    1. Виталий Якоб /

      Но зачем такие сложности?
      Скрипт выполнит CCM когда "увидит" в системе пользователя.
      На мой взгляд выполнить в контексте рядового пользователя что-либо когда ОС только загружается -- не представляется возможным. Если конечно, этот пользователь не System. :)

      1. Алексей Максимов /

        Может быть eleytan имел виду пошаговое описание того как именно в SCCM "вкорячить" этот скрипт...

        1. eleytan /

          Алексей, и это (описание того как ипсользовать скрипт в SCCM) тоже имел в виду :)

        2. Eugene Leitan /

          Спасибо, Алексей!

          Но почему то не приходят оповещения на комментарии к заметке в блоге...

          1. Алексей Максимов / Автор записи

            Попробую проверить. В качестве альтернатвы вы можете подписаться на RSS-ленту обновления комментариев (ссылка в правой панели навигации в разделе "Подписка на блог") или если есть какие-то вопросы для обсуждения - регистрируйтесь на нашем форуме http://forum.it-kb.ru)

      2. eleytan /

        Это не сложность, а необходимость выполнить действия до запуска приложений пользователем.

  2. Обратная ссылка: Распространение и выполнение сценариев PowerShell с помощью System Center 2012 Configuration Manager | vMind.ru /

Добавить комментарий