Skip to content

Instantly share code, notes, and snippets.

View keyan1603's full-sized avatar

Karthikeyan Manickavasagam keyan1603

View GitHub Profile
@keyan1603
keyan1603 / CreateScheduledTask.ps1
Last active September 5, 2024 19:56
Schedule App Pool recycle on specific week days docker
# Variables
$taskName = "UpdateAppPoolRecycleTimes"
$taskDescription = "Update IIS App Pool recycling times based on day of the week."
$scriptPath = "C:\Scripts\UpdateRecycleTimes.ps1" # Full path to your PowerShell script
$user = "NT AUTHORITY\SYSTEM" # User account under which the task will run
$taskRunTime = "01:00" # Time to run the task daily
# Create a daily trigger for the task at a specified time
$trigger = New-ScheduledTaskTrigger -Daily -At $taskRunTime
@keyan1603
keyan1603 / dockerfilewithScheduledAppPoolRecycleDaily
Last active September 5, 2024 19:49
Add multiple App Pool recycles at specific time of day
# Use the appropriate base image
FROM mcr.microsoft.com/windows/servercore:ltsc2019
# Copy the PowerShell script to the container
COPY set-recycle-times.ps1 /set-recycle-times.ps1
# Run the PowerShell script to set the recycle times
RUN powershell -ExecutionPolicy Bypass -File /set-recycle-times.ps1
@keyan1603
keyan1603 / SetMultipleAppPoolRecycles using config file update
Last active September 5, 2024 19:03
Set multiple App pool recycles
# Define the app pool name
$appPoolName = "DefaultAppPool"
# Clear existing schedule
Clear-WebConfiguration "/system.applicationHost/applicationPools/add[@name='$appPoolName']/recycling/periodicRestart/schedule"
# Add recycling times directly using WebConfiguration
Add-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST" `
-filter "system.applicationHost/applicationPools/add[@name='$appPoolName']/recycling/periodicRestart/schedule" `
-name "." -value @{ value = "02:00:00" }
@keyan1603
keyan1603 / preventapppoolrecycle
Last active September 5, 2024 19:33
Prevent App pool recycle in Docker environment
RUN Import-Module WebAdministration; `
Set-ItemProperty "IIS:\AppPools\DefaultAppPool" -Name Recycling.periodicRestart.time -Value 0.00:00:00; `
Set-ItemProperty "IIS:\AppPools\DefaultAppPool" -Name Recycling.periodicRestart.requests -Value 0;
@keyan1603
keyan1603 / KubectlGracefulNodeRollout.txt
Last active May 16, 2024 08:22
Kubectl commands to gracefully rollout nodes in EKS
Cordon all nodes:
kubectl get nodes | ForEach-Object{($_.Split(""))[0]} | where {$_ -ne " NAME"} | ForEach-Object{(kubectl cordon $_)}
Rollout Master node:
kubectl get deployments -n kube-system| ForEach-Object{($_.Split(""))[0]} | where {$_ -ne " NAME"} | ForEach-Object{(kubectl -n kube-system rollout restart deployment $_)}
kubectl get daemonsets -n kube-system| ForEach-Object{($_.Split(""))[0]} | where {$_ -ne " NAME"} | ForEach-Object{(kubectl -n kube-system rollout restart daemonset $_)}
Rollout Worker nodes:
kubectl get deployments | ForEach-Object{($_.Split(""))[0]} | where {$_ -ne " NAME"} | ForEach-Object{(kubectl rollout restart deployment $_)}
kubectl get daemonsets | ForEach-Object{($_.Split(""))[0]} | where {$_ -ne " NAME"} | ForEach-Object{(kubectl rollout restart daemonset $_)}
@keyan1603
keyan1603 / JenkinsEKSNodeRollout
Created May 16, 2024 08:14
Jenkins script to gracefully rollout nodes when the deployment strategy is rollout deployment.
pipeline {
agent any
stages{
stage('Logging into AWS ECR'){
steps{
bat 'aws eks --region us-east-1 update-kubeconfig --name eks-cluster-name'
bat 'aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin xxxxxxxxxxx.xxx.ecr.us-east-1.amazonaws.com'
}
}
@keyan1603
keyan1603 / GetSXASiteCacheSettings
Last active April 30, 2024 07:09
Get Sitecore SXA Site Cache Settings
Import-Function Get-AllSxaSite
$sites = New-Object System.Collections.ArrayList
class ItemDetail {
[string]$ID
[string]$Name
[string]$Path
[bool]$Cacheable
[bool]$ClearOnIndexUpdate
Get-ChildItem Cert:\LocalMachine\My\
Get-ChildItem Cert:\LocalMachine\My\ | Select-Object NotAfter, Subject
@keyan1603
keyan1603 / GetSiteSettings.cs
Created September 20, 2023 18:43
Sitecore SXA – To get Site Settings for a Site
public static T GetValueFromSiteSettings<T>(IMvcContext mvcSiteContext, string TenantSiteSettingsTemplateId)
{
var query = "/sitecore/content//*[@@ID='" + mvcSiteContext.GetRootItem<Item>().ID + "']/*[@@templateId='" + TenantSiteSettingsTemplateId + "']";
var settings = mvcSiteContext.SitecoreService.Database.SelectSingleItem(query);
if (settings == null)
{
return null;
}
return mvcSiteContext.SitecoreService.GetItem<T>(settings);
}
@keyan1603
keyan1603 / Coveo.SearchProvider.Custom.config
Created September 20, 2023 18:38
To add a new Coveo index in Sitecore (tested on Sitecore 9.2)
<index id="Coveo_pub_index" type="Coveo.SearchProvider.ProviderIndex, Coveo.SearchProvider" patch:before = "*[3]">
<param desc="p_Name">$(id)</param>
<configuration ref="coveo/defaultIndexConfiguration" />
<locations hint="list:AddCrawler">
<crawler name="ContentCrawler" type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
<database>pub</database>
<root>/sitecore/content</root>
<stopOnError>true</stopOnError>
</crawler>
<crawler name="MediaLibraryCrawler" type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">