Проверьте пользователя AD для сценариев входа - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь написать сценарий 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 ]

3 голосов
/ 17 октября 2019

Сценарий входа может быть 3-х мест:

  1. Атрибут scriptPath в учетной записи AD пользователя. Если бы это было установлено, вы бы увидели свойство ScriptPath из Get-ADUser -Identity $User -Properties *. В противном случае это означает, что она не установлена.
  2. Групповая политика, примененная к пользователю (через домен или подразделение).
  3. Групповая политика, примененная к компьютеру, на котором они вошли (через домен или подразделение).

Получить эту информацию из групповой политики нелегко. Могут применяться несколько групповых политик, поэтому вы должны смешать их все вместе, чтобы увидеть, какие именно политики будут применяться. Для этого вы можете использовать Get-GPResultantSetOfPolicy. Вы даете ему пользователя и / или компьютер, и он покажет вам все политики, которые будут применены.

Однако он поддерживает только вывод результатов в файл в формате XML или HTML. Он не может дать вам объект, который вы можете исследовать в памяти. Поэтому, если вы хотите, вам придется прочитать файл обратно и проанализировать информацию (XML может быть проще для этого). И это тоже очень медленно.

Если вы запускаете это на компьютере, где зарегистрирован пользователь, вы можете использовать gpresult, который, кажется, работает быстрее (новсе еще не быстро). Вы можете сохранить XML или HTML в файл или вывести на консоль, но вывод консоли / HTML предназначен для чтения человеком, а не для чтения на компьютере, поэтому его будет сложно проанализировать. (то, что вы хотите, имеет заголовок «Сценарии входа в систему»)

1 голос
/ 17 октября 2019

Свойство 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"

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...