-
Notifications
You must be signed in to change notification settings - Fork 0
/
sc-stopservices.ps1
130 lines (117 loc) · 3.8 KB
/
sc-stopservices.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# sc-stop services
# This scripts completes tasks that require admin privileges
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Start-Process PowerShell -WindowStyle Minimized -Verb RunAs "-NoProfile -ExecutionPolicy Bypass -Command `"cd '$pwd'; & '$PSCommandPath';`"";
exit;
}
# Load config file
# rename sc-config-example.ps1 to sc-config.ps1 and configure settings
$basefile = (Get-Item $PSCommandPath ).BaseName
$basefile = $basefile.replace('-stopservices','')
$configfile = "$basefile-config.ps1"
if (Test-Path -Path $configfile -PathType Leaf) {
Write-Host "Configfile is: " $configfile
. $PSScriptRoot\$configfile
}
else {
Write-Host "ERROR:"
Write-Host "$configfile not found."
Write-Host "Copy sc-config-example.ps1 to sc-config.ps1 and"
Write-Host "edit appropriate settings"
exit 1
}
Write-Host "Star Citizen Stop Services"
Write-Host "--------------------------"
function StopService {
[CmdletBinding()]
param ($ServiceName)
try {
Write-Host "Stopping $ServiceName"
Stop-Service -Name $ServiceName -ErrorAction SilentlyContinue
}
catch {
Write-Host "Stopping $ServiceName error or does not exist"
$StartServiceError = $Error[0]
Write-Host $StartServiceError
}
}
function StartService {
param ($ServiceName)
try {
Write-Host "Starting $ServiceName"
Start-Service -Name $ServiceName -ErrorAction SilentlyContinue
}
catch {
Write-Host "$ServiceName did not restart"
$StartServiceError = $Error[0]
Write-Host $StartServiceError
}
}
function StopProcess {
param (
$ProcessName
)
try {
Write-Host "Stopping $ProcessName"
$ProcessRunning = Get-Process $ProcessName -ErrorAction SilentlyContinue
if ($ProcessRunning) {
Stop-Process -Name $ProcessName
}
}
catch {
Write-Host "$ProcessName not found"
}
}
function StartProg {
param ($ProgName, $ProgPath, $ProgDir, $ProgArgs)
$ProgRunning = Get-Process $ProgName -ErrorAction SilentlyContinue
if (!$ProgRunning) {
If (Test-Path -Path $ProgPath -PathType Leaf) {
Start-Process -FilePath $ProgPath -WorkingDirectory $ProgDir
}
}
}
function CreateRegKey {
param ($regpath, $keyname, $keyvalue, $keytype)
# Create the key if it does not exist
If (-NOT (Test-Path $regpath)) {
Write-Host "Creating regpath: $regpath"
New-Item -Path $regpath -Force | Out-Null
}
# Set Value
Write-Host "Configuring $keyname to $keyvalue as $keytype"
New-ItemProperty -Path $regpath -Name $keyname -Value $keyvalue -PropertyType $keytype -Force
}
# Stop services
foreach ( $service in $StopServicesList ) {
StopService $service
}
# Stop processes that require an admin to stop
foreach ( $process in $StopAdminProcs ) {
StopProcess $process
}
# Modify Regisitry Settings
Write-Host "Modifying registry settings..."
If ($RegSettings) {
foreach ( $RegEntry in $RegSettings) {
CreateRegKey -regpath $RegEntry.regpath -keyname $RegEntry.keyname -keyvalue $RegEntry.keyvalue -keytype $RegEntry.keytype
}
}
# Wait for RSI Launcher to be closed then start things back up again.
$launcherprocess = (Get-Process -Name "RSI Launcher" -ErrorAction SilentlyContinue)
try {
Write-Host "Waiting for RSI Launcher to close"
Get-Process $launcherprocess.ProcessName | Wait-Process
Write-Host "$launcherprocess no longer running"
}
catch {
Write-Host "RSI Launcher is not running"
}
finally {
Write-Host "RSI Launcher is not running"
}
# Start Services after RSI Launcher is closed
foreach ( $service in $StopServicesList ) {
StartService $service
}
exit 0