首页 > 解决方案 > 比较管理与 PowerShell

问题描述

所以我正在编写一个脚本来检查 SID 是否是远程机器上的本地用户/组。但我想在没有管理员访问远程机器的情况下这样做。

我可以使用计算机管理来查看远程计算机的用户和组,而无需管理员访问权限。

ManagementObjectSearcher、Get-CimInstance、Get-WMIObject 都需要我们域的管理员访问权限,并给我一个拒绝访问权限。

我不能使用网络用户 | 没有 PSExec 的远程本地组,这可能仍需要管理员访问权限。

计算机管理使用什么连接到其远程计算机?我似乎无法在谷歌上找到答案。

或者

在没有管理员访问该机器的情况下,如何验证 SID 是否在远程机器上是本地的?(通过 PowerShell)

标签: powershellremote-accessadministrator

解决方案


在处理另一个项目时,我找到了答案... 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 }

推荐阅读