Рейтинг:1

Автоматизация полного развертывания сеанса удаленного рабочего стола с помощью powershell

флаг sg

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

Не удалось создать политику авторизации ресурсов удаленного рабочего стола на <имя компьютера>. Ошибка
Ссылка на объект не указывает на экземпляр объекта. Дополнительные сведения см. в журнале событий на сервере шлюза удаленных рабочих столов.

Я не вижу ничего ни в одном из журналов, которые помогли бы мне решить эту проблему.

Если я перейду к диспетчеру серверов и добавлю его через этот пользовательский интерфейс: введите описание изображения здесь

Все работает так, как ожидалось. Требуются ли дополнительные шаги для выполнения этой работы?

Вот скрипт, который сейчас работает (EC2, пользовательские данные):

<powershell>
try {
    $SecretAD = "SuperSecretSauceSuzzySaid"
    $SecretObj = (Get-SECSecretValue -SecretId $SecretAD)
}catch {
    Write-Output 'Failed to get Secret'
    return
}
$sys = Get-WmiObject -Class Win32_ComputerSystem

if ( -Not ($sys.PartOfDomain))
{
    Write-Output "Not A domain member yet. Joining..."
    [PSCustomObject]$Secret = ($SecretObj.SecretString  | ConvertFrom-Json)
    $password = $Secret.password | ConvertTo-SecureString -asPlainText -Force
    $username = $Secret.username
    $credential = New-Object System.Management.Automation.PSCredential($username, $password)
    Write-Output "Starting Domain Join and Restarting"
    Add-Computer -DomainName "6565.fake.com" -Credential $credential -Restart -Force
    Write-Output "Initiating restart..."
}


Try {
    $process = (Get-NetAdapterBinding -InterfaceAlias "Ethernet" -ComponentID ms_tcpip6).Enabled
    If ($process.toString() -ne "False"){
        Get-NetAdapterBinding –InterfaceAlias "Ethernet"
        Disable-NetAdapterBinding –InterfaceAlias "Ethernet" –ComponentID ms_tcpip6
        Write-Output "Disabled ipv6"
        Import-Module RemoteDesktop
        Add-WindowsFeature –Name RDS-RD-Server –IncludeAllSubFeature
        Write-Output "Restarting..."
        Restart-Computer -Force
    }
    Start-Sleep 200
    $installed = (Get-WindowsFeature RDS-RD-Server).Installed

    If ($installed.toString() -eq "True"){
        $broker = (Get-WindowsFeature RDS-Connection-Broker).Installed
        If ($broker.toString() -eq "False"){
            $ErrorActionPreference = 'SilentlyContinue'
            Write-Output "Installing the new session deployment"
            New-RDSessionDeployment -ConnectionBroker "$env:COMPUTERNAME.6565.fake.com" -SessionHost "$env:COMPUTERNAME.6565.fake.com"
            Write-Output "Restarting..."
            Restart-Computer -Force
        }
    }
    Start-Sleep -Seconds 100
    New-RDSessionCollection  -CollectionName QuickSessionCollection -SessionHost "$env:COMPUTERNAME.6565.fake.com"  -CollectionDescription "POR Stuff"  -ConnectionBroker "$env:COMPUTERNAME.6565.fake.com"
    Write-Output "Installing Gateway with managnent tools"
    Add-WindowsFeature -Name RDS-Gateway -IncludeManagementTools -ComputerName $env:COMPUTERNAME
    Start-Sleep -Seconds 100
    Add-RDServer -Server "$env:COMPUTERNAME.6565.fake.com" -Role "RDS-GATEWAY" -ConnectionBroker "$env:COMPUTERNAME.6565.fake.com" -GatewayExternalFqdn "6565.fake.com"
    Add-RDServer -Server "$env:COMPUTERNAME.6565.fake.com" -Role "RDS-LICENSING" -ConnectionBroker "$env:COMPUTERNAME.6565.fake.com"
} Catch [System.Exception] {
    Write-Output "Failed"
    Write-Output "Failed to install RD Gateway components $_"
    Exit 0
}
</powershell>
<persist>true</persist>
Рейтинг:0
флаг ar

Я предполагаю, что не существует компьютера с именем вашего шлюза. Я думаю, что после $sys = Get-WmiObject-Класс Win32_ComputerSystem вы получаете нулевой $sys.

Попробуйте отладить свой скрипт с помощью таких инструментов, как идея PowerShell.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.