天天看點

PowerShell小技巧:SCCM部署任務時擷取目前登入使用者并修改CURRENT USER系統資料庫相關鍵值

背景

我在使用

SCCM

推送一些APP或指定配置時,經常會有修改

目前登入使用者(HKEY_CURRENT_USER)

系統資料庫的部分鍵值這類需求.

但在預設情況下使用SCCM推送,會以

SYSTEM

權限去運作,按照正常的腳本并沒法直接修改該計算機目前登入使用者的系統資料庫鍵值;并且我的環境裡普通使用者沒有本地管理者權限,是以也沒法以使用者的身份去執行腳本。

思路

HKEY_USERS

包含計算機上所有主動加載的使用者配置檔案。

HKEY_CURRENT_USER

HKEY_USERS

的子項。

官方文檔

綜上,我需要做的是通過

PowerShell

分步實作以下目标,然後才能有可能滿足上述需求。

  1. 擷取目前登入使用者的使用者名;
  2. 使用使用者名擷取已登入使用者的

    SID

    ;
  3. 基于使用者

    SID

    ,在

    HKEY_USERS

    裡找到該使用者的系統資料庫配置項;
  4. 為目前登入的使用者配置指定的系統資料庫項、鍵值;

代碼

#1.擷取目前登入使用者;
$CurrentLogonUser = (Get-WMIObject -query "SELECT * FROM win32_Process WHERE Name ='explorer.exe'" | Foreach {  $owner = $_.GetOwner();  $_ | Add-Member -MemberType "Noteproperty" -name "Owner" -value $owner.User -passthru }).Owner  | select-object -first 1

#2.擷取目前使用者的SID;
$user = New-Object System.Security.Principal.NTAccount($CurrentLogonUser) 
$sid = $user.Translate([System.Security.Principal.SecurityIdentifier]) 
$CurrentUserSID = $sid.Value

#3.通路HKEY_USERS\$CurrentUserSID\建立或修改目前登入使用者的相關鍵值(以下均為示範);
New-Item -Path Registry::HKEY_USERS\$CurrentUserSID\SOFTWARE\ITPro\TEST\Login -Force #建立項
New-ItemProperty -Path Registry::HKEY_USERS\$CurrentUserSID\SOFTWARE\ITPro\TEST\Login -Name 'Jason' -PropertyType DWord -Value '1' -Force #建立鍵值
#Remove-ItemProperty -Path Registry::HKEY_USERS\$CurrentUserSID\測試CurrentUser -Name "test" #删除鍵值
#Remove-Item -Path Registry::HKEY_USERS\$CurrentUserSID\測試CurrentUser #删除項
           

測試

再通過SCCM推送腳本至測試計算機,驗證是否能夠達到預期的效果.腳本是删除剛才建立的HKEY_CURRENT_USER\測試CurrentUser裡的

TEST

值,并建立\SOFTWARE\ITPro\TEST\Login項以及Jason=1的值
PowerShell小技巧:SCCM部署任務時擷取目前登入使用者并修改CURRENT USER系統資料庫相關鍵值
PowerShell小技巧:SCCM部署任務時擷取目前登入使用者并修改CURRENT USER系統資料庫相關鍵值
PowerShell小技巧:SCCM部署任務時擷取目前登入使用者并修改CURRENT USER系統資料庫相關鍵值
PowerShell小技巧:SCCM部署任務時擷取目前登入使用者并修改CURRENT USER系統資料庫相關鍵值
PowerShell小技巧:SCCM部署任務時擷取目前登入使用者并修改CURRENT USER系統資料庫相關鍵值