lunes, 6 de junio de 2016

VBS - Get Citrix Reboot Policy Details from all servers in a farm and save to txt

***copy below

on error resume next
 Dim DecDDNumber,DecMMNumber,DecYYYYNumber

Set objShell = WScript.CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("outputCTXRebootSchedule.txt", True)
Set objServerlist = objFSO.OpenTextFile("listofcitrixservers.txt", 1)


Const HKEY_LOCAL_COMPUTER = &H80000002

Do Until objServerList.AtEndOfStream
strComputer = objServerList.ReadLine

strKeySchedule = "SOFTWARE\Wow6432Node\Policies\Citrix\IMA\Restart Options\Schedule"
strScheduleDate = "RestartSchedule_Date"
strScheduleFrequency = "RestartSchedule_Frequency"
strMinutes = "RestartSchedule_Minutes"
strRebootsEnabled = "RestartScheduleEnabled"

Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")

objReg.GetDWordValue HKEY_LOCAL_COMPUTER, strKeySchedule, strScheduleDate, VDE
objReg.GetDWordValue HKEY_LOCAL_COMPUTER, strKeySchedule, strScheduleFrequency, strFreq
objReg.GetDWordValue HKEY_LOCAL_COMPUTER, strKeySchedule, strMinutes, strMins
objReg.GetDWordValue HKEY_LOCAL_COMPUTER, strKeySchedule, strRebootsEnabled, strEnabled

TTRHour = strMins \ 60 & ":" & strMins Mod 60

 DecDDNumber = VDE and 255
 DecMMNumber = (VDE and 65280) /256
 DecYYYYNumber = (VDE / 65535) and 65535

dtmRebootDate =  DecMMNumber & "/" & DecDDNumber & "/" & DecYYYYNumber

dtmDayOfWeek = DatePart("w", dtmRebootDate)

Select Case dtmDayOfWeek
    Case 1 strDayofReboot = "Sunday"
    Case 2 strDayofReboot = "Monday"
    Case 3 strDayofReboot = "Tuesday"
    Case 4 strDayofReboot = "Wednesday"
    Case 5 strDayofReboot = "Thursday"
    Case 6 strDayofReboot = "Friday"
    Case 7 strDayofReboot = "Saturday"
End Select

objFile.WriteLine strComputer &","& strDayofReboot &","& dtmRebootDate &","& strFreq &","& TTRHour &","& strEnabled

Loop

wscript.echo "End"

***copy above

lunes, 17 de agosto de 2015

VBS: Cambiar un el driver de impresion (ya instalado) de una cola de impresión para una lista de servidores listados en un archivo TXT.




Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objServerlist = objFSO.OpenTextFile("ruta al archivo txt con la lista de servidores", 1)



Do Until objServerList.AtEndOfStream
strComputer = objServerList.ReadLine
wscript.echo strComputer



Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery _
    ("Select * From Win32_Printer where Name = 'nombre de la impresora' ")
For Each objPrinter in colPrinters
    wscript.echo "Printer found"
    objPrinter.DriverName = "nombre del driver"
    objPrinter.Put_
Next
loop


wscript.echo "Completado"

jueves, 14 de agosto de 2014

Batch file to seal Citrix PVS gold server and execute NGEN for sealing gold server

***Save this as main sealing batch

@echo off


rem ***STEP 1: Clear all event logs

wevtutil cl System
wevtutil cl Application
wevtutil cl Security
wevtutil cl Setup


SET /P ANSWER=You want to DELETE profiles (Y/N)?
if /i {%ANSWER%}=={y} (goto :yes)
if /i {%ANSWER%}=={Y} (goto :yes)
goto no
:yes
rem ***STEP 2: Clear user profiles

rem Place a copy of delprof on a shared forlder in the network
rem Link to download delprof tool: 
rem http://www.microsoft.com/en-us/download/details.aspx?id=5405


\\SharedFolder\delprof /p

EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: User Profiles reviewed"

:no
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: User Profiles deletion skipped"


rem ***STEP 3: Set .NET services to Atumatic(delayed) start

:CALLBATCH
sc config clr_optimization_v4.0.30319_64 start= delayed-auto

if %ERRORLEVEL% == 0 goto SUCCESS1
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 2 /D "CitrixSealing: Result for Net optimization x64 service set to delatey-auto: FAILED"
GOTO BREAKEND
:SUCCESS1
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 2 /D "CitrixSealing: Result for Net optimization x64 service set to delatey-auto: SUCCEDED"


sc config clr_optimization_v4.0.30319_32 start= delayed-auto

if %ERRORLEVEL% == 0 goto SUCCESS2
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: Result for Net optimization x86 service set to delatey-auto: FAILED"
GOTO BREAKEND
:SUCCESS2
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: Result for Net optimization x86 service set to delatey-auto: SUCCEDED"




rem ***STEP 4: Set Windows Automatic Updates service to disable


sc config wuauserv start= disabled

if %ERRORLEVEL% == 0 goto SUCCESS4
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: Result for windows Update Service to Disabled: FAILED"
GOTO BREAKEND
:SUCCESS4
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: Result for windows Update Service to Disabled: SUCCEDED"




