09-Windows Server 2012 R2 會話遠程桌面-標準部署-使用PowerShell進行部署2-2

在上一篇的文章中,我討論瞭如何使用 PowerShell 建立了一個基本的遠程桌面服務環境。在那篇文章中,我們討論瞭如何做一個快速的 RDS 部署,添加會話集合和 RemoteApp。在這篇文章我們會潛入深出的來探索PowerShell RDS,看一看我們如何可以更進一步自動化安裝、 配置和維護的遠程桌面服務與 Windows server 2012 R2使用可用的新的 PowerShell 命令。Windows PowerShell是一個基於任務的命令行 shell 和腳本語言,特別是用於系統管理。主要幫助技術 (IT) 專業人員提供在使用Windows PowerShell cmdlet 來編寫腳本和自動執行的任務。在Windows server 2012 R2和Windows 8.1中,powershell的版本爲4.0,在powershell 4.0中,提供了很多Remote Desktop server的命令,若要列出所有可用的 cmdlet,可以使用命令進行查詢,其命令爲:

Get-Command –Module RemoteDesktopServices cmdlet

如果要獲得更多有關信息,或任何這些 cmdlet 的語法,可以使用-Help <cmdlet name> cmdlet,其中< cmdlet 名稱 >是您想要查詢的 cmdlet 名稱。更多詳細信息,可以運行以下 cmdlet 的命令:

● Get-Help <cmdlet name> -Detailed

● Get-Help <cmdlet name> -Examples

● Get-Help <cmdlet name> -Full

除此之外,也可以在微軟的TechNet的網站上進行查詢,其網址爲:

http://technet.microsoft.com/en-us/library/jj215451.aspx

clip_p_w_picpath002

目前Remote Desktop Cmdlets in Windows PowerShell只提供英語服務器,不提供中文的服務。

在使用Windows server 2012 R2中的功能時,必須是需要創建一個集合,這樣才能將RD應用程序或者是RD虛擬化主機進行發佈和使用,在之前的部署中,在使用圖形化界面(GUI)下,安裝RD會話主機或者是RD虛擬化主機時,會自動創建一個集合,例如,在快速部署安裝RD會話主機時,會自動創建一個名爲QuickSessionCollection集合,並且會在集合中默認發佈3個RemoteApp應用,分別是畫圖、寫字板和計算器。但是當使用powershell來進行安裝後,默認情況下是不會創建集合。

clip_p_w_picpath004

如果採用標準部署安裝,或者是使用powershell進行安裝,則需要手動創建一個集合,在powershell中,通過命令New-RDSessionCollection來創建集合。首先我們可以看下命令New-RDSessionCollection的語法。

clip_p_w_picpath006

New-RDSessionCollection [-CollectionName] <String> -SessionHost <String[]> [-CollectionDescription <String> ] [-ConnectionBroker <String> ] [ <CommonParameters>]

語法中包含一些關鍵字,其中有CollectionName、SessionHost、CollectionDescription和ConnectionBroker,如果需要在服務器RDS.mabofeng.com服務器中創建集合名稱爲mabofeng,其命令爲:

PS C:\Users\Administrator> New-RDSessionCollection -CollectionName mabofeng -CollectionDescription mabofeng -SessionHost rds.mabofeng.com -ConnectionBroker rds.mabofeng.com -Verbose

這裏我們將SessionHost和ConnectionBroker建立在同一個服務器中,如果採用的是標準部署,則需要指定不同的SessionHost和ConnectionBroker,如果服務器有多臺SessionHost,可以在SessionHost命令後面加入 @("RDSH01.mabofeng.com"," RDSH02.mabofeng.com"),一次性要全部輸入完成。

clip_p_w_picpath008

當執行完成命令後,可以在powershell中會顯示創建集合的結果。

clip_p_w_picpath010

在圖形界面下,就可以看到我們之前使用powershell命令創建的名爲mabofeng的集合。

clip_p_w_picpath012

在使用powershell命令New-RDSessionCollection創建集合的時候,難免會遇到一些問題,在執行命令的時候往往會報錯,例如,可能出現錯誤提示爲:無法將“New-RDSessionCollonCollection”項識別爲cmdlet、函數、腳本文件或可運行程序的參數,請檢查名稱的拼寫,如果包括路徑,請確保路徑的正確,然後再試一次。遇到這情況,往往是由於在使用powershell的安裝Remote desktop Server之前,沒有在Windows Server 2012R2中導入新的RemoteDestop 模塊組,在使用New-RDSessionCollection命令之前,首先需要使用命令爲:import-module RemoteDesktop。

clip_p_w_picpath014

在使用powershell命令New-RDSessionCollection創建集合的時候,遇到的另一個問題就是,可能出現錯誤提示爲:找不到接收實際參數“Session”的位置形式參數,這往往是由於拼寫的不正確所造成的,在CollectionDescription的描述中,儘量不要使用空格,如果一旦使用空格,建議在CollectionDescription中加入雙引號,否則會造成拼寫錯誤。

clip_p_w_picpath016

如果在建立集合的時候提示Unable to configure the RD Session Host Server servername. Invalid Operation(無法配置RD會話主機服務器服務器。無效的操作)這是由於計算機域控制器環境中設置了策略。

clip_p_w_picpath018

以管理員的帳號登錄域控制器中,在域策略中default Domain Policy策略中,找到策略-管理模版-Windows組件-遠程桌面服務-遠程桌面會話主機-授權。

clip_p_w_picpath019

在授權的策略中找到使用指定的遠程桌面許可證服務器,將此策略設置爲禁用,然後通過刷新策略命令進行刷新,然後再次運行創建集合命令。

clip_p_w_picpath021

刪除集合

當我們不需要某個集合的時候,我們可以通過Remove-RDSessionCollection命令來刪除集合,可以通過powershell來查詢命令的語法。

clip_p_w_picpath023

Remove-RDSessionCollection [-CollectionName] <String> [-ConnectionBroker <String> ] [-Force] [-Confirm] [-WhatIf] [ <CommonParameters>]

如果我們要刪除名稱爲mabofeng的集合,則使用命令爲:

Remove-RDSessionCollection -CollectionName mabofeng -ConnectionBroker RDS.mabofeng.com

其中需要指定集合的名稱和ConnectionBroker服務器名稱。在運行命令後,系統會提示時候繼續執行此操作,默認爲Y,如圖所示。

clip_p_w_picpath025

輸入Y,然後回程後,系統會開始刪除集合,集合中的RemoteApp則無法使用,刪除結束後,無需啓動計算機。

clip_p_w_picpath027

創建一個基於虛擬機的集合

對於VDI環境,我們也可以以同樣的當時創建虛擬機集合,在powershell中,可以使用命令New-RDVirtualDesktopCollection來創建虛擬機集合,但是使用powershell來創建虛擬機集合,在前期的工作中是需要做好充足的準備。虛擬桌面就是在hyper-v主機上運行虛擬機,用戶可以使用RDS直接進行遠程連接,虛擬桌面集合可以包含一個或者多個虛擬桌面,主要用在VDI部署場景中,虛擬桌面可以是以管理的,也可以是未經管理的。

在虛擬機集合中,虛擬桌面可以是池化的,或者是個人的,池化虛擬桌面這種類型可供用戶登錄到池中的任何一個虛擬桌面,獲得相同的體驗,用戶在虛擬桌面中進行的任何自定義改動都可以保存到專用的用戶配置文件磁盤中。而個人虛擬桌面着這種類型會將專用虛擬桌面永久分配給某一用戶賬戶,每次用戶登錄時,都能看到相同的虛擬桌面,左面可以安裝需要進行定製,所有定製改動都會保存到虛擬桌面中。

所以在使用powershell命令去創建虛擬機集合,是需要大量的前期準備,這包括需要在虛擬機集合的服務器中,安裝Hyper-V角色和遠程桌面服務,然後需要安裝模版虛擬機,調優優化,並進行分裝,最後還需要共享空間。

首先我們先看下New-RDVirtualDesktopCollection命令的語法:

Parameter Set: PersonalMgd

New-RDVirtualDesktopCollection [-CollectionName] <String> -PersonalManaged -StorageType <VirtualDesktopStorageType> -VirtualDesktopAllocation <Hashtable> -VirtualDesktopTemplateHostServer <String> -VirtualDesktopTemplateName <String> [-AutoAssignPersonalVirtualDesktopToUser] [-CentralStoragePath <String> ] [-ConnectionBroker <String> ] [-CustomSysprepUnattendFilePath <String> ] [-Description <String> ] [-Domain <String> ] [-Force] [-GrantAdministrativePrivilege] [-LocalStoragePath <String> ] [-OU <String> ] [-UserGroups <String[]> ] [-VirtualDesktopNamePrefix <String> ] [ <CommonParameters>]

Parameter Set: PersonalUnmgd

New-RDVirtualDesktopCollection [-CollectionName] <String> -PersonalUnmanaged -VirtualDesktopName <String[]> [-AutoAssignPersonalVirtualDesktopToUser] [-ConnectionBroker <String> ] [-Description <String> ] [-Force] [-GrantAdministrativePrivilege] [-UserGroups <String[]> ] [ <CommonParameters>]

Parameter Set: PooledMgd

New-RDVirtualDesktopCollection [-CollectionName] <String> -PooledManaged -StorageType <VirtualDesktopStorageType> -VirtualDesktopAllocation <Hashtable> -VirtualDesktopTemplateHostServer <String> -VirtualDesktopTemplateName <String> [-CentralStoragePath <String> ] [-ConnectionBroker <String> ] [-CustomSysprepUnattendFilePath <String> ] [-Description <String> ] [-DisableVirtualDesktopRollback] [-Domain <String> ] [-Force] [-LocalStoragePath <String> ] [-MaxUserProfileDiskSizeGB <Int32> ] [-OU <String> ] [-UserGroups <String[]> ] [-UserProfileDiskPath <String> ] [-VirtualDesktopNamePrefix <String> ] [-VirtualDesktopPasswordAge <Int32> ] [-VirtualDesktopTemplateStoragePath <String> ] [ <CommonParameters>]

Parameter Set: PooledUnmgd

New-RDVirtualDesktopCollection [-CollectionName] <String> -PooledUnmanaged -VirtualDesktopName <String[]> [-ConnectionBroker <String> ] [-Description <String> ] [-Force] [-MaxUserProfileDiskSizeGB <Int32> ] [-UserGroups <String[]> ] [-UserProfileDiskPath <String> ] [ <CommonParameters>]

New-RDVirtualDesktopCollection命令的語法有4中模式,有PersonalMgd、PersonalUnmgd、PooledMgd和PooledUnmgd,就是個人託管桌面、個人非託管桌面、池化託管桌面和池化非託管桌面。

其中參數包括:

-AutoAssignPersonalVirtualDesktopToUser:當創建一個新的個人虛擬桌面集合時,該服務器會自動將虛擬桌面關聯與用戶帳戶。

-CentralStoragePath:指定集合中的虛擬桌面的中央存儲位置的路徑。使用StorageType參數指定的存儲 (本地或集中式) 集合類型。

-CollectionName:指定個人的虛擬桌面集合的名稱。

-ConnectionBroker:指定遠程桌面部署的遠程桌面連接代理 (RD 連接代理) 服務器。如果不指定一個值,該 cmdlet 將使用本地計算機的完全限定的域名稱 (FQDN)。

-CustomSysprepUnattendFilePath:提供無人蔘與的安裝設置遠程桌面收集的.xml 文件的路徑。

-Description:指定無人蔘與的安裝文件的描述性名稱。

-DisableVirtualDesktopRollback:指示服務器禁止虛擬桌面部署的回滾。

-Domain:添加虛擬桌面的 Active Directory 域的指定完全限定的域名 (FQDN)。

-Force:運行操作而不會提示用戶進行確認。

-GrantAdministrativePrivilege:指示服務器授予管理權限的用戶帳戶,則服務器將分配到某個給定的個人虛擬桌面。此參數僅適用於個人虛擬桌面。

-LocalStoragePath:指定對虛擬桌面的本地存儲位置的路徑。使用StorageType參數指定的存儲此集合類型。

-MaxUserProfileDiskSizeGB:指定用戶配置文件磁盤的最大大小 (以千兆字節)。

-VirtualDesktopAllocation:指定的值的集合 (鍵 = 值對),分配給遠程桌面虛擬化 (RD 虛擬化主機) 服務器的虛擬桌面。

-VirtualDesktopName:指定的虛擬桌面將添加到非託管的集合的名稱。

-VirtualDesktopNamePrefix:指定在託管的虛擬桌面集合中自動創建遠程桌面服務的虛擬桌面名稱的前綴。

-VirtualDesktopPasswordAge:指定的天數後,服務器強制執行密碼更新。

-VirtualDesktopTemplateHostServer:指定與該集合關聯的虛擬桌面模板的存儲位置的服務器的完全限定的域名 (FQDN)。

