BitsServer.psm1
enum protocols { http https } [DscResource()] class BitsServer { # Properties # Path for Bits Transfers directory [DscProperty(Key)] [string] $path # Port Number [DscProperty()] [int] $port = 80 # WebSite Name [DscProperty()] [string] $webSiteName = 'Bits' # Protocol [DscProperty()] [protocols] $protocol = 'http' # Gets the resource's current state. [BitsServer] Get() { return $this } # Sets the desired state of the resource. [void] Set() { Import-Module $PSScriptRoot\tools.psm1 if (! (features -action Test)) { features -action Set } if (! (directory -path $this.path -action Test)) { directory -path $this.path -action Set } if (! (permissions -action Test -path $this.path)) { permissions -action Set -path $this.path } if (! (website -action Test -path $this.path -website $this.webSiteName -port $this.port -protocol $this.protocol)) { website -action Set -path $this.path -website $this.webSiteName -port $this.port -protocol $this.protocol } if (! (mimeTypes -action Test)) { mimeTypes -action Set } if (! (bitsuploads -action Test -website $this.webSiteName)) { bitsuploads -action Set -website $this.webSiteName } } # Tests if the resource is in the desired state. [bool] Test() { Import-Module $PSScriptRoot\tools.psm1 if (! (features -action Test)) { return $false } if (! (directory -path $this.path -action Test)) { return $false } if (! (permissions -action Test -path $this.path)) { return $false } if (! (website -action Test -path $this.path -website $this.webSiteName -port $this.port -protocol $this.protocol)) { return $false } if (! (mimeTypes -action Test)) { return $false } if (! (bitsuploads -action Test -website $this.webSiteName)) { return $false } return $true } } <# function Set-TargetResource { param ( [string] $path, [int] $port = 80, [string] $webSiteName = 'Bits', [protocols] $protocol = 'http' ) { if (! (features -action Test)) { features -action Set } if (! (directory -path $this.path -action Test)) { directory -path $this.path -action Set } if (! (permissions -action Test -path $this.path)) { permissions -action Set -path $this.path } if (! (website -action Test -path $this.path -website $this.webSiteName -port $this.port -protocol $this.protocol)) { website -action Set -path $this.path -website $this.webSiteName -port $this.port -protocol $this.protocol } if (! (mimeTypes -action Test)) { mimeTypes -action Set } if (! (bitsuploads -action Test -website $this.webSiteName)) { bitsuploads -action Set -website $this.webSiteName } } } function Test-TargetResource { param ( [string] $path, [int] $port = 80, [string] $webSiteName = 'Bits', [protocols] $protocol = 'http' ) { if (! (features -action Test)) { return $false } if (! (directory -path $this.path -action Test)) { return $false } if (! (permissions -action Test -path $this.path)) { return $false } if (! (website -action Test -path $this.path -website $this.webSiteName -port $this.port -protocol $this.protocol)) { return $false } if (! (mimeTypes -action Test)) { return $false } if (! (bitsuploads -action Test -website $this.webSiteName)) { return $false } return $true } } function Get-TargetResource { param ( [string] $path, [int] $port = 80, [string] $webSiteName = 'Bits', [protocols] $protocol = 'http' ) { return @{ 'Path'= $path 'Port' = $port 'webSiteName' = $webSiteName 'protocol' = $protocol } } }#> |