通过 powershell for office 365 查看用户密码是什么

See what a user password is through powershell for office 365

这个问题违背了我所学的每一个最佳实践的原则,但这对我当前的组织来说是一个更大的问题。关键是,我需要查看当前用户密码是什么,而不仅仅是重置它。这有几个原因。

我的组织有一个活动目录,但它仅用于远程终端服务。有一些不与任何东西同步的专有软件,我们在这些不同的 programs/databases 中手动创建用户帐户,然后手动将他们的凭据设置为他们用来登录 Office 365 帐户的凭据。在线交换是我们业务的核心,而不是活动目录。

因此,密码设置为永不过期,并保留所有用户及其密码的主列表。所有这一切对最终用户来说都是透明的,就他们而言,他们只有一个帐户,因为他们的登录名对所有事情都是一样的,但那是因为我们手动将他们的凭据设置为相同。现在,当用户忘记他们的密码时(尤其是我们的移动人员,因为他们收到 phones/tablets 已经登录并且很少知道他们的密码)我们会查阅主列表。但是,在这种情况下,无论出于何种原因,该用户都不在主列表中。

这种情况可能已经持续了几个月,但只是在我不得不为它们设置新平板电脑时才注意到。用户不知道他们的密码,没有主列表我看不到它是什么。我认为唯一可用的其他选项是重置用户交换密码(我将在下面解释我遵循的过程)并让用户每次无法登录时给我打电话,转到它,然后重置他的密码或(在某些情况下)为他创建一个新帐户(这根本不理想,因为他将丢失他多年来建立的所有链接数据)并重新开始。

我很清楚这些做法有多糟糕,并且一直在努力改变它们,但那是另一回事。

现在,我目前重置用户密码的方法(因为 office365 webapp 不允许手动设置密码)是 运行 使用 exchange、azure admin 和 azure 登录助手关闭我的 IT 笔记本电脑的 powershell插件,然后输入以下命令:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -credential $UserCredential -Authentication Basic –AllowRedirection

使用我的域管理员帐户登录

import-pssession $session

connect-msolservice

这让我进入在线交换 powershell 会话,在那里我可以 运行 密码重置命令

Set-MsolUserPassword –UserPrincipalName TYPE_USERNAME_HERE –NewPassword TYPE_DESIRED_PASSWORD_HERE -ForceChangePassword $False

但是我需要查看当前密码是什么。在我的搜索中,我发现许多资源解释了如何获取有关密码上次设置时间的信息,如果密码设置为永不过期,诸如此类。然而,关于如何检索用户当前密码的实际答案(并以可读格式显示它,大概是加密的)。但是,我发现 post 使我相信这是可能的: Powershell Scripting example link

所以我基本上需要知道什么 powershell 命令 运行 检索和解码用户的当前密码。我是我的组织 I.T。管理员并拥有完整的管理员权限。另外,这是我的第一个堆栈交换 post 如果您需要任何其他信息,请告诉我。感谢您的帮助。

简答:不可能。

密码不直接存储在 Active Directory 中,它们经过散列处理,并且存储的是散列值。当您输入详细信息时,系统会对您输入的密码进行哈希处理,并将其与存储的内容进行比较。用于生成该哈希的算法只是一种方法,因此,恢复密码的唯一方法是暴力破解它。

长答案:如果您更改更改密码存储方式(即可逆加密)的 AD 设置,可能是可能的,但这样做会非常疯狂。