rem ***STEP 5: Run NGEN for both x86 and x84 and log execution results

start \\SharedFolder\NGENx86.bat

if %ERRORLEVEL% == 0 goto SUCCESS5
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: NGEN x86 Process initialization: FAILED"
GOTO BREAKEND
:SUCCESS5
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: NGEN x86 Process initialization: SUCCEDED"


start \\SharedFolder\NGENx64.bat

if %ERRORLEVEL% == 0 goto SUCCESS6
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: NGEN x64 Process initialization: FAILED"
GOTO BREAKEND
:SUCCESS6
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: NGEN x64 Process initialization: SUCCEDED"


Echo WARNING (1 of 2): Continue ONLY after BOTH NGEN batch files are completed
Echo WARNING (1 of 2): Continue ONLY after BOTH NGEN batch files are completed
Echo WARNING (1 of 2): Continue ONLY after BOTH NGEN batch files are completed
pause

Echo WARNING (2 of 2): Continue ONLY after BOTH NGEN batch files are completed
pause




rem ***STEP 6: SET .NET Services to disable



sc config clr_optimization_v4.0.30319_64 start= disabled

if %ERRORLEVEL% == 0 goto SUCCESS7
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: Result for Net optimization x86 service set to disabled: FAILED"
GOTO BREAKEND
:SUCCESS7
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: Result for Net optimization x86 service set to disabled: SUCCEDED"

sc config clr_optimization_v4.0.30319_32 start= disabled

if %ERRORLEVEL% == 0 goto SUCCESS8
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: Result for Net optimization x86 service set to disabled: FAILED"
GOTO BREAKEND
:SUCCESS8
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: Result for Net optimization x86 service set to disabled: SUCCEDED"



rem ***STEP 7: ipconfig /flushdns


ipconfig /flushdns

if %ERRORLEVEL% == 0 goto SUCCESS9
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: ipconfig /flushdns: FAILED"
GOTO BREAKEND
:SUCCESS9
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: ipconfig /flushdns occurred"



rem ***STEP 8: Prepare image to seal

cd C:\Program Files (x86)\Citrix\XenApp\ServerConfig\
XenAppConfigConsole.exe /ExecutionMode:ImagePrep /RemoveCurrentServer:False /PrepMsmq:True

if %ERRORLEVEL% == 0 goto SUCCESSa

rem ***STEP X: Break if error found during execution.
:BREAKEND
EVENTCREATE /T ERROR /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: XenAppConfigConsole.exe /ExecutionMode:ImagePrep /RemoveCurrentServer:False /PrepMsmq:True: FAILED"
@ECHO AN ERROR OCCURRED, re run imageprep from XenApp console.
pause


:SUCCESSa
EVENTCREATE /T Information /so CitrixSealing /L Application /ID 1 /D "CitrixSealing: XenAppConfigConsole.exe /ExecutionMode:ImagePrep /RemoveCurrentServer:False /PrepMsmq:True: SUCCEDED"

rem ***STEP 9: Turn off the server

shutdown -s -t 30
cls
@echo Sealing completed, this server now being turned off in 30 secs.
pause
exit

*** end of main Selaing batch

*** start of NGENx64 update

cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
NGEN update /force
EVENTCREATE /T Warning /L APPLICATION /ID 1 /D "Citrix Sealing: NGEN x64 EXECUTION: END WITH ERRORS"
@ECHO AN ERROR OCCURRED, RE RUN NGEN Update on this server, then continue this batch file execution.
pause
:SUCCESS1
EVENTCREATE /T Information /L APPLICATION /ID 1 /D "Citrix Sealing: NGEN x64 EXECUTION: SUCCEDED"
NGEN eqi
if %ERRORLEVEL% == 0 goto SUCCESS2
EVENTCREATE /T ERROR /L APPLICATION /ID 1 /D "Citrix Sealing: NGEN x64 EQI EXECUTION: END WITH ERRORS"
@ECHO AN ERROR OCCURRED, RE RUN NGEN EQI on this server, then continue this batch file execution.
pause
:SUCCESS2
EVENTCREATE /T Information /L APPLICATION /ID 1 /D "Citrix Sealing: NGEN x64 EQI EXECUTION: SUCCEDED"
cls
@ECHO NGEN completed for x64, you can close this window and go back to main batch file.
pause
exit
***save this as NGENx64.bat and place it on \\sharedfolder
*** end of NGENx64 update

