我正在尝试编写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
。
答案 0 :(得分:3)
登录脚本可以来自3个地方:
scriptPath
属性。如果已设置,您将看到ScriptPath
中的Get-ADUser -Identity $User -Properties *
属性。如果不这样做,则表示未设置。从组策略中获取此信息并不容易。可以应用多个组策略,因此您必须将它们混合在一起以查看将要应用的实际策略。您可以使用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"
}