# encoding: ascii
# api: powershell
# title: Get-UserLogonLogoffScrip
# description: From Windows PowerShell Cookbook (O’Reilly) by Lee Holmes
# version: 0.1
# type: script
# author: Lee Holmes
# license: CC0
# x-poshcode-id: 2167
# x-archived: 2016-03-19T00:32:37
# x-published: 2011-09-09T21:41:00
#
#
##############################################################################
##
## Get-UserLogonLogoffScript
##
## From Windows PowerShell Cookbook (O'Reilly)
## by Lee Holmes (http://www.leeholmes.com/guide)
##
##############################################################################
<#
.SYNOPSIS
Get the logon or logoff scripts assigned to a specific user
.EXAMPLE
Get-UserLogonLogoffScript LEE-DESK\LEE Logon
Gets all logon scripts for the user 'LEE-DESK\Lee'
#>
param(
## The username to examine
[Parameter(Mandatory = $true)]
$Username,
[Parameter(Mandatory = $true)]
[ValidateSet("Logon","Logoff")]
$ScriptType
)
Set-StrictMode -Version Latest
## Find the SID for the username
$account = New-Object System.Security.Principal.NTAccount $username
$sid =
$account.Translate([System.Security.Principal.SecurityIdentifier]).Value
## Map that to their group policy scripts
$registryKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\" +
"Group Policy\State\$sid\Scripts"
if(-not (Test-Path $registryKey))
{
return
}
## Go through each of the policies in the specified key
foreach($policy in Get-ChildItem $registryKey\$scriptType)
{
## For each of the scripts in that policy, get its script name
## and parameters
foreach($script in Get-ChildItem $policy.PsPath)
{
Get-ItemProperty $script.PsPath | Select Script,Parameters
}
}