繁体   English   中英

使用C#调用Powershell服务器Commandlet到Enable-WindowsOptionalFeature netfx3

[英]Using C# to invoke powershell server commandlets to Enable-WindowsOptionalFeature netfx3

我正在使用Wi-Fi安装程序的WiX安装程序,因此具有.Net要求。 捆绑必备版本的.Net在服务器操作系统上不起作用,因为它们要求使用角色管理器。 它确实是WiX安装的一部分,但并不是很重要,因为如果有其他方法可以帮助我完成任务,那么它就存在。 我正在作为独立的.Net Console应用程序运行/测试以下代码。 为了解决此问题而无法使用此方法后 ,我编写了以下use powershell和“ Enable-WindowsOptionalFeature”。

    static void Main(string[] args)
    {

        PowerShell ps = PowerShell.Create();
        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.Open();

        Pipeline pipeline = runspace.CreatePipeline();

        Command addDotNet = new Command("Enable-WindowsOptionalFeature");
        addDotNet.Parameters.Add("-FeatureName netfx3 -Online -All");
        pipeline.Commands.Add(addDotNet);
        Collection<PSObject> log = pipeline.Invoke();

}

当我运行它时,将弹出该窗口。
Windows Server角色和功能无法通过Windows功能控制面板自动安装或卸载。 在此处输入图片说明

就像我认为的那样,我已经在使用等效的“ Server Manager cmdlet”,所以我不确定它的实际要求。 因此,两部分的问题是:1)解决此问题的正确方法是什么? 2)如何在安装过程中保持安静。

PS:如果这个问题确实属于服务器故障,请告诉我。

Enable-WindowsOptionalFeature是DISM的一部分,它将用于创建Windows映像以部署到新系统

Add-WindowsFeature是您要寻找的一项,它将功能添加到Windows Server的当前实例。 它在ServerManager powershell模块中,仅在Windows Server上可用(不适用于Windows 7)

我要说的只是基于常识,而不是基于先前的经验,如果这不相关,请抱歉。

您似乎可以在Windows Server 2012上运行,因为只有此版本具有要使用的Windows ADK。 Windows 8(客户端操作系统)和Windows Server 2012(服务器操作系统)具有不同的启用功能方式。 这些在Windows 8中作为“可选功能”出现,但在服务器中作为“服务器角色/功能”出现。

请注意,与您所说的相反,该捆绑软件不能运行,不是因为它是服务器操作系统,而是因为它包含在OS中并且需要启用,因此它不起作用。 这适用于服务器操作系统(Win 2012)和客户端操作系统(Windows 8)。

只是您需要针对Windows 8和Win 2012使用不同的方法。

对于Windows 8,您的方法可以使用。 对于Windows 2012,您所看到的帮助建议您使用Add-WindowsFeature cmdlet。

基本上,该命令会失败,因为您需要安装的组件不在组件存储中。 管理员需要插入安装媒体。 也许您可以在安装程序中包含相应的文件,以免执行手动操作,但我从未尝试过这样做,它可能还会引起许可问题。

对于Server 2012,Microsoft决定默认情况下从组件存储中删除.NET Framework 3.5。 它仍然存在于安装介质上,只是在安装过程中未假脱机到磁盘上。 不久前,我在博客中写了一篇关于这件事的言论

在尝试找出服务器2012实例中发生问题的位置时,我添加了一些其他日志记录/写入语句。 我意识到那些调试行根本没有输出到控制台。

事实证明,我没有足够仔细地阅读弹出窗口。 投诉不是关于使用PS Commandlet的投诉,而是关于试图安装.Net 3.5来运行我的应用程序的投诉。 我的应用程序以.Net 3.5为目标,因此该消息是有关尝试自动安装.Net 3.5的消息

这个问题不仅可以证明我一时的失明和愚蠢,还可以作为评论着重于细节并阅读错误的原因的重要性的注释。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM