當我嘗試自動將網域群組新增至本機管理員時,我在工作站安裝腳本中遇到了以下 catch22。
我遇到的問題如下:
- 當我使用本機管理員時,我有權將使用者新增至本機群組,但需要提供網域憑證才能連接到網域
- 當我使用網域使用者時,我可以連線到 AD,但執行此操作的使用者還不是本機管理員,因此我還無法修改本機群組。
我處於 GMP 環境中,所以規則和規定是! strict 限制了其他可能的路徑。
- 角色被分割,因此我無權訪問網域管理員。
- 不允許對 OU 進行任何更改,否則可能會導致群組退出群組原則
- 不允許將 PowerShell 與遠端腳本一起使用
使用 compmgmt.msc 時,手動解決這一問題相當容易,並在詢問時提供必要的憑證…但我想避免添加手動步驟,而盡可能自動化整個安裝。
一些細節:
- 工作站的作業系統是Windows 10
- 我使用的腳本是PowerShell
- 此腳本使用具有提升權限的本機管理員帳戶執行
- 此工作站已加入網域
- 用於將工作站加入網域的帳戶不是網域管理員
- 要擁有我的網域帳戶的管理員權限,我需要將我們部門的群組新增至本機管理員群組
我用來將群組新增至本機管理群組的程式碼是
$de = [ADSI]"WinNT://$Env:ComputerName/Administrators,group" $de.psbase.Invoke("Add",([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path)
當使用網域帳戶運行時,此程式碼就像一個魅力和是本機管理員。
由於這是用於安裝全新的工作站,我可以將其作為網域帳戶運行或者本機管理員。
對於前者,該$de.psbase.Invoke("Add",
部分失敗
對於後者,該部分([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
失敗
我嘗試使用start-process
帶有選項的 cmdlet–verb runas
來獲取不同的安全上下文,但遇到了與上面相同的問題。
有什麼辦法我可以
- 僅在網域使用者的安全性上下文中解析
([ADSI]"WinNT://MyCompanyDomain/MyDepartmentGroup").path
,並將其傳遞給在本機管理員的安全性上下文中執行的腳本的其餘部分(這就是 compmgmt.msc 的做法)
或者
- 從硬編碼資料建構 [ADSI] 對象,無需連接到域
或者
- 還有一些我沒有想到的顯而易見的事情
答案1
您可以透過該檔案將網域群組新增至本機群組unattend.xml
,從而無需編寫任何腳本。
透過系統映像管理員 (SIM) 編輯 Unattend.xml
開啟 SIM 卡後unattend.xml
,在視窗的左下角找到 的節點Microsoft-Windows-Shell-Setup
。(筆記:您應該使用與您的映像架構相對應的節點,即 64 位元平台的 amd64。展開 Shell-Setup 節點,然後展開UserAccounts
、DomainAccounts
和DomainAccountList
。右鍵單擊該DomainAccount
節點,然後選擇新增設定以傳遞 7 (oobeSystem)。
在SIM視窗的中央,您需要對新增的節點進行設定。在節點中的DomainAccountList
值中輸入您的網域的名稱Domain
。
在DomainAccount
節點中,該Group
值應設定為您要修改的本機群組的名稱,在本例中管理員。該Name
值應設定為要新增至本機群組的網域群組的名稱。
手動編輯 Unattend.xml (不建議)
您也可以unattend.xml
在您喜歡的文字編輯器中手動編輯該文件。找到<settings>
節點oobe系統經過。您可以複製DomainAccounts
下面的節點,並將其放在您的節點unattend.xml
之後AdministratorPassword
。請務必修改節點中的Group
和節點,以及節點中指定的網域名稱。Name
DomainAccount
Domain
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" ... >
<UserAccounts>
<AdministratorPassword>
<Value>mylocaladminpassword</Value>
<PlainText>true</PlainText>
</AdministratorPassword>
<DomainAccounts>
<DomainAccountList wcm:action="add">
<DomainAccount wcm:action="add">
<Group>Administrators</Group>
<Name>Name-Of-Domain-Group-To-Add</Name>
</DomainAccount>
<Domain>DOMAIN_NAME_HERE</Domain>
</DomainAccountList>
</DomainAccounts>