forked from Skatterbrainz/sccm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Set-CmLab-WsusDBFilePaths.ps1
43 lines (36 loc) · 1.46 KB
/
Set-CmLab-WsusDBFilePaths.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
<#
Set-CmLab-WsusDBFilePaths.ps1
#>
[CmdletBinding()]
param (
[parameter(Mandatory=$False, HelpMessage="New Database Files Path")]
[string] $NewFolderPath = "G:\Database"
)
$DatabaseName = "SUSDB"
$ServiceName = "WsusService"
$AppPool = "WsusPool"
Import-Module WebAdministration
Write-Verbose "stopping WSUS application pool"
Stop-WebAppPool -Name $AppPool
Write-Verbose "stopping WSUS service"
Get-Service -Name $ServiceName | Stop-Service
Import-Module SQLPS -DisableNameChecking
$UpdateStatistics = $False
$RemoveFullTextIndexFile = $False
$ServerName = $env:COMPUTERNAME
$ServerSource = New-Object "Microsoft.SqlServer.Management.Smo.Server" $ServerName
Write-Verbose "detaching WSUS SUSDB database"
$Db = $ServerSource.Databases | Where-Object {$_.Name -eq $DatabaseName}
$CurrentPath = $Db.PrimaryFilePath
$ServerSource.DetachDatabase($DatabaseName, $True, $True)
$files = Get-ChildItem -Path $CurrentPath -Filter "$DatabaseName*.??f"
Write-Verbose "moving database files to $NewFolderPath"
$files | Move-Item -Destination $NewFolderPath
$files = (Get-ChildItem -Path $NewFolderPath -Filter "$DatabaseName*.??f") | Select-Object -ExpandProperty FullName
Write-Verbose "attaching database files"
$ServerSource.AttachDatabase("SUSDB", $files, 'sa')
Write-Verbose "starting WSUS service"
Get-Service -Name $ServiceName | Start-Service
Write-Verbose "starting WSUS app pool"
Start-WebAppPool -Name $AppPool
Write-Host "WSUS database files have been moved to $NewFolderPath"