Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <#
- .Synopsis
- Provide temporary access to a local group for specified period of time
- .DESCRIPTION
- Provide temporary access to a local group for specified period of time
- .EXAMPLE
- Add-TempLocalGroupMember
- .INPUTS
- Group - Name of the group to add the user to
- Member - Username that should be provided temporary access
- RequestNumber - Number of the request ticket that relates to the temporary privileges
- Until - Date that the user should be removed from the group
- .FUNCTIONALITY
- Retrieves from a ARN the details of the AWS service
- #>
- Function Add-TempLocalGroupMember
- {
- [CmdletBinding()]
- Param(
- $Group = "Administrators",
- [Parameter(Mandatory=$true)]
- [ValidateNotNullOrEmpty()]
- $Member,
- [Parameter(Mandatory=$true)]
- [ValidateNotNullOrEmpty()]
- $RequestNumber,
- [datetime]$Until = $(Get-Date).AddDays(1),
- [PSCredential]$Credential,
- [switch]$RemoveTask
- )
- Add-LocalGroupMember -Group $Group -Member $Member
- $schTaskName = "$RequestNumber Remove Local Group Membership"
- $taskCommand = "`"&{Remove-LocalGroupMember -Group $Group -Member $Member}`""
- If(!$Credential)
- {
- $Credential = Get-Credential -Message "Please supply credentials to run the scheduled task"
- }
- else
- {
- $username = $Credential.UserName
- $password = $Credential.GetNetworkCredential().Password
- }
- #Build scheduled task definition
- $schTaskAction = New-ScheduledTaskAction -Execute 'Powershell.exe' `
- -Argument "-NoProfile -WindowStyle Hidden -command $taskCommand"
- $schTaskTrigger = New-ScheduledTaskTrigger -At $Until -Once
- $schTaskUser = New-ScheduledTaskPrincipal -UserId $username -RunLevel Highest
- $schTask = New-ScheduledTask -Action $schTaskAction `
- -Trigger $schTaskTrigger `
- -Description "Remove Local Group Membership for [$Member] from [$Group] on [$Until]" `
- -Principal $schTaskUser
- #Add task to scheduler
- $scheduledTask = Register-ScheduledTask -TaskName $schTaskName -InputObject $schTask
- if(!$RemoveTask)
- { #Set task to expire for cleanup
- $expireTask = Get-ScheduledTask -TaskName $schTaskName
- $expireTask.Triggers[0].EndBoundary = $Until.AddMinutes(5).ToString('s')
- $expireTask.Settings.DeleteExpiredTaskAfter = 'PT0S'
- $scheduledTask = $expireTask | Set-ScheduledTask -User $username -Password $password
- }
- $scheduledTask
- }
Add Comment
Please, Sign In to add comment