144 lines
4.1 KiB
PowerShell
144 lines
4.1 KiB
PowerShell
# Samy.Onboarding.ps1
|
|
# Onboarding HTTP handlers and rename computer
|
|
|
|
function Invoke-SetSVSPowerPlan {
|
|
param($Context)
|
|
|
|
Set-SVSPowerPlan
|
|
|
|
Write-LogHybrid "PowerPlan set" Success OnBoard
|
|
Send-Text $Context "PowerPlan applied"
|
|
}
|
|
|
|
function Invoke-InstallSVSMSP {
|
|
param($Context)
|
|
Write-LogHybrid "HTTP trigger: Invoke-InstallSVSMSP" Info OnBoard
|
|
try {
|
|
Install-SVSMSP -InstallToolkit
|
|
Send-Text $Context "SVSMSP Module installed/updated."
|
|
}
|
|
catch {
|
|
Write-LogHybrid "Error in Install-SVSMSP: $_" Error OnBoard
|
|
Send-Text $Context "ERROR: $_"
|
|
}
|
|
}
|
|
|
|
function Invoke-InstallCyberQP {
|
|
param($Context)
|
|
|
|
Install-CyberQP
|
|
|
|
Write-LogHybrid "CyberQP installed" Success OnBoard
|
|
Send-Text $Context "CyberQP installed"
|
|
}
|
|
|
|
function Invoke-InstallThreatLocker {
|
|
param($Context)
|
|
|
|
Install-ThreatLocker
|
|
|
|
Write-LogHybrid "ThreatLocker installed" Success OnBoard
|
|
Send-Text $Context "ThreatLocker installed"
|
|
}
|
|
|
|
function Invoke-InstallRocketCyber {
|
|
param($Context)
|
|
|
|
Install-RocketCyber
|
|
|
|
Write-LogHybrid "RocketCyber installed" Success OnBoard
|
|
Send-Text $Context "RocketCyber installed"
|
|
}
|
|
|
|
function Invoke-InstallHelpDesk {
|
|
param($Context)
|
|
|
|
Install-svsHelpDesk
|
|
|
|
Write-LogHybrid "SVS HelpDesk installed" Success OnBoard
|
|
Send-Text $Context "SVS HelpDesk installed"
|
|
}
|
|
|
|
function Invoke-SetEdgeDefaultSearchEngine {
|
|
param($Context)
|
|
|
|
try {
|
|
Write-LogHybrid "Configuring Edge default search provider" Info OnBoard
|
|
set-EdgeDefaultSearchEngine
|
|
Write-LogHybrid "Edge default search set to Google" Success OnBoard
|
|
Send-Text $Context "Edge default search provider configured."
|
|
}
|
|
catch {
|
|
Write-LogHybrid "Failed to set Edge default search: $($_.Exception.Message)" Error OnBoard
|
|
Send-Text $Context "ERROR: $($_.Exception.Message)"
|
|
}
|
|
}
|
|
|
|
function Invoke-RenameComputer {
|
|
param($Context)
|
|
|
|
try {
|
|
if ($Context.Request.HttpMethod -ne 'POST') {
|
|
$Context.Response.StatusCode = 405
|
|
Send-Text $Context 'Use POST'
|
|
return
|
|
}
|
|
|
|
$rawBody = (New-Object IO.StreamReader $Context.Request.InputStream).ReadToEnd()
|
|
if (-not $rawBody) {
|
|
$Context.Response.StatusCode = 400
|
|
Send-Text $Context 'Missing request body.'
|
|
return
|
|
}
|
|
|
|
try {
|
|
$body = $rawBody | ConvertFrom-Json
|
|
}
|
|
catch {
|
|
$Context.Response.StatusCode = 400
|
|
Send-Text $Context 'Invalid JSON body.'
|
|
return
|
|
}
|
|
|
|
$newName = $body.newName
|
|
|
|
if (-not (Test-ComputerName -Name $newName)) {
|
|
Write-LogHybrid "RenameComputer: invalid computer name '$newName'." Error OnBoard -LogToEvent
|
|
$Context.Response.StatusCode = 400
|
|
Send-JSON $Context @{
|
|
Success = $false
|
|
Error = "Invalid computer name. Must be 1-15 characters and use only letters, numbers, and hyphens."
|
|
}
|
|
return
|
|
}
|
|
|
|
Write-LogHybrid "RenameComputer: renaming computer to '$newName'." Info OnBoard -LogToEvent
|
|
|
|
try {
|
|
Rename-Computer -NewName $newName -Force -ErrorAction Stop
|
|
}
|
|
catch {
|
|
Write-LogHybrid "RenameComputer: rename failed: $($_.Exception.Message)" Error OnBoard -LogToEvent
|
|
$Context.Response.StatusCode = 500
|
|
Send-JSON $Context @{
|
|
Success = $false
|
|
Error = $_.Exception.Message
|
|
}
|
|
return
|
|
}
|
|
|
|
Write-LogHybrid "RenameComputer: rename complete, reboot required for new name to apply." Success OnBoard -LogToEvent
|
|
|
|
Send-JSON $Context @{
|
|
Success = $true
|
|
NewName = $newName
|
|
Note = "Rename successful. A reboot is required for the new name to take effect."
|
|
}
|
|
}
|
|
catch {
|
|
Write-LogHybrid "Invoke-RenameComputer fatal error: $($_.Exception.Message)" Error OnBoard -LogToEvent
|
|
$Context.Response.StatusCode = 500
|
|
Send-Text $Context "Internal error during computer rename."
|
|
}
|
|
}
|