1

次の定義のコマンドレットがあります。

[CmdletBinding(DefaultParameterSetName="Path",
               SupportsShouldProcess=$TRUE)]
param(
  [parameter(Mandatory=$TRUE,Position=0)]
    [String] $Pattern,
  [parameter(Mandatory=$TRUE,Position=1)]
    [String] [AllowEmptyString()] $Replacement,
  [parameter(Mandatory=$TRUE,ParameterSetName="Path",
    Position=2,ValueFromPipeline=$TRUE)]
    [String[]] $Path,
  [parameter(Mandatory=$TRUE,ParameterSetName="LiteralPath",
    Position=2)]
    [String[]] $LiteralPath,
    [Switch] $CaseSensitive,
    [Switch] $Multiline,
    [Switch] $UnixText,
    [Switch] $Overwrite,
    [Switch] $Force,
    [String] $Encoding="ASCII"
)

次のように、コマンドレット.ps1ファイルを、コマンドレットを呼び出すPowerShellスクリプトファイルと同じフォルダーに配置します。

Invoke-Expression-Command。\Replace-FileString.ps1"9595" "NewPort" "c:\temp"-上書き

ただし、psスクリプトを実行すると、次のエラーが発生します。

Invoke-Expression:引数「9595」を受け入れる位置パラメーターが見つかりません。どうすればそれを機能させることができますか?ありがとう。

4

1 に答える 1

2

試す:

Invoke-Expression -Command '.\Replace-FileString.ps1 "9595" "NewPort" "c:\temp" -Overwrite'

コマンドには引用符を使用する引数が含まれているため、PSはコマンドが終了したと見なし、それらは新しい引数です(-Commandパラメーターの一部ではありません)。

于 2013-01-08T18:43:42.217 に答える