DscResources/xAzureTempDrive/xAzureTempDrive.psm1
function Get-TargetResource { [OutputType([System.Collections.Hashtable])] param ( [Parameter(Mandatory)] [string]$DriveLetter ) Write-Verbose -Message 'Retrieving Pagefile settings' $pagefile = Get-CimInstance win32_pagefilesetting if ($pagefile -ne $null) { $pagefile = $pagefile.Name.ToLower() } $returnValue = @{ DriveLetter = [string]$pagefile } return $returnValue } function Set-TargetResource { param ( [Parameter(Mandatory)] [string]$DriveLetter ) if ($DriveLetter.Length -gt 1){$DriveLetter = $DriveLetter[0]} $CurrentValue = (Get-TargetResource @PSBoundParameters).DriveLetter if ($currentvalue -ne $null) { $pagefile = Get-CimInstance win32_pagefilesetting Remove-CimInstance -InputObject $pagefile $global:DSCMachineStatus = 1 } else { $CurrentDriveLetter = (get-volume -FileSystemLabel "Temporary Storage").DriveLetter if ($CurrentDriveLetter -ne $DriveLetter) { Write-Verbose "Changing drive letter from [$CurrentDriveLetter] to [$DriveLetter]" Get-Partition -DriveLetter $CurrentDriveLetter | Set-Partition -NewDriveLetter $DriveLetter } $DriveLetter = $DriveLetter + ":" Write-Verbose "Attaching pagefile to the new Driveletter" New-CimInstance -ClassName Win32_PageFileSetting -Property @{Name = "$DriveLetter\pagefile.sys"} $global:DSCMachineStatus = 1 } } function Test-TargetResource { [OutputType([System.Boolean])] param ( [Parameter(Mandatory)] [string]$DriveLetter ) Write-Verbose -Message 'Testing Pagefile Driveletter assignment' if ($DriveLetter.Length -gt 1){$DriveLetter = $DriveLetter[0]} $CurrentValue = Get-TargetResource @PSBoundParameters if ($CurrentValue.DriveLetter -notlike "$($DriveLetter):*") { return $false } Write-Verbose -Message 'Testing Temporary Storage Driveletter' $CurrentDriveLetter = (get-volume -FileSystemLabel "Temporary Storage").DriveLetter if ($CurrentDriveLetter -ne $DriveLetter) { return $false } else { return $true } } Export-ModuleMember -Function *-TargetResource |