2012-06-21 106 views
1

我正在編寫一個PowerShell腳本來設置一些HyperV虛擬機,但是有一個步驟我在自動化時遇到了問題。如何選中該框以允許以編程方式從RemoteApp設置進行遠程桌面訪問?以編程方式啓用RemoteApp Full Desktop

enter image description here

我可以設置我所有的自定義的,我需要做

#build the security descriptor so the desktop only shows up for people who should be allowed to see it 
$remoteDesktopUsersSid = New-Object System.Security.Principal.SecurityIdentifier($remoteDesktopUsersGroup.objectSid[0],0) 

#get a copy of the WMI instance 
$tsRemoteDesktop = Get-WmiObject -Namespace root\CIMV2\TerminalServices -Class Win32_TSRemoteDesktop 

#set settings 
$tsRemoteDesktop.Name=$ServerDisplayName 
$tsRemoteDesktop.SecurityDescriptor= "O:WDG:WDD:ARP(A;CIOI;CCLCSWLORCGR;;;$remoteDesktopUsersSid)" 
$tsRemoteDesktop.IconPath = $IconPath 
$tsRemoteDesktop.IconIndex = $IconIndex 

#push settings back to server 
Set-WmiInstance -InputObject $tsRemoteDesktop -PutType UpdateOnly 

但是該WMI對象的實例不存在,直到後你有上面的框檢查。

我試圖使用Set-WmiInstance實例,並在同一時間設置的設置,但我不斷收到這樣的錯誤:

Set-WmiInstance : 
At line:53 char:16 
+ Set-WmiInstance <<<< -Namespace root\CIMV2\TerminalServices -Class Win32_TSRemoteDesktop -Arguments @{Alias='TSRemoteDesktop';Name=$ServerDisplayName;ShowInPortal=$true;SecurityDescriptor=$securityDescriptor} 
    + CategoryInfo   : NotSpecified: (:) [Set-WmiInstance], ArgumentException 
    + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.SetWmiInstance 

(也運行該命令並得到錯誤後,將刪除的Win32_TSRemoteDesktop實例如果它已退出並取消選中屬性設置中的框)

有沒有什麼辦法以編程方式檢查該框或任何人都可以幫助爲什麼Set-WmiInstance會引發該錯誤?

回答

1

如果您正在運行Windows Server 2008 R2,則可以使用Windows PowerShell模塊的遠程桌面服務提供程序。

你可以在technet上閱讀它聽到的是link

我用這個guide滿足我所有的需求。

+0

非常感謝您,我仍然需要使用'Win32_TSRemoteDesktop'來設置'SecurityDescriptor',因爲它們不能從'RDS:'提供程序中獲得,但這非常有幫助。 –

+0

有兩件事我可以發現我無法通過提供者完成,爲RDP-Tcp連接設置lisening端口(當前通過註冊表進行更改),並在RDS:\ RemoteApp \ RemoteDesktopAccess中設置高級設置Name,SecurityDescriptior,IconPath和IconIndex(目前我需要調用WMI對象[Win32_TSRemoteDesktop](http://msdn.microsoft.com/en-us/library/windows/desktop/bb736367%28v=vs.85%29 .aspx)並通過它來設置)有沒有其他地方我可以使用或者我需要做WMI的事情。 –