使用 PowerShell 在活动目录用户和计算机中查找 SID

在Active Directory Users and Computers中使用PowerShell查找SID。安全标识符或SID是分配给域控制网络上每个Windows用户、组或计算机的唯一ID号码。因此,例如,如果我们曾尝试管理文件和文件夹权限或浏览注册表,我们可能已经看到一个长字符串值,类似于S-1-5-21-3011698416-3634052959-2884390752-500。如果您以前见过类似的东西,您已经遇到过SID。

每个用户、组或计算机都将有一个唯一的SID。如果我们以前从未听说过SID,我们可能会想知道它们的目的是什么,以及它们如何在Active Directory(AD)中起作用。毕竟,我们通常不会在明显的地方看到这些安全标识符。

本文将解释SID是什么,如何在活动目录用户和计算机中查找SID,并分享使用Windows PowerShell获取SID的多个命令。

在Active Directory中查找SID

SID报告先决条件

要使用本文中涵盖的一系列Active Directory命令及其示例,请确保我们具备以下条件:

  • 在加入AD域的Windows PC上
  • 以至少具有对活动目录的读取权限的AD用户帐户登录
  • 已安装并导入PowerShell Active Directory模块

免费尝试我们的Active Directory SID报告解决方案

尝试我们的服务免费,访问所有功能。- 200+广告报告模板可用。轻松定制您自己的AD SID报告。




安全标识符简介

A Security Identifier or SID is a unique string of values assigned to each security principal and security group by an authority, such as a Windows domain controller. When a security group or principal is created, security identification is made automatically. Once created, the SID is saved in the security database and can be accessed as needed.

结合SID和用户权限,Windows在我们每次登录系统时都会为我们提供访问令牌。此访问令牌提供安全上下文,并赋予我们适当的权限和权利来管理我们的Windows系统。因此,SID是Windows安全模型的重要组成部分之一。

除了自动生成的SID外,Windows还有一些众所周知的通用SID,例如EveryoneLocal AuthorityWorldNT AuthorityAll Services。以下表格列出了这些众所周知的通用SID。

Value Universal Well-Known SID Identifies
S-1-0-0 Null SID A group with no member objects. This SID is often used when a SID value is null or unknown.
S-1-1-0 World A group that includes everyone or all users.
S-1-2-0 Local Users who log on to local (physically connected)
S-1-2-1 Console Logon A group includes users logged on the physical console.
S-1-3-0 Creator Owner ID A SID to be replaced by the user’s security identifier who created a new object. This SID is used in inheritable ACEs.
S-1-3-1 Creator Group ID A SID is replaced by the primary-group SID of the user who created a new object. Use this SID in inheritable ACEs.
S-1-3-2 Creator Owner Server  
S-1-3-3 Creator Group Server  
S-1-3-4 Owner Rights A SID that represents the current owner of the object. When an ACE that carries this SID is applied to an object, the system ignores the object owner’s implicit READ_CONTROL and WRITE_DAC permissions for the object owner.
S-1-4 Non-unique Authority A Security Identifier that represents an identifier authority.
S-1-5 NT Authority A Security Identifier that represents an identifier authority.
S-1-5-80-0 All Services A group includes all service processes configured on the system. The operating system controls membership.

如果我们想要了解更多关于安全标识符的信息,请点击此链接查看其微软官方文档

使用PowerShell在Active Directory对象中查找SID

使用PowerShell,我们可以找到每个对象在每个级别的不同SID。SID作为用户、组或计算机对象的属性而存在。我们将使用Select-Object命令从PowerShell对象中提取SID属性。

在接下来的部分,我们将从获取当前登录用户的SID开始,并逐步向上到森林中所有域的顶部。

在PowerShell中获取当前活动目录用户SID

我们可以使用Get-LocalUser命令获取PowerShell中的当前用户SID,该命令获取用户帐户详细信息。例如,运行以下命令以获取当前登录用户的SID。

Get-LocalUser -Name $env:USERNAME | Select-Object  sid

在上述PowerShell脚本中,Get-LocalUser获取由环境变量$env:USERNAME指定的用户帐户详细信息。

$env:USERNAME是一个环境变量,保存有关操作系统环境和程序的信息。此数据包括操作系统路径、Windows安装目录的位置以及操作系统使用的进程数。PowerShell可以访问、管理和更改环境变量。

在PowerShell中获取本地用户SID

在服务器上,保存了本地用户帐户。我们可以给这些帐户在单个系统上的访问和权限,但仅限于那台机器。本地用户帐户是用来保护和控制服务或用户对独立或成员服务器资源的访问的安全原则。

Get-LocalUser通过 PowerShell 返回本地用户的 SID,如下所示。当使用Get-LocalUser命令时,我们还不需要加载和导入 AD 模块。

Get-LocalUser -Name 'johndoe' | Select-Object  sid

PowerShell 脚本指定了本地用户名以获取本地用户 SID。

在 PowerShell 中获取 Active Directory 用户 SID

由于我们将要运行一个 Active Directory 命令,我们将需要导入已导入的 AD 模块。

Import-Module ActiveDirectory

我们可以使用Get-ADUsercmdlet获取活动目录用户 SID,带来一个或多个 AD 用户帐户详细信息。运行以下命令。

Get-AdUser -Identity toms | Select Name, SID, UserPrincipalName

在上述 PowerShell 脚本中,Get-ADUsercmdlet 获取由 Identity 参数指定的 AD 用户 SID。此外,该参数在 PowerShell 中选择了 AD 用户的名称、SID 和用户主体名称属性。尝试我们的活动目录与 Office 365 报告与审计工具

尝试我们的Active Directory & Office365报告和审计工具

免费试用。提供数百种报告模板。轻松自定义您的AD、Azure AD & Office355报告。




在PowerShell中获取Active Directory计算机SID

我们不仅可以从用户获取SID,还可以从加入域的计算机获取。我们可以使用Get-ADComputer命令获取Active Directory计算机SID。我们可以使用Filter参数从多个AD计算机获取多个SID。

Get-ADComputer -Filter * | Select-Object Name, SID

在上面的PowerShell中,Get-ADComputer cmdlet在Active Directory中获取计算机账户详细信息,并使用管道运算符选择Active Directory中计算机的名称和SID。

在PowerShell中获取Active Directory组SID

就像用户和计算机一样,我们也可以获取一个组的SID,因为被视为AD对象。要在活动目录中获取AD组的SID,请使用Get-ADGroup cmdlet。

Get-ADGroup -Identity SalesLeader | Select-Object Name, SID

Get-ADGroup cmdlet在 PowerShell脚本中通过Identity参数获取指定组账户。接下来,使用管道运算符在活动目录中选择 AD组的名称和 SID属性。

在 PowerShell中获取所有域的 SID

一个活动目录林(AD林)是在活动目录配置中包含域、用户、机器和组规则的逻辑容器。

我们可以使用活动目录的Get-ADForest cmdlet如下所示,在活动目录中找到所有域的 SID。

(Get-ADForest).Domains| %{Get-ADDomain -Server $_} | Select-Object name, domainsid

在活动目录对象中查找 SID的结论

我们可以使用Active Directory cmdlet,如Get-ADUserGet-ADComputerGet-ADGroup来查找活动目录用户和计算机中的SID。此外,我们还包含了使用Get-LocalUserGet-ADDomain分别获取本地用户和整个域的SID。

Source:
https://infrasos.com/find-sid-in-active-directory-users-and-computers-using-powershell/