Sunday, October 14, 2012

Enable/Disable logons of Citrix Servers using script.

Login to any citrix server and save the below script. I saved as Serverlogons.wsf.
Copy the server names in txt file and save. I saved as Servers.txt

I saved both the files on desktop.

In the citrix server go the script path and run in the cmd as follows:

cscript Serverlogons.wsf e Servers.txt -> for enable logons.
cscript Serverlogons.wsf d Servers.txt -> for disable logons.

_________________________________________________________________________________
<package>
<job id="Servers">
<comment>
File: ServerLogin.wsf
Description: Enable disable  Server Logins
Requirements: WSH 5.5 or higher.

</comment>
<runtime>
<description>
Description: Enable disable  Server Logins
</description>
<example>
CScript //nologo ServerLogons.wsf
</example>
</runtime>
<reference object="MetaFrameCOM.MetaFrameFarm"/>
<script language="VBScript">
Dim theFarm, aServer, choice , Found, CFound , ServerName
''If no command line argument
             if  WScript.Arguments.Count <> 2 Then
               WScript.Echo "USAGE To Enable Logins :  ServerLogons.wsf e Filename"
               WScript.Echo "USAGE To disable Logins : ServerLogons.wsf d filename"
               WScript.Echo ""
               WScript.Echo "Example to enable logins:  ServerLogons.wsf e filename"
               WScript.Quit 0
            Else
               
               
                choice    = WScript.Arguments(0) ' store the flag to enable or diable
                sFileName = WScript.Arguments(1) ' store the server name ..
                Found      = false ' store bool server found or not
                CFound     = false ' store bool choice found or not
                WScript.Echo ""
            End If

Set oFso = CreateObject("Scripting.FileSystemObject")
  
    if Err.Number <> 0 Then
               WScript.Echo "Can't create FileSystemObject "
                WScript.Echo "(" & Err.Number & ") " & Err.Description
                WScript.Echo ""
                WScript.Quit Err.Number
            End if
           
           
''****** Get the Script Path Name  ******************************
sScriptFullName = WScript.ScriptFullName
sScriptPath = Left(sScriptFullName, InStrRev(sScriptFullName, "\"))
' Create MetaFrameFarm object
'

Set theFarm = CreateObject("MetaFrameCOM.MetaFrameFarm")
if Err.Number <> 0 Then
WScript.Echo "Can't create MetaFrameFarm object"
WScript.Echo "(" & Err.Number & ") " & Err.Description
WScript.Echo ""
WScript.Quit Err.Number
End if
'
' Initialize the farm object.
'
theFarm.Initialize(MetaFrameWinFarmObject)
if Err.Number <> 0 Then
WScript.Echo "Can't Initialize MetaFrameFarm object"
WScript.Echo "(" & Err.Number & ") " & Err.Description
WScript.Echo ""
WScript.Quit Err.Number
End if
'
' Are you Citrix Administrator?
'
if theFarm.WinFarmObject.IsCitrixAdministrator = 0 then
WScript.Echo "You must be a Citrix admin to run this script"
WScript.Echo ""
WScript.Quit 0
End If
'
' Print out the farm name.
'
WScript.Echo "MetaFrame Farm Name: " & theFarm.FarmName
WScript.Echo ""

Const ForReading = 1
Set oStream = oFSO.OpenTextFile(sScriptPath & sFilename, ForReading)
Wscript.Echo " Trying to read .. " & sScriptPath  & sFilename
If Err.Number <> 0 Then
LogFile.Writeline "Can't open ini file for reading "
LogFile.Writeline "(" & Err.Number & ") " & Err.Description
LogFile.Writeline ""
End if
'*****************************

Do Until oStream.AtEndOfStream

 sLine = oStream.ReadLine
 Wscript.Echo "processing : " & sLine

 ServerName=sLine


For Each aServer In theFarm.Servers
if Err.Number <> 0 Then
WScript.Echo "Can't enumerate servers"
WScript.Echo "(" & Err.Number & ") " & Err.Description
WScript.Echo ""
WScript.Quit Err.Number
End if

if ucase(aServer.ServerName)=ucase(ServerName) then
     
  Found = true

     if (choice="e") or (choice="E") then
     CFound = true
     aServer.WinServerObject3.EnableLogon=1

     if Err.Number <> 0 Then
  WScript.Echo "Did not enable logins on " & aServer.ServerName
  WScript.Echo "(" & Err.Number & ") " & Err.Description
  WScript.Echo ""
  End if
     WScript.Echo "Enabled logon "
   
     End if
     if (choice="d") or (choice="D") then
  CFound = true
      aServer.WinServerObject3.EnableLogon=0
    
     if Err.Number <> 0 Then
  WScript.Echo "Did not disable logins on " & aServer.ServerName
  WScript.Echo "(" & Err.Number & ") " & Err.Description
  WScript.Echo ""
  End if
 
       WScript.Echo "Disabled logon "
     
     
    
     End if
    
   
end if


Next
If Found = false  then
WScript.Echo "Server Name not found ..."
End if
If CFound = false  then
WScript.Echo "Invalid Argument .... Please use ( e or d ) to enable or disable logons "
End if

Loop

WScript.Echo "Press ENTER to exit..."
WScript.StdIn.Read(1)
</script>
</job>
</package>

No comments:

Post a Comment