Comp Mgmt против PowerShell

Итак, я пишу сценарий, чтобы проверить, является ли SID локальным пользователем / группой на удаленной машине. Но я хочу сделать это, не имея доступа администратора к удаленному компьютеру.

Я могу использовать Управление компьютером для просмотра пользователей и групп удаленного компьютера без доступа администратора.

ManagementObjectSearcher, Get-CimInstance, Get-WMIObject - все они требуют доступа администратора в нашем домене и дают мне отказ в доступе.

Я не могу использовать пользователя сети | localgroup удаленно без PSExec, для которого может потребоваться доступ администратора.

Что использует Управление компьютером для подключения к своим удаленным машинам? Кажется, я не могу найти ответ в Google.

Or

Как я могу проверить, является ли SID локальным на удаленном компьютере без доступа администратора к этому компьютеру? (через PowerShell)


person Kyle Hewitt    schedule 29.10.2018    source источник
comment
Я бы сказал, что не иметь доступа администратора и пытаться это сделать - это очень отстойно. В идеале эти операции являются жесткими административными работами. Итак, в данном сценарии для этого вам нужен доступ администратора.   -  person Ranadip Dutta    schedule 29.10.2018
comment
Откуда вообще возникает требование об отсутствии администратора? Возможно, вам повезет с psgetsid от Sysinternals.   -  person vonPryz    schedule 29.10.2018
comment
Компания, с которой я в настоящее время работаю, принимает меры по борьбе с тем, у кого к чему есть доступ, и это может быть проблемой с тем, что я создаю. Я просто чувствую, что должен быть способ, поскольку у меня все еще есть доступ к локальным пользователям / группам удаленной машины через Comp Mgmt без доступа администратора. Это прекрасно работает! Это доказывает, что есть способ получить его без доступа администратора. Теперь я хочу знать, как это делает PSGetSID.   -  person Kyle Hewitt    schedule 29.10.2018
comment
В CMD можно запустить wmic /node:computername useraccount get name,sid? Я подозреваю, что это то же самое, что и Get-WMIObject.   -  person Jacob    schedule 30.10.2018
comment
Да, мне отказали в доступе.   -  person Kyle Hewitt    schedule 30.10.2018
comment
Не уверен, что это будет работать без прав администратора, но попробуйте: $sid = "S-1-5-21-XXXXXXXXX-XXXXXXXXXX-XXXXXXXXX-XXX"; try { (New-Object System.Security.Principal.SecurityIdentifier($sid)).Translate([System.Security.Principal.NTAccount]).Value } catch { Write-Warning "Could not find user with SID $sid" }   -  person Theo    schedule 30.10.2018


Ответы (1)


Работая над другим проектом, я нашел ответ на этот ... ADSI или System.DirectoryServices.DirectoryEntry. Я бы сказал, что это хорошее предположение, что Управление компьютером использует это для этого, как и PSGetSID. Вот код, который я использовал на случай, если кто-то захочет его увидеть.

$Computer = 'Computer1'
$SID = 'S-1-5-21-1785707171-2823430725-1593205055-500'

[ADSI]$ADSI = "WinNT://$Computer"

$ADSI.Children | 
    Select-Object -Property `
        @{Name='Name'; Expression={$_.Name.Value}},
        @{Name='SID'; Expression={
                (New-Object System.Security.Principal.SecurityIdentifier($_.objectsid.value,0)).Value
            }
         } |
    Where-object -FilterScript { $_.SID -eq $SID }
person Kyle Hewitt    schedule 30.10.2018