脚本手动运行但不通过c#运行

时间:2018-05-22 19:42:52

标签: c# powershell windows-server-2012

我写了一个简单的控制台应用程序,该应用程序以管理员权限运行,代码基于this link,用户输入.ps1(powershell)脚本路径,应用程序执行此路径中的此脚本。

首先我尝试了#34; Hello World"脚本并且工作正常,但是当我尝试其他脚本时,powershell会出错。

我在.ps1 scipt:

中有这个
install-WindowsFeature smtp-server
Read-Host -Prompt “Press Enter to exit”

令人惊讶的是,如果我手动运行此命令install-WindowsFeature smtp-server,它可以正常工作。

但是我需要应用程序才会这样做,而不是手动。

以下是powershell错误:

install-WindowsFeature : The term 'install-WindowsFeature' is not recognized as the name of a cmdlet, function, script
file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct
and try again.
At c:\users\administrator\desktop\EnableSMTP.ps1:1 char:1
+ install-WindowsFeature smtp-server
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (install-WindowsFeature:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Press Enter to exit:

3 个答案:

答案 0 :(得分:1)

Install-WindowsFeature是ServerManager模块提供的cmdlet。手动运行脚本时,必须已将此模块导入到会话中。通过程序运行时,模块未导入,因此无法识别cmdlet名称。尝试添加Import-Module ServerManager作为脚本中的第一行,看看是否能解决您的问题。

答案 1 :(得分:1)

过去发生在我身上。

在解决方案资源管理器中,右键单击项目 - >属性 - >构建

Channge平台目标从“任何CPU”到x64

enter image description here

答案 2 :(得分:-1)

我想你可能需要一个资本“我”...... 安装-WindowsFeature