c# - C#プログラムからのPowerShellスクリプトの実行は、直接実行する場合とは異なる動作をします

原文 c# powershell iis

私はウェブサイトを作成するためのPowerShellスクリプトを書きました、

powershellコマンドプロンプトからスクリプトを実行すると、完全に実行されますが、C#プログラムを介して実行すると、機能しない場合と機能する場合があります。

apppooolを作成するためのスクリプトも同じです。バージョン4.0のアプリプールを作成することについて言及しましたが、プログラムを通じてバージョン2.0のアプリプールを作成します

IIS 7.5でC#Webアプリケーションをホストしました...これはIISセキュリティの問題であると思います

脚本:

Import-Module WebAdministration -Force;

$siteName=$args[0];
$AppPoolName=$args[1];
$PortNumber=$args[2];
$PhysicalPath=$args[3];



New-Item IIS:\Sites\$siteName -physicalPath $PhysicalPath$siteName -bindings @{protocol="http";bindingInformation=":"+$PortNumber+":"}
Set-ItemProperty IIS:\Sites\$siteName -Name applicationPool -Value $AppPoolName


C#コード

RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
            Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
            runspace.Open();
            var runSpaceInvoker = new RunspaceInvoke(runspace);
            runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted -Scope Process -Force");
            Pipeline pipeline = runspace.CreatePipeline();
            var appPoolName = new CommandParameter(null, command.SiteName);
            var siteName = new CommandParameter(null, command.SiteName);
            var scriptPath = ConfigurationManager.AppSettings["PowershellSscriptRootPath"];
            var websiteRootFolder = ConfigurationManager.AppSettings["PhysicalPathRoot"];
            var websitePath = websiteRootFolder + "\\" + command.SiteName + "\\";

            #region CreateWebsite

            string scriptPathForCreateWebsiteFromConfiguration = scriptPath + ConfigurationManager.AppSettings["CreateWebsiteScriptName"];
            var createWebsiteCommand = new Command(scriptPathForCreateWebsiteFromConfiguration);
            createWebsiteCommand.Parameters.Add(siteName);
            createWebsiteCommand.Parameters.Add(appPoolName);
            createWebsiteCommand.Parameters.Add(new CommandParameter(null, "80"));
            createWebsiteCommand.Parameters.Add(new CommandParameter(null, websiteRootFolder)); 
            pipeline.Commands.Add(createWebsiteCommand);

            #endregion
            pipeline.Invoke();
            runspace.Close();


ありがとう
答え
新しいサイトにバインドするポートがすでに使用されている場合、新しいサイトは作成されません
関連記事

c# - ViewModel依存関係を持つICommand

c# - WCF独自のEndpointBehavior読み取りクライアントセッション

c# - Convert.ChangeType()が日付文字列(dd / MM / yyyy形式)を日時タイプに変換しないのはなぜですか?

c# - 辞書からnull可能値を削除し、型を再キャストする

c# - C++からC#への複雑な構造体のマーシャリング

c# - C#:テキストファイルへの変数の挿入

c# - エンティティフレームワークで作成されたデータベースからヘルパーのドロップダウンリストにアイテムをロードする

c# - Web APIのリクエストに一致する複数のアクションが見つかりました

c# - 日付ピッカーのドロップダウンリストから日付を無効にする

c# - TFSがビルドのgit reposを複製しているときのAppDomainUnloadedException