ps/Modules/Alkami.PowerShell.SDK/Public/Remove-Sdk.ps1
2023-05-30 22:51:22 -07:00

195 lines
6.0 KiB
PowerShell

function Stop-AlkamiServicesForDeletetion {
[System.Collections.ArrayList]$stopLast = "Alkami.MicroServices.Broker.Host", "Alkami.Services.Subscriptions.Host";
Get-Service alkami* | Where-Object { $_.Status -eq "Running" } | ForEach-Object { Set-service -Name $_.Name -StartupType "manual" }
#stop everyhing but broker sub service
(Get-Service alkami*) | ForEach-Object {
if ( $stopLast -contains $_.Name) {
#do nothing
}
else {
Stop-AlkamiService -ServiceName $_.Name
}
}
#stop broker and sub service
(Get-Service alkami*) | ForEach-Object {
if ( $stopLast -contains $_.Name) {
Stop-AlkamiService -ServiceName $_.Name
}
else {
#donothing
}
}
}
function Remove-AlkamiChocoPackageFolders {
$ChocoInstallPath = "C:\ProgramData\chocolatey\lib\";
# $ChocoInstallPath = "C:\test\";
Get-ChildItem -Path $ChocoInstallPath Alkami* | ForEach-Object {
$PathToRemove = $ChocoInstallPath + $_;
Write-Host removeing $ChocoInstallPath$_;
remove-item -Path $PathToRemove -Recurse -Force;
}
}
function Remove-OrbFolder {
Write-Host "removing orb folder"
$OrbFilePath = "C:\Orb";
remove-item -Path $OrbFilePath -Recurse -Force;
}
function Remove-ServicesFromRegistry {
$serviceNames = (Get-ServiceInfoByCIMFragment C:\programdata\chocolatey\lib\).Where({ $_.Name -match 'Alkami' -and $_.Name -ne "Alkami.Sidekick.Client" }).Name
foreach ($service in $serviceNames) {
Invoke-SCExe @('delete', $service)
}
}
#flags to add
#-sites remove IIS sites
#-appPools remove App pools added by alkami
#-devDb remove developer dynamic database
#-MainDb remove main database
#add other flags/methods that group the above items like
#-full
#that will remove everything
function Remove-SDK {
[CmdletBinding()]
param (
#Removes the developer dynamic database, will not remove stage match database
[switch] $DevDb,
#Removes IIS dev and admin sites, does not remove the stage match site
[switch] $Sites,
#Removes The Webclient App pool
[Switch] $AppPools,
#combines the following flags into one $DevDb $Sites $AppPools
[Switch] $Hard
)
Remove-SDKCore;
if ($DevDb) {
#remove developerDynamic database
remove-DevDynamicDB;
Write-Host "-----------------";
}
if ($Sites) {
#remove iis sites
remove-DeveloperDevIisSites;
Write-Host "-----------------";
}
if ($AppPools) {
remove-WebCLientAppPool
Write-Host "-----------------";
#remove app pools
}
if ($Hard) {
#Hard reset
remove-DevDynamicDB;
Write-Host "-----------------";
remove-AlkamiMasterDB;
Write-Host "-----------------";
remove-DeveloperDevIisSites;
Write-Host "-----------------";
remove-WebCLientAppPool;
Write-Host "-----------------";
remove-ChocoSources;
Write-Host "-----------------";
remove-NugetSource;
Write-Host "-----------------";
remove-portExclusions;
Write-Host "-----------------";
}
Start-IISOnly;
}
function Remove-SDKCore {
Stop-AlkamiServicesForDeletetion;
Write-Host "-----------------";
Stop-IISOnly;
Write-Host "-----------------";
Remove-AlkamiChocoPackageFolders;
Write-Host "-----------------";
Remove-OrbFolder;
Write-Host "-----------------";
Remove-ServicesFromRegistry;
Write-Host "-----------------";
}
function remove-DevDynamicDB {
#alkami.machinesetup.sdk.database
Write-Host "removing DeveloperDynamic database";
invoke-sqlcmd -Query "alter database DeveloperDynamic set single_user with rollback immediate; Drop database DeveloperDynamic;"
}
function remove-AlkamiMasterDB {
#alkami.machinesetup.sdk.database
Write-Host "removing AlkamiMaster database";
invoke-sqlcmd -Query "alter database AlkamiMaster set single_user with rollback immediate; Drop database AlkamiMaster;"
Write-Host "removing Database Standup variable";
Remove-EnvironmentVariable -Name "Alkami_SDK_Initialization_DatabaseStandup" -StoreName "Process"
Remove-EnvironmentVariable -Name "Alkami_SDK_Initialization_DatabaseStandup" -StoreName "Machine"
}
function remove-DeveloperDevIisSites {
Write-Host "removing developer.dev.alkamitech.com";
Remove-IISSite -Name "developer.dev.alkamitech.com";
Write-Host "removing admin-developer.dev.alkamitech.com";
Remove-IISSite -Name "admin-developer.dev.alkamitech.com";
Write-Host -Name "legacy WebClient client"
Remove-IISSite -Name "WebClient";
Write-Host -Name "legacy WebClient client"
Remove-IISSite -Name "WebClientAdmin";
}
function remove-portExclusions {
Write-Host -Name "remove port exclusions"
netsh int ipv4 delete excludedportrange protocol=tcp startport=12345 numberofports=2
netsh int ipv4 delete excludedportrange protocol=tcp startport=50000 numberofports=30
}
Function remove-WebCLientAppPool {
Write-Host "removing App Pools";
Remove-WebAppPool -Name "WebClient"
Remove-WebAppPool -Name "Admin"
Remove-WebAppPool -Name "WebClientAdmin"
Remove-WebAppPool -Name "STSConfiguration"
Remove-WebAppPool -Name "SecurityManagementService"
Remove-WebAppPool -Name "RP-STS"
Remove-WebAppPool -Name "NotificationService"
Remove-WebAppPool -Name "NagConfigurationService"
Remove-WebAppPool -Name "MessageCenterService"
Remove-WebAppPool -Name "IPSTS"
Remove-WebAppPool -Name "DefaultAppPool"
Remove-WebAppPool -Name "CoreService"
Remove-WebAppPool -Name "ContentService"
Remove-WebAppPool -Name "AuditService"
Remove-WebAppPool -Name "BankService"
}
Function remove-ChocoSources {
Write-Host "removing choco sources";
choco source remove -n="choco.dev"
choco source remove -n="choco.internal"
choco source remove -n="AlkamiChocoDev"
}
Function remove-NugetSource {
Write-Host "removing nuget source";
dotnet nuget remove source "Alkami Third-Party"
dotnet nuget remove source "Alkami Dev"
}