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