$params = @{
DnsName = 'www.fabrikam.com', 'www.contoso.com'
CertStoreLocation = 'Cert:\LocalMachine\My'
}
New-SelfSignedCertificate @params
ls | get-Filehash
# 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
# 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 }