$params = @{
DnsName = 'www.fabrikam.com', 'www.contoso.com'
CertStoreLocation = 'Cert:\LocalMachine\My'
}
New-SelfSignedCertificate @params
Handy Powershells Commands
- CCE-WinServer-GatherSoftwareInfo.ps1
# Retrieve Server Software using the Utility UninstallView.exe - https://www.nirsoft.net/utils/uninstall_view.html
# Gerard O'Rourke
# Date 24/03/2021
# Version 1.1
$version=1.1
$utilityPath = "C:\X-Support\Utilities\UninstallView"
$currentFolder=Get-Location
$tempFolder = "$currentFolder\temp"
$finalFolder = "$currentFolder\ServerSoftwareReport"
$outputFileName="WinServerSoftwareDetails_$(get-date -f yyyy-MM-dd_HH-mm-ss).csv"
$waitTimer=30
$servers = "ucce-lab-rgr-a","ucce-lab-hds-a"
Write-Output "Software Retrieval Powershell Script"
Write-Output "Version: $version`n"
Write-Output "Starting..."
If(!(test-path $tempFolder))
{
New-Item -ItemType Directory -Force -Path $tempFolder
}
Write-Output "Removing Temp Folder of any CSV files before creating new files..."
Remove-Item $tempFolder\*.csv
foreach ($server in $servers)
{
Write-Output "Polling Server $server"
& $utilityPath\UninstallView.exe /LoadFrom 4 /ComputerName $server /AutoStartRemoteRegistry 1 /LoadingSpeed 3 /scomma "$tempFolder\$server.csv"
Start-Sleep -s 1
}
Write-Output "Waiting $waitTimer seconds for Output Files to be created...."
Start-Sleep -s $waitTimer
Write-Output "Adding Filename to a Column in the CSV File"
foreach ($server in $servers)
{
if ($server -like '*rgr*') {
$component="Rogger"
$type="CCE"
}
elseif ($server -like '*hds*') {
$component="AW-HDS-DDS"
$type="CCE"
}
elseif ($server -like '*pg*') {
$component="PG"
$type="CCE"
}
elseif ($server -like '*ops*') {
$component="CVP Ops"
$type="CVP"
}
elseif ($server -like '*cvp*') {
$component="CVP CallServer"
$type="CVP"
}
else{
$component="UNKNOWN"
$type="UNKNOWN"
}
$CSV = Import-CSV -Path $currentFolder\temp\$server.csv
$CSV | Select-Object *,@{N='ComputerName';Expression={$server}},@{N='Type';Expression={$type}},@{N='Component';Expression={$component}} | Export-CSV $tempFolder\$server.csv -NoTypeInformation
}
Write-Output "Merging Data into one CSV File"
If(!(test-path $finalFolder))
{
New-Item -ItemType Directory -Force -Path $finalFolder
}
Get-ChildItem -Filter .\temp\*.csv | Select-Object -ExpandProperty FullName | Import-Csv | Export-Csv $finalFolder\$outputFileName -NoTypeInformation -Append
echo If the scrpit has run successfully, the report will be available in the folder $finalFolder
echo If the Report Name is: $outputFileName
Write-Output "Finished! Pausing for 10 seconds..."
Start-Sleep -s 10
- ece-email-pause-and-resume.ps1
# Author : Gerard O'Rourke
# 16/04/2021
# Version 1.00
#
# Notes
# -----------------------------------------------------------------
# Status Code for Successful Login and Logout: 204
# Status Code for Successful STOP / START of DX Instance: 202
# -----------------------------------------------------------------
#
# Create a dedicated partition administration user account on ECE
# Use Powershell 7 for this script.
$ECE_HOST = 'ece-webserver.example.com'
$DX_INSTANCE = '998'
$AUTH_BODY = '{"userName": "pa_tst_api","password": "4p6hVfwDsp2fsdfsT"}'
$ECE_LOGIN_URL = "https://$ECE_HOST/system/ws/v19/authentication/user/login?forceLogin=yes"
$ECE_LOGOUT_URL = "https://$ECE_HOST/system/ws/v19/authentication/user/logout"
$ECE_DISPATCHER_INSTANCE_STOP_URL = "https://$ECE_HOST/system/ws/v19/administration/service/instance/$DX_INSTANCE/stop"
$ECE_DISPATCHER_INSTANCE_START_URL = "https://$ECE_HOST/system/ws/v19/administration/service/instance/$DX_INSTANCE/start"
$SMTP_SERVER = 'mailserver.example.com'
$EMAIL_FROM = 'ECE TEST API Script <[email protected]>'
$EMAIL_TO = 'Gerry ORourke <[email protected]>','Banana Boo <[email protected]>'
$CONTENT_TYPE = "application/json"
$timeNow = (get-date).ToString('T')
$errorCode = 0
#Email Function
function SendEmail{
Send-MailMessage -From $EMAIL_FROM -To $EMAIL_TO -Subject $EMAIL_SUBJECT -Body $EMAIL_BODY -SmtpServer $SMTP_SERVER
}
# Check Argument 'stop' or 'start' has been set.
if (($args[0] -eq 'stop') -or ($args[0] -eq 'start'))
{
echo "Attempting to $args the Email Dispatcher Instance"
}
else
{
echo "You must pass the parameter 'stop' or 'start' for this app to function."
echo "Pausing for 10 seconds before exiting..."
exit
}
##### LOGIN #####
try
{
$LoginRequest = Invoke-WebRequest -SkipCertificateCheck -uri $ECE_LOGIN_URL -Method 'POST' -ContentType $CONTENT_TYPE -Body $AUTH_BODY
$StatusCode = $LoginRequest.StatusCode
}
catch
{
$StatusCode = $_.Exception.Response.StatusCode.value__
}
if ($StatusCode -eq "204")
{
#Login Successful
echo "Login Successful."
$AUTH_TOKEN = $LoginRequest.Headers["X-egain-session"]
echo "The 'X-egain-session' AuthToken is: $AUTH_TOKEN"
}
else
{
#Login Failed
echo "Login Failed. Status Code: $StatusCode"
$EMAIL_BODY = "Failed Login. The Status Code Returned was $StatusCode. Time: $timeNow"
$EMAIL_SUBJECT = "ECE API Script - Failed Login."
SendEmail
echo "Notification Email Sent."
exit
}
##### STOP Dispatcher Instance #####
if ($args[0] -eq 'stop')
{
try
{
$StopRequest = Invoke-WebRequest -SkipCertificateCheck -Method 'PUT' -ContentType $CONTENT_TYPE -Headers @{'X-egain-session' = "$AUTH_TOKEN"} -uri $ECE_DISPATCHER_INSTANCE_STOP_URL
$StatusCode = $StopRequest.StatusCode
#$Content = $StopRequest.Content
}
catch
{
$StatusCode = $_.Exception.Response.StatusCode.value__
$ResponseHeaders = $_.Exception.Response
$ResponseBody = $_.ErrorDetails.Message
}
if ($StatusCode -eq "202")
{
#Stopped Successful
echo "Stopped ECE Distpatcher Instance Successful."
}
else
{
#Stopped Failed
echo "Email Distpatcher Stop Request Failed.`nStatus Code: $StatusCode.`nDetails: $ResponseBody"
echo "---"
echo "$ResponseBody"
echo "---"
$EMAIL_BODY = "Email Distpatcher Stop Request Failed.`nStatus Code: $StatusCode.`nTime: $timeNow.`nDetails: $ResponseBody"
$EMAIL_SUBJECT = 'ECE API Script - Failed to Stop Dispatcher'
SendEmail
echo "Notification Email Sent."
$errorCode = 1
}
}
##### START Dispatcher Instance #####
if ($args[0] -eq 'start')
{
try
{
$StartRequest = Invoke-WebRequest -SkipCertificateCheck -Method 'PUT' -ContentType $CONTENT_TYPE -Headers @{'X-egain-session' = "$AUTH_TOKEN"} -uri $ECE_DISPATCHER_INSTANCE_START_URL
$StatusCode = $StartRequest.StatusCode
}
catch
{
$StatusCode = $_.Exception.Response.StatusCode.value__
$ResponseHeaders = $_.Exception.Response
$ResponseBody = $_.ErrorDetails.Message
}
if ($StatusCode -eq "202")
{
#Start Instance Successful
echo "Started ECE Distpatcher Instance Successful."
}
else
{
#Start Instance Failed
echo "Email Distpatcher Start Request Failed. Status Code: $StatusCode"
$EMAIL_BODY = "Email Dispatcher Start Request Failed.`nStatus Code: $StatusCode.`nTime: $timeNow.`nDetails: $ResponseBody"
$EMAIL_SUBJECT = 'ECE API Script - Failed to Start Dispatcher'
SendEmail
echo "Notification Email Sent."
$errorCode = 1
}
}
##### Logout #####
try
{
$LogoutRequest = Invoke-WebRequest -SkipCertificateCheck -Method 'DELETE' -ContentType $CONTENT_TYPE -Headers @{'X-egain-session' = "$AUTH_TOKEN"} -uri $ECE_LOGOUT_URL
$StatusCode = $LogoutRequest.StatusCode
}
catch
{
$StatusCode = $_.Exception.Response.StatusCode.value__
}
if ($StatusCode -eq "204")
{
#Logout Successful
echo "Logged Out Successfully."
echo "errorCode: $errorCode"
if ($args[0] -eq 'stop' -And $errorCode -eq 0)
{
$EMAIL_BODY = "Email Dispatcher Successfully Stopped. Time: $timeNow"
$EMAIL_SUBJECT = 'ECE API Script - Successfully Stopped Email Dispatcher Instance'
SendEmail
echo "Notification Email Sent."
}
if ($args[0] -eq 'start' -And $errorCode -eq 0)
{
$EMAIL_BODY = "Email Dispatcher Successfully Started. Time: $timeNow"
$EMAIL_SUBJECT = 'ECE API Script - Successfully Started Email Dispatcher Instance'
SendEmail
echo "Notification Email Sent."
}
exit
}
else
{
#Logout of the Instance Failed
echo "Logging out of the API has Failed. Status Code: $StatusCode"
$EMAIL_BODY = "Email Dispatcher Logout Request Failed. Status Code: $StatusCode. Time: $timeNow"
$EMAIL_SUBJECT = 'ECE API Script - Failed to Logout'
SendEmail
echo "Notification Email Sent."
exit
}