powershell - 比较管理与 PowerShell
问题描述
所以我正在编写一个脚本来检查 SID 是否是远程机器上的本地用户/组。但我想在没有管理员访问远程机器的情况下这样做。
我可以使用计算机管理来查看远程计算机的用户和组,而无需管理员访问权限。
ManagementObjectSearcher、Get-CimInstance、Get-WMIObject 都需要我们域的管理员访问权限,并给我一个拒绝访问权限。
我不能使用网络用户 | 没有 PSExec 的远程本地组,这可能仍需要管理员访问权限。
计算机管理使用什么连接到其远程计算机?我似乎无法在谷歌上找到答案。
或者
在没有管理员访问该机器的情况下,如何验证 SID 是否在远程机器上是本地的?(通过 PowerShell)
解决方案
在处理另一个项目时,我找到了答案... 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 }
推荐阅读
- operating-system - 变量不会在 fork 进程中递增
- python - 如何使用 Python zeep 创建数据对象,其中使用 xsd: 扩展名
- javascript - 事件处理程序内部未更新反应状态
- numpy - ValueError: `validation_split` 仅支持张量或 NumPy 数组,在输入中找到以下类型[
] - python - 在pywavelet中,当我想分析1hz到100hz开始的啁啾时,为什么不能使用中心频率=50?
- javascript - 如何使用 jQuery 从表单操作中获取 URL 属性?
- java - 根据一个字段的列表从对象列表中选择一些对象
- python - 根据给定选项读取文件
- c# - C#访问来自不同类的字典
- flutter - GetX 控制器不自动处理