Scripts/Show-WsustainableSettingsView.ps1

enum Win32OperatingSystemProductType{
    WorkStation = 1
    DomainController = 2
    Server = 3
}

Function Global:Get-FsResourceManagerInstalledStatus{
    $Status = $False
    Try{
        $Status = (Get-WindowsFeature FS-Resource-Manager).Installed
    }
    Catch{
        $Status = $False
    }
    Return $Status
}

Function Global:Show-WsustainableSettingsView{
    If ([Win32OperatingSystemProductType](Get-WmiObject Win32_OperatingSystem).ProductType -ne [Win32OperatingSystemProductType]::WorkStation){
        If (-not (Get-FsResourceManagerInstalledStatus)){
            $ChoiceDescription = [System.Management.Automation.Host.ChoiceDescription]
            $MessageOptions = @(
                New-Object $ChoiceDescription ("インストールする(&I)","")
                New-Object $ChoiceDescription ("インストールしない(&N)", "")
            )
            $MessageResult = $Host.Ui.PromptForChoice("ファイル サーバー リソース マネージャーをインストールしますか?", "事前にインストールすることにより、設定をスムーズに進めることができます。", $MessageOptions, 0)
            If ($MessageResult -eq 0){
                Install-WindowsFeature FS-Resource-Manager -IncludeManagementTools
            }
        }
    }

    Add-Type -AssemblyName System,System.Core,System.Windows.Forms,PresentationFramework,PresentationCore,WindowsBase,WindowsFormsIntegration,System.Xml.Linq,System.Dynamic | Out-Null
    #[Console].AssemblyQualifiedName
    [Windows.Forms.Application]::EnableVisualStyles()
    [System.Environment]::CurrentDirectory = (Get-Location)
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

    $Global:DefaultConfig = Get-Content "Config\Default.json" -Encoding UTF8 | ConvertFrom-Json

    Get-ChildItem -Path (Join-Path $PSScriptRoot "..\View\*.ps1") | ForEach-Object { . $_}

    Get-ViewClass
    Get-MainWindow
    If (($MainWindow.ShowDialog()) -eq $False)
    {
        Write-Verbose "キャンセルされました"
    }
}
Export-ModuleMember -Function Show-WsustainableSettingsView