检查AD用户的登录脚本

时间:2019-10-17 17:25:36

标签: powershell scripting active-directory

我正在尝试编写Powershell脚本,以检查Active Directory用户是否具有任何登录脚本。

我似乎找不到任何可以执行类似操作的命令。这里有人知道吗?

我已经浏览了get-command -Module ActiveDirectory中的所有命令,但似乎都没有用。

Write-Host "Checking for logon scripts."
$User = Read-Host -Prompt "Input the username"
Write-Host "Checking for logon script."
Get-ADUser -Identity $User -Properties * #None of this info helps

<#If ($User -eq userWLogonScript) {
  Write-Host "$User'has a logon script"

  }  Else {

  Write-Host "$User' does not have a logon script"

} #>

我正在寻找检查AD的内容,以查看用户是否具有任何登录脚本。可能涉及函数或if语句的userWLogonScript

2 个答案:

答案 0 :(得分:3)

登录脚本可以来自3个地方:

  1. 用户的AD帐户上的scriptPath属性。如果已设置,您将看到ScriptPath中的Get-ADUser -Identity $User -Properties *属性。如果不这样做,则表示未设置。
  2. 组策略(通过域或OU)应用于用户。
  3. 组策略已应用于他们通过域或OU登录的计算机。

从组策略中获取此信息并不容易。可以应用多个组策略,因此您必须将它们混合在一起以查看将要应用的实际策略。您可以使用Get-GPResultantSetOfPolicy来执行此操作。您给它一个用户和/或一台计算机,它将向您显示所有将应用的策略。

但是,它仅支持将结果输出到XML或HTML格式的文件中。它不能为您提供可以在内存中检查的对象。因此,如果需要,您将不得不读回文件并解析信息(XML可能更容易实现)。而且速度也很慢。

如果您在有问题的用户登录的计算机上运行此命令,则可以使用gpresult,它似乎运行得更快(但仍然不快)。您可以将XML或HTML保存到文件或输出到控制台,但是控制台/ HTML的输出是人类可读的,而不是机器可读的,因此很难解析。 (您想要的标题为“登录脚本”)

答案 1 :(得分:1)

ScriptPath属性就是您要寻找的

Write-Host "Checking for logon scripts."
$User = Read-Host -Prompt "Input the username"
Write-Host "Checking for logon script."
$ScriptPath = Get-ADUser -Identity $User -Properties Scriptpath | Select ScriptPath


If ($ScriptPath) {
  Write-Host "$User'has a logon script"
  Write-host $ScriptPath

  }  Else {

  Write-Host "$User' does not have a logon script"

}