我不是在尋找“$env:HOMEDIR”,而是在尋找一種方法來查詢不同用戶帳戶的主目錄。“~bob”的powershell等價物。
我嘗試使用 [ADSI]:
# After creating a local account called 'other.user'
PS> $user = [ADSI]'WinNT://localhost/other.user,user'
PS> $user.name
other.user
PS> $user.HomeDirectory
PS>
即使在提升的 powershell 中從管理員帳戶執行時也是如此。
為了理智,我嘗試對現有用戶進行相同的檢查:
PS> $user = [ADSI]('WinNT://localhost/{0},user' -f [Environment]::UserName)
PS> $user.name
this.user # paraphrase
PS> $user.HomeDirectory
PS> $user.properties.HomeDirectory
PS>
uj5u.com熱心網友回復:
您可以Get-CimInstance結合 Get-LocalUser:
$userName = 'other.user'
(
Get-CimInstance Win32_UserProfile -Filter "SID = '$((Get-LocalUser $userName).Sid)'"
).LocalPath
這將輸出目標用戶組態檔目錄的路徑,例如C:\Users\other.user.
注意:組態檔目錄通常,但不一定與用戶的主目錄相同- 后者可以配置為指向其他地方,例如網路共享,并反映在當前用戶的一對HOMEDRIVE環境變數中,并且HOMEPATH.
要獲得真正的主目錄:
如果目標用戶存盤在Active Directory中,則以下可能有效(未經測驗):
$userName = 'other.user' $user = Get-ADUser $userName -Property HomeDrive, HomeDirectory '{0}{1}' -f $user.HomeDrive, $user.HomeDirectory對于僅限本地用戶:
我個人不知道一種方法,因為
HOMEDRIVE和HOMEPATH環境變數是動態添加到注冊表中的,當該用戶登錄到視窗站(創建作業系統會話)時,在HKEY_CURRENT_USER\Volatile Environment. 相反,如果您NTUSER.DAT按需將另一個用戶的組態檔(位于用戶配置目錄中的隱藏檔案)加載到注冊表中,例如通過reg.exe load或通過CreateProcessWithLogon()WinAPI 函式(也被runas.exe[1]使用),則不會添加這些值.如果有人知道主目錄資訊是否包含在用戶組態檔的非易失性資訊中以及在何處(加載后可通過注冊表訪問),請告訴我們。
至于你嘗試了什么:
System.DirectoryServices.DirectoryEntry(其型別加速器是[adsi])實體的相關屬性應該是.Profileand .HomeDirDrive/ .HomeDirectory,但至少在我的 Windows 10 機器上它們沒有被填充;例如:
PS> ([adsi] 'WinNT://localhost/jdoe,user') | Format-List *
# ...
HomeDirectory : {}
# ...
Profile : {}
HomeDirDrive : {}
# ...
[
1 ]請注意,基于. runas.exe /profile /user:$userName cmd /c echo %HOMEDRIVE%HOMEPATH%_ _%HOMEDRIVE%C:%HOMEPATH%\Windows\System32CreateProcessWithLogon()C:\Windows\System32
uj5u.com熱心網友回復:
補充mklement0 的有用答案的另一種選擇是直接查詢注冊表,這結合Get-LocalUser了Get-ItemPropertyValue:
$sid = (Get-LocalUser other.user).Sid
Get-ItemPropertyValue "HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\$sid" -Name ProfileImagePath
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526131.html
標籤:视窗电源外壳阿西主目录
下一篇:ADUser屬性
