繁体   English   中英

如果使用C#调用Powershell,则New-Item无效

[英]New-Item not working if use C# to call Powershell

最初的问题很大,现在我缩小到:

如果我在powershell控制台窗口中运行以下powershsell脚本,$ appPool是Microsoft.IIs.PowerShell.Framework.ConfigurationElement类型,并且可以在我的IIS中创建新的应用程序池。

Import-Module WebAdministration
$appPool = New-Item ("IIS:\AppPools\$iissitename")

但是,如果我使用C#运行我的脚本,$ appPool将为NULL,并且不会创建任何应用程序池。

任何想法? 谢谢堆!

--------- 更新 ------------

如果我使用其他Web服务器(IIS)管理Cmdlet,如:

Import-Module WebAdministration

Get-Website

我的C#项目将抛出异常,例如:找不到名为“WebAdministration”的提供程序

------ 更新更多 ------

从C#调用时,其他一些名为“Get-ChildItem IIS:\\ apppools”的powershell命令都无效。

WebAdministration模块似乎只是64位 - 至少在我测试的64位系统上。 它所依赖的那个或一些COM组件尚未在32位注册表配置单元中注册。 确保将您的C#应用​​程序编译为x64。

我想我可能会找到答案。 看起来Powershell中的IIS相关命令需要管理员才能运行。 如果我使用C#来调用ps文件,ps中的命令应该是:

Start-Process powershell -Verb runAs -ArgumentList "Invoke-Command -ScriptBlock {Get-WebSite }"

暂无
暂无

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

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