Итак, я пытаюсь найти SID для пользователя, который ранее регистрировался в системе. В нашей системе есть разделение не административных пользователей (без # на старте) и административных пользователей (с #). Мой сценарий PowerShell до сих пор это:Поиск с использованием переменной в Powershell
$CurrentDomainUser = wmic computersystem get username
$Separator = "\"
$CurrentDomainUserSplit = $CurrentDomainUser.split($Separator)
$DomainUser= $CurrentDomainUserSplit[3]
New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_Users
$UserSID = ls 'hklm:software/microsoft/windows nt/currentversion/profilelist' | ? {
$_.getvalue('profileimagepath') -match '$DomainUser' -and
$_.getvalue('profileimagepath') -notmatch '#'
} | % pschildname
Этот скрипт не работает, если у меня есть использовать '$DomainUser'
в конечном $UserSID = ...
строке выше. Это делает работы, если я помещаю фактическое значение, которое я ищу.
Я предполагаю, что это простая проблема синтаксиса PowerShell.
Привет, в '$ CurrentDomainUserSplit [3]', why' 3'? И чего вы пытаетесь достичь в итоге? – sodawillow
Используйте Get-WmiObject/Get-CimInstance для запроса Win32_ComputerSystem. Используя wmic для этого, синтаксический анализ немного глупо. –
@sodawillow: выход CurrentDomainUserSplit [3] является частью имени пользователя команды «wmic computersystem get username» (без имени домена, обратных косых черт и т. Д.). –