*** start of NGENx86 update
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
NGEN update /force
if %ERRORLEVEL% == 0 goto SUCCESS1
EVENTCREATE /T Warning /L APPLICATION /ID 1 /D "Citrix Sealing: NGEN x86 EXECUTION: END WITH ERRORS"
@ECHO AN ERROR OCCURRED, RE RUN NGEN Update on this server, then continue this batch file execution.
pause
:SUCCESS1
EVENTCREATE /T Information /L APPLICATION /ID 1 /D "Citrix Sealing: NGEN x86 EXECUTION: SUCCEDED"
NGEN eqi
if %ERRORLEVEL% == 0 goto SUCCESS2
EVENTCREATE /T ERROR /L APPLICATION /ID 1 /D "Citrix Sealing: NGEN x86 EQI EXECUTION: END WITH ERRORS"
@ECHO AN ERROR OCCURRED, RE RUN NGEN EQI on this server, then continue this batch file execution.
pause
:SUCCESS2
EVENTCREATE /T Information /L APPLICATION /ID 1 /D "Citrix Sealing: NGEN x86 EQI EXECUTION: SUCCEDED"
cls
@ECHO NGEN completed for x86, you can close this window and go back to main batch file.
pause
exit
***save this as NGENx86.bat and place it on \\sharedfolder
*** end of NGENx86 update

VBS para obtener las propiedades de cuentas anonimas locales desde multiples computadoras




Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("UserProperties.txt", True)
Set objServerlist = objFSO.OpenTextFile("c:\Servers.txt", 1)

On Error Resume Next
Dim Counter, Counter2

Do Until objServerList.AtEndOfStream
strComputer = objServerList.ReadLine
objFile.WriteLine "Server: " & strComputer
objFile.WriteLine ""
Counter = 0
Counter2 = 0

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * from Win32_UserAccount Where LocalAccount = True ")
For Each objItem in colItems

If InStr(objItem.Name, "Anon") Then
        Counter = Counter +1
if objItem.PasswordExpires = True Then
Counter2 = Counter2 +1
  objFile.WriteLine "Caption: " & objItem.Caption
    objFile.WriteLine "Disabled: " & objItem.Disabled
    objFile.WriteLine "Lockout: " & objItem.Lockout
    objFile.WriteLine "Password Changeable: " & objItem.PasswordChangeable
    objFile.WriteLine "Password Required: " & objItem.PasswordRequired
    objFile.WriteLine ""
End If
End If
Next
objFile.WriteLine "Anonymous users found:" & Counter
objFile.WriteLine "Anonymous users found with password to expire:" & Counter2
objFile.WriteLine ""
objFile.WriteLine "----------------------------------------"
Loop
wscript.echo "Local account query properties complete"

VBS para renombrar un drive en multiples computadoras en un TXT


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("ServersRenamed.txt", True)
Set objServerlist = objFSO.OpenTextFile("c:\serverstorename.txt", 1)

On Error Resume Next
Dim Counter, Counter2

Do Until objServerList.AtEndOfStream
strComputer = objServerList.ReadLine
objFile.WriteLine "Server: " & strComputer
objFile.WriteLine ""
Counter = 0
Counter2 = 0

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colDrives = objWMIService.ExecQuery _
    ("Select * from Win32_LogicalDisk where DeviceID = 'D:'")

For Each objDrive in colDrives
    objDrive.VolumeName = "0DNM_Pagefile"
    objDrive.Put_
Next
objFile.WriteLine "Server edited: " & strComputer
    objFile.WriteLine ""

Loop
wscript.echo "Drive re-label complete"

VBS para obtener el estado de un servicio de una lista de computadoras en un TXT



strService = "SpoolSv"
srtCitrixServerListLocation  = "c:\ServerNames.txt"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("ServiceQueryResults.txt", True)
Set objServerlist = objFSO.OpenTextFile(srtCitrixServerListLocation, 1)


Do Until objServerList.AtEndOfStream
strComputer = objServerList.ReadLine

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")


Set colListOfServices = objWMIService.ExecQuery _
("Select * from Win32_Service ")
For Each objService in colListOfServices
If objService.name = strService then
objFile.WriteLine strComputer & "," & objService.name & "," & objservice.state
End if
Next
Loop

wscript.echo "Service query completed"

VBS que obtiene las propiedades de red de una lista de servers TXT

***Inicio del script

On Error Resume Next

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("NICProperties.txt", True)
Set objServerlist = objFSO.OpenTextFile("c:\citrixservers.txt", 1)


Do Until objServerList.AtEndOfStream
strComputer = objServerList.ReadLine
objFile.WriteLine "Server: " & strComputer
objFile.WriteLine ""



Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_NetworkAdapterConfiguration",,48)
For Each objItem in colItems
    'objFile.WriteLine "-----------------------------------"
    'objFile.WriteLine "Win32_NetworkAdapterConfiguration instance"
    'objFile.WriteLine "-----------------------------------"
     If isNull(objItem.DNSHostName) Then
    '    objFile.WriteLine "DNSHostName: "
     Else
        'objFile.WriteLine "DNS Host Name: " & objItem.DNSHostName
         objFile.WriteLine "Description: " & objItem.Description
    ' objFile.WriteLine "IP Address: " & Join(objItem.IPAddress, ",")
       ' objFile.WriteLine "IP Subnet: " & Join(objItem.IPSubnet, ",")
    objFile.WriteLine "DNS Server Search Order: " & Join(objItem.DNSServerSearchOrder, " , ")
    objFile.WriteLine "DNS Suffix: " & objItem.DNSDomain

     End If
Next
Loop


wscript.echo "End"

***Fin del script