4

Powershellスクリプトを呼び出すバッチファイルがあります。

バッチファイル: @ECHO OFF powershell .. \ PowerShellScript.ps1

次に、PowerShellスクリプトには、パラメーターを期待する関数があります。

PowerShellスクリプト:

function PSFunction([string]$Parameter1)
{
Write-Host $Parameter1
}

PowerShellScript.ps1の呼び出し中にバッチファイルから渡す必要のある値:VALUE1があるとしましょう。出力がVALUE1になるように、関数PSFunctionに渡すにはどうすればよいですか?

4

4 に答える 4

6

スクリプトを次のように変更します

function PSFunction([string]$Parameter1)
{
  Write-Host $Parameter1
}

PSFunction $args[0]

バッチファイルからは、次のようになります。

powershell ..\PowerShellScript.ps1 VALUE1
于 2009-07-08T20:10:12.840 に答える
4

-Commandスイッチを使用して、PowerShellプロンプトで入力されたかのように文字列を解釈するようにpowershell.exeに指示します。この場合、文字列はPowerShellScript.ps1をドットソースして(新しいpowershell.exe環境にインポートするため)、VALUE1をパラメーターとしてPSFunctionを呼び出すことができます。

set VALUE1=Hello World
powershell.exe -command ". ..\PowerShellScript.ps1; PSFunction '%VALUE1%'"
于 2009-07-08T21:01:35.607 に答える
3

Powershellスクリプトで関数を定義しても、関数は実行されませ。それが必要な場合は、スクリプトを次のようにする必要があります。

function PSFunction([string]$Parameter1)
{
  Write-Host $Parameter1
}
PSFunction "some string"

$argsスクリプト内から、スクリプトに渡したパラメーターを取得する動的変数がまだあります。それで

function PSFunction([string]$Parameter1)
{
  Write-Host $Parameter1
}
PSFunction $args[0]

コマンドラインで指定した最初のパラメーターを関数に渡します。

于 2009-07-08T20:11:00.747 に答える
1

使用するものを簡単に選択する必要があるように思われます-バッチファイルまたはPowerShell:)PowerShellはより強力ですが、バッチファイルは作成が簡単で(特にDr.Batcherを使用)、どこでも実行できます。

于 2011-04-16T22:19:25.270 に答える