1

そのため、次のようなタスクを完了するために、製品専用の特定の IIS サイト設定用の IIS 管理スクリプトに取り組んでいます。

- Create Site
- Create App Pool
- Create Virtual directories

問題は、問題ごとに個別のスクリプトを保持し、それらを親スクリプトで参照したいということです。親スクリプトを実行して、完全な展開/セットアップを実行できます。または、特定のタスクに対して個々のスクリプトを実行することもできます。問題は、それらが対話型であるため、タスクの完了に関連するユーザー情報を要求することです。

各スクリプトがユーザーから情報を取得するスクリプト本体を持つ問題にアプローチする方法がわかりませんが、それが親スクリプトにロードされている場合、その特定のスクリプトのスクリプト本体がユーザーにプロンプ​​トを表示しないようにします。

注: それらをモジュールに配置して、個々の「環境にエクスポート」関数を起動できることはわかっていますが、このスクリプトは、セットアップが必要な環境に移動され、モジュール (psm1) ファイルを手動で配置する必要があります。スクリプトを実行するためだけに適切な PowerShell モジュール フォルダーに移動する方法は、私はあまり好きではありません。

Powershell でスクリプトを作成するのは初めてですが、考えや推奨事項はありますか?

考えられる答え*

これは(a)解決策かもしれませんが、作業ディレクトリからインポートモジュールを作成でき、そこからエクスポートされた関数にアクセスできることがわかりました。

他の提案にも興味があります。

4

3 に答える 3

2

deploy.ps1個々のスクリプトをドットソースし、それらの中で必要な関数を呼び出すスクリプトを作成できます。

. $scriptDir\create-site.ps1
. $scriptDir\create-apppool.ps1
. $scriptDir\create-virtualdirectories.ps1

Prompt-Values

Create-Site -site test
Create-AppPool -pool test
Create-VirtualDirectories -vd test

個々の関数では、必要な値が呼び出し元 ( deploy.ps1 またはコマンド ライン) から渡されているかどうかを確認できます。

たとえば、create-site.ps1 は次のようになります。

function Create-Site($site){
    if(-not $site){
         Prompt-Values
    }
}
于 2011-12-20T18:42:06.030 に答える
2

私が対処する方法は、実行に必要な情報を収集する各サブスクリプトの上部にパラメーター ブロックを実装することです。サブスクリプトが個別に実行される場合、param ブロックは、その個別のスクリプトを実行するために必要なデータをユーザーに要求します。これにより、親スクリプトは、親スクリプトがサブスクリプトを呼び出すときに、サブスクリプトを実行するために必要なデータを渡すこともできます。必要なデータは、親スクリプトにハードコーディングするか、プロンプトを表示するか、またはそれらを組み合わせて使用​​できます。そうすれば、サブスクリプトをサイレントに、またはユーザーの操作で実行できます。Powershell のパラメーター処理メカニズムから無料でユーザー操作を取得します。サブスクリプトにパラメーター属性を追加して、呼び出し元のスクリプトによって特定のパラメーター値がまだ提供されていない場合、Powershell がユーザーに特定のパラメーター値を要求することを示します。

サブスクリプトの先頭で、パラメーター ブロックを使用して必要なデータを収集します。

param
(
    [parameter(Mandatory=$true, HelpMessage="This is required, please enter a value.")]
    [string] $SomeParameter
)
于 2011-12-21T14:25:35.590 に答える
1

理想は、そのモジュールの配布に関する懸念に応じて、モジュールに独自の設定の保存を維持させ、設定を操作するのに役立つコマンドを作成することです。

いえ

Set-SiteInfo -Name -Pool -VirtualDirectory を記述し、値をレジストリまたはモジュールのローカル ディレクトリ ($psScriptRoot) に格納してから、モジュール内の他のコマンドでこれを使用します。

権限の低いユーザーがファイルへの書き込みアクセス権を持たない場所 (つまり、Web サイトのディレクトリ、または $psHome) にモジュールを配置する場合は、値をレジストリに保存する方がよいでしょう。

お役に立てれば

于 2011-12-21T02:01:26.460 に答える