2

これは正しく動作していないようです

次のスクリプト リソースがあります。

 Script RDGatewayCreateRAP
        {
            SetScript = {
                $localhost = $using:localhost
                $forest = $using:forest
                Import-Module RemoteDesktopServices            
                New-Item -Path 'RDS:/GatewayServer/RAP' -Name 'RAP' -UserGroups "Domain Users@$forest" -ComputerGroupType 1 -ComputerGroup "Domain Computers@$forest"
            }
            GetScript = {
                return @{
                    GetScript = $GetScript
                    SetScript = $SetScript
                    TestScript = $TestScript
                    Result = ""
                }

            }
            TestScript = {
                Import-Module RemoteDesktopServices
                return [boolean](Get-ChildItem 'GatewayServer/RAP')
            }
            DependsOn = "[Script]RDDeploymentGatewayConfiguration"
        }

このスクリプトで構成に Start-DscConfiguration -Wait -Verbose を使用すると、次の場所でエラーが発生します。

VERBOSE: [WIN-EEK1CL8BED9]:                            [[Script]RDGatewayCreateRAP::[cRdsServer]RdsServer] Importing cmdlet '
Convert-License'.
Cannot find path 'C:\Windows\system32\GatewayServer\RAP' because it does not exist.
    + CategoryInfo          : ObjectNotFound: (C:\Windows\system32\GatewayServer\RAP:) [], CimException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
    + PSComputerName        : localhost

これはおそらく、Import-Module RemoteDesktopServices が正しく機能していないため、RDS: パスが見つからないためです。そうは言っても、失敗のすぐ上に、Import-Module RemoteDesktopServices からの詳細なログが発生していることがわかります。

スクリプト リソースを変更して、SetScript、GetScript、および TestScript がすべて新しいプロセスとして powershell を呼び出すようにすると、機能します。

powershell -NoProfile -ExecutionPolicy Bypass -Command "$using:commandStoredAsAString"

Invoke-Command や Invoke-Expression を使うと爆破してしまうので、別プロセスで動かすのがポイントのようです。この種のハックなしでスクリプト リソースを適切に動作させる方法はありますか、それとも役に立たないか実装が不十分なだけですか?

4

1 に答える 1

2

問題は、'Get-ChildItem 'GatewayServer/RAP'' を取得しようとしている TestScript にあります。Import-Module RemoteDesktopServices は正常に動作しています。gatewayServer\RAP の存在を確認する場合は、TestScript の実装を (Test-Path RDS:GatewayServer\RAP) に変更します。スクリプト RDGatewayCreateRAP { SetScript = { $localhost = $using:localhost $forest = $using:forest Import-Module RemoteDesktopServices
#New-Item -Path 'RDS:/GatewayServer/RAP' -Name 'RAP' -UserGroups "Domain Users@$forest" -ComputerGroupType 1 -ComputerGroup "Domain Computers@$forest" } GetScript = { return @{ GetScript = $ GetScript SetScript = $SetScript TestScript = $TestScript Result = "" }

        }
        TestScript = {
            Import-Module RemoteDesktopServices
            return (Test-Path RDS:GatewayServer\RAP)
        }
    }
于 2016-04-14T22:35:24.843 に答える