locked
PowerShell script to put Citrix XenDesktop VDI in maintenance mode when detected assigned inactive/disabled user account in AD. RRS feed

  • Question

  •  Objective: A PowerShell Script to find all AD inactive/disabled user accounts, then put their corresponding Citrix XenDesktop VDI in maintenance mode if exist.

    I got the below code but not sure how to set the rules in PowerShell for it to trigger correctly. Any help is greatly appreciated.

    * Collecting Disabled User Accounts Information

    Search-ADAccount –AccountDisabled –UsersOnly –ResultPageSize 2000 –ResultSetSize $null | Select-Object SamAccountName, DistinguishedName
    

    * Collecting Inactive User Accounts
        The below command uses the –TimeSpan parameter to find user accounts that have been inactive for the last 90 days. The output is exported to the C:\Temp\InActiveUsers.CSV file.

    Search-ADAccount –AccountInActive –TimeSpan 90:00:00:00 –ResultPageSize 2000 –ResultSetSize $null | ?{$_.Enabled –eq $True} | Select-Object Name, SamAccountName, DistinguishedName | Export-CSV “C:\Temp\InActiveUsers.CSV” –NoTypeInformation
    


    *Citrix maintenance mode via PowerShell

    Firstly, launch PowerShell either via studio or by running Add-PSSnapin Citrix.* within your PowerShell console.

    Machines used in scenarios:

    1. CitrixDesktop1
    2. CitrixDesktop2
    3. CitrixDesktop3

    Scenario 1 – Put CitrixDesktop1 in to maintenance mode

    1. Set-BrokerMachineMaintenanceMode -InputObject DOMAIN\CitrixDesktop1 $true
    2. Get-BrokerMachine -MachineName DOMAIN\CitrixDesktop1 | fl InMaintenanceMode

    The first command sets the machine in maintenance mode. The second queries for the end result.

    1

    Scenario 2 – Put CitrixDesktop1 and CitrixDesktop2 in to maintenance mode

    1. Set-BrokerMachineMaintenanceMode -InputObject DOMAIN\CitrixDesktop1, DOMAIN\CitrixDesktop2 $true

    Scenario 3 – Put all three machines in to maintenance mode

    1. $machines = Get-BrokerMachine -MachineName DOMAIN\CitrixDesktop*
    2. Set-BrokerMachineMaintenanceMode -InputObject $machines $true

    The first command gets a list of machines with CitrixDesktop in their name. The second puts them in to maintenance mode.



    Tuesday, February 5, 2019 10:33 PM

All replies

  • Sorry but this is not a Citrix forum.  You will have to post this in the Citrix forum for your issue.

    We cannot teach you PowerShell and how to use it with Citrix.  That is beyond the scope of this forum.


    \_(ツ)_/

    Tuesday, February 5, 2019 11:20 PM
  • Will do, Thanks.
    Tuesday, February 5, 2019 11:25 PM
  • Not big deal Voev it is nothing strange to ask this question here.  Our PowerShell community will definitely help you with it.
    Wednesday, February 6, 2019 6:37 AM
  • Not big deal Voev it is nothing strange to ask this question here.  Our PowerShell community will definitely help you with it.

    Please refrain form off-topic comments.  If you have a solution post it, otherwise the question needs to be asked in a Citrix forum as this is a forum for Microsoft products.


    \_(ツ)_/

    Wednesday, February 6, 2019 6:45 AM