DSCResources/xSPDisableServerSideView/xSPDisableServerSideView.psm1

#$script:resourceModulePath = Split-Path -Path (Split-Path -Path $PSScriptRoot -Parent) -Parent
#$script:modulesFolderPath = Join-Path -Path $script:resourceModulePath -ChildPath 'Modules'
#$script:resourceHelperModulePath = Join-Path -Path $script:modulesFolderPath -ChildPath 'DSCR_MIMSettings.Util'
#Import-Module -Name (Join-Path -Path $script:resourceHelperModulePath -ChildPath 'Invoke-SPDscCommand.psm1')

Import-Module -Name "C:\Program Files\WindowsPowerShell\Modules\SharePointDSC\Modules\SharePointDsc.Util\SharePointDsc.Util.psm1"

function Get-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param
    (
        [Parameter()]
        [System.Management.Automation.PSCredential]
        $InstallAccount,

        [Parameter(Mandatory = $true)]
        [ValidateSet("Present","Absent")]
        [System.String]
        $Ensure
    )
  #Update
    Write-Verbose -Message "Getting ServerSideView State"
    $result = Invoke-SPDscCommand -Credential $InstallAccount `
        -Arguments $PSBoundParameters `
        -ScriptBlock {
        $params = $args[0]
        $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
        if ($contentService.ViewStateOnServer) 
        {
            return @{
                Ensure                = "Present"
                InstallAccount        = $params.InstallAccount
                CurrentValue          = $contentService.ViewStateOnServer
            }
            Write-Verbose -Message "Current ServerSideView State Value is set to $($contentService.ViewStateOnServer)"
        }
        else
        {
             return @{
                Ensure                = "Absent"
                InstallAccount        = $params.InstallAccount
                CurrentValue          = $contentService.ViewStateOnServer
            }
            Write-Verbose -Message "Current ServerSideView State Value is set to $($contentService.ViewStateOnServer)"           
        }
    }
    return $result
}


function Set-TargetResource
{
    [CmdletBinding()]
    param
    (
        [Parameter()]
        [System.Management.Automation.PSCredential]
        $InstallAccount,

        [Parameter(Mandatory = $true)]
        [ValidateSet("Present","Absent")]
        [System.String]
        $Ensure
    )

    $currentValues = Get-TargetResource -Ensure Present
    if (($CurrentValues.CurrentValue) -and ( $Ensure -eq "Absent"))
    {
        Write-Verbose -Message ("DisableServerSideView Not in Desired State, Changing to $false")
        Invoke-SPDscCommand -Credential $InstallAccount `
            -Arguments $PSBoundParameters `
            -ScriptBlock {
            $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
            $contentService.ViewStateOnServer = $False
            $contentService.Update()
        }
    }
    else
    {

        Write-Verbose -Message ("DisableServerSideView, Changing to $true")
        Invoke-SPDscCommand -Credential $InstallAccount `
            -Arguments $PSBoundParameters `
            -ScriptBlock {
            $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
            $contentService.ViewStateOnServer = $true
            $contentService.Update()
        }
    }

}


function Test-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        [Parameter()]
        [System.Management.Automation.PSCredential]
        $InstallAccount,

        [Parameter(Mandatory = $true)]
        [ValidateSet("Present","Absent")]
        [System.String]
        $Ensure
    )

   $CurrentValues = Get-TargetResource -Ensure Present
   
    Write-Verbose -Message "Current Values: $($CurrentValues.CurrentValue)"
    Write-Verbose -Message "Target Values: $(if ( $PSBoundParameters.Ensure -eq "Absent"){$false}else{$true})"

    $result =  invoke-SPDscCommand -ScriptBlock {
        $contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
        if ($contentService.ViewStateOnServer)
        {$false}Else{$true}

    }
    Write-Verbose -Message "Test-TargetResource returned $result"

    return $result

}
Export-ModuleMember -Function *-TargetResource