AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 637119
Accepted
Tiago Duarte
Tiago Duarte
Asked: 2014-10-16 01:46:02 +0800 CST2014-10-16 01:46:02 +0800 CST 2014-10-16 01:46:02 +0800 CST

用户与计算机的关系

  • 772

我已经多次使用 Get-ADUser 和 Get-ADComputer 来帮助解决系统中的问题。

我已经看到了几种通过注册表、PsLoggedon.exe和其他脚本来识别特定计算机上登录的用户的方法,但由于我不是真正的网络管理员,所以我经常被拒绝访问。这很好,因为我对深入挖掘并不是很感兴趣。

我所需要的只是以某种方式确定哪些用户在机器上拥有帐户(配置文件)(或哪些机器拥有用户帐户),这样我就可以在他们的 IP 地址出现异常时联系他们并帮助他们。

这两个开箱即用的对象之间绝对没有关系吗?

powershell
  • 2 2 个回答
  • 1973 Views

2 个回答

  • Voted
  1. Best Answer
    Evan Anderson
    2014-10-16T06:07:15+08:002014-10-16T06:07:15+08:00

    这些“开箱即用”的对象之间绝对没有关系。Windows 8 / Windows Server 2012 引入了“主计算机” Active Directory 架构属性的概念,但我非常怀疑您是否会发现正在使用它。

    在远程机器上获取登录用户是其中之一,听起来应该很容易,但实际上并非如此。

    我认为你将不得不从你的网络管理人员那里得到一些合作,才能可靠地得到你正在寻找的东西。通过“正常方式”(WMI 查询、远程注册表访问)远程查询登录用户信息psloggedon将要求您在远程计算机上具有本地管理员权限,或者对默认值进行更改以授予您的非管理员权限上下文是正确的。

    开始谈论“黑客”:我可以想象一个场景,您的异常处理程序尝试将用户的浏览器重定向到需要 NTLM 身份验证的页面,如果客户端配置为自动尝试使用登录用户的凭据进行身份验证,您可以通过这种方式“收获”凭证。我还可以看到网络管理人员如何将其严重误解为对用户的攻击,因此我强烈建议不要这样做。

    大概您正在管理一个 web 应用程序,但不是网络管理人员的一部分。如果您可以让网络管理员购买将您的网络服务器加入域,您可以启用身份验证,此时您将知道远程用户的用户名,并且不必处理任何这些 IP 地址的东西。如果您的客户端配置正确,那么身份验证也可以透明地进行。

    • 6
  2. Mathias R. Jessen
    2014-10-16T03:04:46+08:002014-10-16T03:04:46+08:00

    Windows 计算机上的现有配置文件列在以下注册表项中:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
    

    它包含每个用户配置文件的子密钥,每个子密钥的名称通过安全标识符标识相应的用户。

    您可以通过枚举子键来“发现”用户配置文件并将所有用户 SID 转换为相应的帐户对象:

    $profileList = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
    # Retrieve subkeys that represent user profiles
    $UserProfiles = Get-ChildItem $profileList |? {$_.Name -like "*S-1-5-21-*"}
    
    foreach($Profile in $UserProfiles)
    {
        $ntAccType = [System.Security.Principal.NTAccount] -as [Type]
        $userSid = ($Profile.Name-split"\\")[-1]
        try{
            # Attempt to translate the SID to an NTAccount object
            (New-Object System.Security.Principal.SecurityIdentifier $userSid).Translate($ntAccType)
        } catch {"Translating SID $userSid to Account failed"}
    }
    
    • 5

相关问题

  • 资源锁和电源外壳

  • 脚本 - 如何断开远程桌面会话?

  • 如何限制向通讯组发送到外部地址?

  • Powershell对值与数组的作用不同?

  • Windows Powershell Vim 键绑定

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve