RDS Server Prerequisites
This commit is contained in:
parent
4ecb5896ce
commit
28bf005356
1 changed files with 72 additions and 33 deletions
|
@ -129,10 +129,40 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
public override bool IsInstalled()
|
public override bool IsInstalled()
|
||||||
{
|
{
|
||||||
// TODO: Remove it.
|
|
||||||
//return true;
|
|
||||||
Server.Utils.OS.WindowsVersion version = WebsitePanel.Server.Utils.OS.GetVersion();
|
Server.Utils.OS.WindowsVersion version = WebsitePanel.Server.Utils.OS.GetVersion();
|
||||||
return version == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2012;
|
return version == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2012 || version == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2012R2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string[] Install()
|
||||||
|
{
|
||||||
|
Runspace runSpace = null;
|
||||||
|
PSObject feature = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runSpace = OpenRunspace();
|
||||||
|
|
||||||
|
if (!IsFeatureInstalled("Desktop-Experience", runSpace))
|
||||||
|
{
|
||||||
|
feature = AddFeature(runSpace, "Desktop-Experience", true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsFeatureInstalled("NET-Framework-Core", runSpace))
|
||||||
|
{
|
||||||
|
feature = AddFeature(runSpace, "NET-Framework-Core", true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IsFeatureInstalled("NET-Framework-45-Core", runSpace))
|
||||||
|
{
|
||||||
|
feature = AddFeature(runSpace, "NET-Framework-45-Core", true, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runSpace);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new string[]{};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -790,37 +820,13 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
public bool AddSessionHostFeatureToServer(string hostName)
|
public bool AddSessionHostFeatureToServer(string hostName)
|
||||||
{
|
{
|
||||||
bool installationResult = false;
|
bool installationResult = false;
|
||||||
|
|
||||||
Runspace runSpace = null;
|
Runspace runSpace = null;
|
||||||
PSObject feature = null;
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (!CheckSessionHostFeatureInstallation(hostName))
|
runSpace = OpenRunspace();
|
||||||
{
|
var feature = AddFeature(runSpace, hostName, "RDS-RD-Server", true, true);
|
||||||
runSpace = OpenRunspace();
|
installationResult = (bool)GetPSObjectProperty(feature, "Success");
|
||||||
|
|
||||||
feature = AddFeature(runSpace, hostName, "RDS-RD-Server", true, true);
|
|
||||||
installationResult = (bool)GetPSObjectProperty(feature, "Success");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
runSpace = OpenRunspace();
|
|
||||||
installationResult = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (installationResult && !IsFeatureInstalled(hostName, "Desktop-Experience", runSpace))
|
|
||||||
{
|
|
||||||
feature = AddFeature(runSpace, hostName, "Desktop-Experience", true, false);
|
|
||||||
installationResult = (bool) GetPSObjectProperty(feature, "Success");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (installationResult && !IsFeatureInstalled(hostName, "NET-Framework-45-Core", runSpace))
|
|
||||||
{
|
|
||||||
feature = AddFeature(runSpace, hostName, "NET-Framework-45-Core", true, false);
|
|
||||||
installationResult = (bool)GetPSObjectProperty(feature, "Success");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -1134,6 +1140,21 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
#region Windows Feature PowerShell
|
#region Windows Feature PowerShell
|
||||||
|
|
||||||
|
internal bool IsFeatureInstalled(string featureName, Runspace runSpace)
|
||||||
|
{
|
||||||
|
bool isInstalled = false;
|
||||||
|
Command cmd = new Command("Get-WindowsFeature");
|
||||||
|
cmd.Parameters.Add("Name", featureName);
|
||||||
|
var feature = ExecuteShellCommand(runSpace, cmd, false).FirstOrDefault();
|
||||||
|
|
||||||
|
if (feature != null)
|
||||||
|
{
|
||||||
|
isInstalled = (bool)GetPSObjectProperty(feature, "Installed");
|
||||||
|
}
|
||||||
|
|
||||||
|
return isInstalled;
|
||||||
|
}
|
||||||
|
|
||||||
internal bool IsFeatureInstalled(string hostName, string featureName, Runspace runSpace)
|
internal bool IsFeatureInstalled(string hostName, string featureName, Runspace runSpace)
|
||||||
{
|
{
|
||||||
bool isInstalled = false;
|
bool isInstalled = false;
|
||||||
|
@ -1149,6 +1170,24 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return isInstalled;
|
return isInstalled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal PSObject AddFeature(Runspace runSpace, string featureName, bool includeAllSubFeature = true, bool restart = false)
|
||||||
|
{
|
||||||
|
Command cmd = new Command("Add-WindowsFeature");
|
||||||
|
cmd.Parameters.Add("Name", featureName);
|
||||||
|
|
||||||
|
if (includeAllSubFeature)
|
||||||
|
{
|
||||||
|
cmd.Parameters.Add("IncludeAllSubFeature", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (restart)
|
||||||
|
{
|
||||||
|
cmd.Parameters.Add("Restart", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ExecuteShellCommand(runSpace, cmd, false).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
internal PSObject AddFeature(Runspace runSpace, string hostName, string featureName, bool includeAllSubFeature = true, bool restart = false)
|
internal PSObject AddFeature(Runspace runSpace, string hostName, string featureName, bool includeAllSubFeature = true, bool restart = false)
|
||||||
{
|
{
|
||||||
Command cmd = new Command("Add-WindowsFeature");
|
Command cmd = new Command("Add-WindowsFeature");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue