Powershell
在 Powershell 中,如何使用非管理員帳戶檢查遠端伺服器上的驅動器空間?
我在有許多伺服器的活動目錄環境中工作。我有一個使用者帳戶,我想用它來檢查其他伺服器的狀態,但不授予該帳戶對這些其他伺服器的完全管理訪問權限。具體來說,我想檢查這些伺服器上的驅動器空間,我想用 Powershell 來做。
我已經在目標伺服器上執行了 Enable-PSRemoting,並且可以使用管理員憑據成功地在它們上遠端呼叫 Get-PSDrive。結果幾乎立即返回,並包括有關所有驅動器上已用/可用空間的資訊。
但是,當我以非管理員使用者身份執行相同的命令 (
Invoke-Command -computer remoteserver1 {Get-PSDrive -PSProvider FileSystem}
) 時,結果返回的速度非常慢(大約需要 30 秒),並且沒有任何驅動器有任何關於其已用/可用空間的資訊。到目前為止我做了什麼:
- 我已將非管理使用者帳戶添加到目標伺服器上的遠端管理使用者組。
- 為 scmanager(在目標伺服器上)編輯 SDDL,為遠端管理使用者添加與內置管理員相同的自由 ACL。
- 根據這篇文章,我已在 wmimgmt.exe > WIM 控制(本地)>(右鍵點擊)> 屬性 > 安全選項卡 > 展開“根”> 點擊安全節點 > 點擊“安全”按鈕 > 添加非-admin 具有完全訪問權限的使用者。
- 將使用者添加到目標伺服器上的分佈式 COM 使用者組。
有些人還建議嘗試
Invoke-Command -computer remoteserver1 {Get-WmiObject -Class Win32_MappedLogicalDisk}
進行故障排除,但它返回“訪問被拒絕”。我相信如果我能Get-WmiObject
為這個有限的使用者成功工作,它會解決我的問題。我應該怎麼做才能讓這個受限的使用者帳戶獲得他們檢查其他伺服器上的驅動器空間所需的訪問權限?不授予帳戶管理員權限,最好不必映射和取消映射任何驅動器?
要允許非管理帳戶執行必要的 Powershell 命令以返回有關遠端伺服器上驅動器空間的資訊,請在目標伺服器上完成以下步驟(作為伺服器/域管理員)。
Enable-PSRemoting
- 如果您需要進一步解釋,請在 Google 上搜尋。- 點擊開始 > 執行…,鍵入
lusrmgr.msc
並點擊確定- 點擊組文件夾。
- 點兩下遠端管理使用者組,然後添加非管理員使用者帳戶。點擊確定。
- 點兩下分佈式 COM 使用者組,然後添加非管理員使用者帳戶。點擊確定。
配置 DCOM 安全設置
- 點擊開始 > 執行…,鍵入
dcomcnfg
並點擊確定- 向下鑽取“組件服務”樹,直到進入“我的電腦”。右鍵點擊“我的電腦”以調出菜單,然後點擊“屬性”。
- 點擊 COM 安全選項卡。
- 點擊“訪問權限”部分中的編輯限制。確保“分佈式 COM 使用者”組已選中本地訪問和遠端訪問的複選框。點擊確定。
- 點擊“啟動和啟動權限”部分中的編輯限制。確保為“分佈式 COM 使用者”組選中所有四個“允許”框。點擊確定。
配置 WMI 控制安全設置。
- 點擊開始 > 執行…,鍵入
wmimgmt.msc
並點擊確定。- 右鍵點擊 WMI 控制項(本地)以調出菜單,然後點擊屬性。
- 點擊“安全”選項卡,然後點擊“根”,然後點擊對話框底部的“安全”按鈕。
- 點擊添加…並添加本地分佈式 COM 使用者組。
- 點擊高級。
- 突出顯示其中包含分佈式 COM 使用者的行,然後點擊“編輯”按鈕。
- 從“適用於”下拉列表中,選擇“此命名空間和子命名空間”
- 在允許列下檢查“執行方法”、“啟用帳戶”和“遠端啟用”
- 點擊確定退出對話視窗。
(26.)重啟WinRM(Windows遠端管理)服務
如果您對安全問題或如何改進最小權限訪問有任何回饋,請在下方發表評論。