-VirtualDesktopTemplateStoragePath:指定的模板的虛擬桌面集合的存儲位置的路徑。

接下來,我們就來使用New-RDVirtualDesktopCollection命令創建一個託管池虛擬桌面集合,並指定虛擬桌面集合的配置設置。

PS C:\Users\Administrator> PS C:\> New-RDVirtualDesktopCollection -CollectionName Virtual Desktop Pool -PooledManaged -VirtualDesktopTemplateName RDS-Template -VirtualDesktopTemplateHostServer hyper-v01.mabofeng.com -VirtualDesktopAllocation @{"hyper-v01.mabofeng.com"=1;" hyper-v02.mabofeng.com"=2} -StorageType LocalStorage -Description "mabofeng Virtual Desktop Pool" -UserGroups "mabofeng\domain users" -ConnectionBroker "rdcb.mabofeng.com" -VirtualDesktopNamePrefix "mabofeng-A" -VirtualDesktopPasswordAge 31 -UserProfileDiskPath "\\RDS.mabofeng.com\uvhd" -MaxUserProfileDiskSizeGB 10

如果需要刪除擬桌面集合,則可以使用命令Remove-RDVirtualDesktopCollection,相比創建桌面集合,刪除還是比較簡單了,只需要知道集合的名稱(CollectionName)和遠程桌面連接代理(ConnectionBroker)就可以了。

Parameter Set: Default

Remove-RDVirtualDesktopCollection [-CollectionName] <String> [-ConnectionBroker <String> ] [-Force] [-Confirm] [-WhatIf] [ <CommonParameters>]

例如,我們刪除名爲Virtual Desktop Pool的虛擬桌面集合,其命令爲:

PS C:\Users\Administrator> PS C:\> Remove-RDVirtualDesktopCollection -CollectionName Virtual Desktop Pool -ConnectionBroker rdcb.mabofeng.com -Force

注意,在刪除桌面集合之前,確保集合中的虛擬機已經關機,否則會造成無法刪除的情況。

創建 Remoteapp

RemoteDesktop PowerShell 模塊還具有創建、更新和刪除Remoteap的能力。一個 PowerShell 命令可以從指定的集合和 RD 連接代理檢索 Remoteapp 和它們的屬性。此 cmdlet 是Get-RDRemoteApp。例如,要檢索所有 Remoteapp 可以使用下面的命令。

PS C:\Users\Administrator> Get-RDRemoteApp -CollectionName quicksessioncollection -ConnectionBroker rds.mabofeng.com

使用Get-RDRemoteApp檢索命令可以看到目前已經發布的應用程序。

clip_p_w_picpath029

通過powershell命令發佈應用程序,則需要使用New-RDRemoteApp命令,此命令是將Windows server 2012 R2中的應用程序發佈到遠程桌面部署的 RemoteApp 程序。其語法如下:

New-RDRemoteApp

Parameter Set: Session

New-RDRemoteApp [-CollectionName] <String> -DisplayName <String> -FilePath <String> [-Alias <String> ] [-CommandLineSetting <CommandLineSettingValue> ] [-ConnectionBroker <String> ] [-FileVirtualPath <String> ] [-FolderName <String> ] [-IconIndex <String> ] [-IconPath <String> ] [-RequiredCommandLine <String> ] [-ShowInWebAccess <Boolean> ] [-UserGroups <String[]> ] [ <CommonParameters>]

Parameter Set: VirtualDesktop

New-RDRemoteApp [-CollectionName] <String> -DisplayName <String> -FilePath <String> -VirtualDesktopName <String> [-Alias <String> ] [-CommandLineSetting <CommandLineSettingValue> ] [-ConnectionBroker <String> ] [-FileVirtualPath <String> ] [-FolderName <String> ] [-IconIndex <String> ] [-IconPath <String> ] [-RequiredCommandLine <String> ] [-ShowInWebAccess <Boolean> ] [-UserGroups <String[]> ] [ <CommonParameters>]

New-RDRemoteApp的語法中包含2個部分,一個是在集合中創建RemoteApp應用程序,另一個部分是虛擬桌面環境中創建應用程序。RemoteApp 允許運行遠程顯示的程序,如果它本地運行在客戶端計算機上的遠程桌面服務 (RDS)。RemoteApp 程序在其自己可調整大小的窗口中運行,並在任務欄上有自己的條目。其參數包括:

