检查 AD 用户的登录脚本



我正在尝试编写一个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

登录脚本可以从 3 个位置

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

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

但是,它仅支持将结果输出到 XML 或 HTML 格式的文件。它无法为您提供可在内存中检查的对象。因此,如果您愿意,则必须读回文件并解析信息(XML可能更容易(。而且速度也很慢。

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

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"
}

最新更新