Доступ к определенной переменной среды пользователя на сервере Windows - PullRequest
0 голосов
/ 03 января 2019

Есть ли способ доступа к определенной переменной среды пользователя с помощью Powershell?

На сервере у нас 50 пользователей. Я хочу знать, использует ли конкретный пользователь, например user1, другое значение для переменной среды PYTH_HOME_LOG.

Эта системная переменная указывает на C:\PYTHON\LOG, я хочу проверить, какой пользователь изменил это местоположение, настроив переменную среды пользователя PYTH_HOME_LOG.

1 Ответ

0 голосов
/ 03 января 2019

Если вы являетесь членом локальной группы администраторов, вы можете просто просмотреть все кусты реестра пользователей и найти там переменные Environment:

$AllUserHives = Get-ChildItem Registry::HKEY_USERS\ |Where Name -like "HKEY_USERS\S-1-5-21*[0-9]"
foreach($UserHive in $AllUserHives){
  if(Get-ItemProperty -Path "$UserHive\Environment" -Name PYTH_HOME_LOG -EA SilentlyContinue){
    # User is overriding %PYTH_HOME_LOG%
  }
}

Вы можете получить соответствующее имя пользователя либо из поддерева реестра Volatile Environment, выполнив поиск переменной USERNAME env, либо вы можете использовать IdentityReference.Translate():

$SID = [System.Security.Principal.SecurityIdentifier]"S-1-5-21-436246-18267386-368368356-356777"
$Username = $SID.Translate([System.Security.Principal.NTAccount]).Value

или, в данном случае:

$SID = ($UserHive -split '\\')[-1] -as [System.Security.Principal.SecurityIdentifier]
$Username = $SID.Translate([System.Security.Principal.NTAccount]).Value
...