-Alias:指定的別名的 RemoteApp 程序。如果您不指定一個別名,該 cmdlet 將生成一種基於文件路徑參數。此別名內必須是唯一集合名稱參數所指定的集合。

-CollectionName:指定的個人虛擬桌面集合或會話集合的名稱。此 cmdlet 將 RemoteApp 程序發佈到此集合。

-CommandLineSetting:指定是否在連接時的 RemoteApp 程序接受來自客戶端的命令行參數。

-ConnectionBroker:指定遠程桌面部署的遠程桌面連接代理 (RD 連接代理) 服務器。如果你不指定一個值,該 cmdlet 將使用本地計算機的完全限定的域名稱 (FQDN)。

-DisplayName:指定要顯示給用戶的 RemoteApp 程序的名稱。

-FilePath:指定應用程序的可執行文件的路徑。不包括任何環境變量。對於會話集合,此路徑必須是有效的本地路徑集合中的所有遠程桌面會話主機 (RD 會話主機) 服務器上。對於虛擬桌面集合,此路徑必須是集合中的所有虛擬臺式機上有效的本地路徑。

-FileVirtualPath:指定應用程序的可執行文件的路徑。此路徑將解析到相同的位置的文件路徑參數的值,但是它可以包含環境變量。

-FolderName:爲訂閱 RemoteApp 和桌面連接,遠程桌面 Web 訪問 (RD Web 訪問) 網頁上,在開始菜單中指定 RemoteApp 程序中顯示的文件夾的名稱。

-IconIndex:指定的索引 (由IconPath參數指定) 的圖標文件中可以找到的 RemoteApp 程序圖標的位置。

-IconPath:指定包含要顯示的別名參數標識的 RemoteApp 程序的圖標的文件的路徑。此路徑不能包含任何環境變量。對於會話集合,路徑必須是有效的本地路徑集合中的所有 RD 會話主機服務器上。對於虛擬桌面集合,路徑必須是集合中的所有虛擬臺式機上有效的本地路徑。

-RequiredCommandLine:指定一個字符串,包含客戶端在連接時使用 RemoteApp 程序可以使用的命令行參數。如果指定此參數, CommandLineSetting參數必須具有一個值的要求。

-ShowInWebAccess:指定是否顯示的 RemoteApp 程序和 RemoteApp 和桌面連接,用戶訂閱中的 RD Web 訪問服務器。

-UserGroups:指定的域組和用戶可以在 RD Web訪問, RemoteApp 和桌面連接,並查看 RemoteApp 的數組。若要允許所有用戶看到 RemoteApp 程序,則需要提供$Null 的值。

-VirtualDesktopName:指定名稱的虛擬桌面。在IconPath參數中指定的圖標文件駐留在此虛擬桌面。虛擬桌面必須集合名稱參數所指定的集合中的成員。

接下來我們在已經建立的集合中發佈記事本應用程序,首先要知道記事本在Windows server 2012 r2中位置C:\Windows\system32\notepad.exe,並要在哪個集合進行發佈,然後使用命令爲:

PS C:\Users\Administrator> new-rdremoteapp -Alias 記事本 -DisplayName 記事本 -FilePath "C:\Windows\system32\notepad.exe" -ShowInWebAccess 1 -collectionname quicksessioncollection -ConnectionBroker rds.mabofeng.com

輸入命令後,會有一個發佈的過程,如圖所示。

clip_p_w_picpath031

最後,系統會顯示一個狀態,會顯示命令完成時輸入創建的詳細信息。

clip_p_w_picpath033

當我們在圖形化界面中,服務器管理器中刷新服務器管理器控制檯時我們看到成功添加的 RemoteApp。

clip_p_w_picpath034

查詢應用

當我們在服務中安裝了大量應用,發佈的時候很難找到正確的應用路徑,在圖形界面下,當發佈應用時,在發佈嚮導中會列出所有的應用程序,如果沒有則需要手動添加,但是在powershell中就可通過命令Get-RDAvailableApp來查找應用程序和路徑,使用命令爲:

Get-RDAvailableApp -ConnectionBroker rds.mabofeng.com

當執行命令後,會要求輸入羣集的名稱,也可在命中添加CollectionName參數,最後powershell中會顯示所有的可發佈的RemoteApp程序。

clip_p_w_picpath036

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章