Вызов командлета powershell из скрипта ps

У меня есть командлет со следующим определением:

[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" -Overwrite

Однако, когда я запускаю свой скрипт ps, я получаю следующую ошибку:

Invoke-Expression: невозможно найти позиционный параметр, который принимает аргумент «9595». Как я могу заставить его работать? Спасибо.


person laconicdev    schedule 08.01.2013    source источник


Ответы (1)


Пытаться:

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

Ваша команда включает аргументы, в которых используются кавычки, поэтому PS считает, что ваша команда завершена, и это новые аргументы (не часть параметра -Command).

person Frode F.    schedule 08.01.2013