2

次のようにtxtファイルを作成する単純なpowershellスクリプトがあります:-

set-executionpolicy unrestricted -force

$MyVar = 'My Content'

$MyVar | out-file -FilePath "C:\_Testing\test.txt"

これは、ColdFusion スクリプトから呼び出されます:-

<cfexecute name="C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
    arguments="C:\ColdFusion9\wwwroot\testsite\wwwroot\_Testing\powershellTest.ps1"/>

そして、それは機能します-txtファイルを作成してコンテンツを入れますが、私がやりたいことは、cfexecuteを介して変数を$ MyVarに渡して、コンテンツが動的になるようにすることです。

どんな助けでも大歓迎です

ポール

4

2 に答える 2

1

必要なのは、パラメーターを持つスクリプトです。パラメータ定義はスクリプトの先頭に配置され、次のようになります。

param(
    [Parameter(Mandatory=$true)]
    [string]
    # Variable to test that parameter is getting set from ColdFusion
    $MyVar
)

$MyVar | Set-Content "C:\_Testing\test.txt"

パラメータに関するメタデータである先着属性。この例では、パラメーターが必須であることを示しており、値が指定されていない場合、PowerShell はエラーを返します。

次は変数の型です。、、 など[int]、任意の .NET タイプを使用できます。[DateTime][Hashtable]

タイプの後には、変数のドキュメントがあり、誰かが を実行するときに役立ちますGet-Help powershellTest.ps1

最後に、変数 を宣言します$MyVar

パラメータ、パラメータ属性、検証などの詳細については、about_functions_advanced_pa​​rametersヘルプ トピックを参照してください。

ここで注意が必要なのは、PowerShell への呼び出しが実際にcmd.exe 最初に実行されることです。そのため、スクリプトのパラメーターの値によっては、物事を正しく引用するためにいくつかのファンキーな魔法を実行する必要がある場合があります。

また、Set-Contentの代わりに使用しOut-Fileます。 Out-Fileバイナリ オブジェクトとデータの保存を目的としており、UCS-2 でテキスト ファイルをエンコードします。 Set-ContentANSI/UTF-8 でファイルをエンコードします。

于 2013-07-09T07:34:42.103 に答える