Я работал над этой проблемой пару дней и прочитал несколько постов здесь, но не могу заставить свою реализацию работать.Я вызываю сценарий powershell во время пользовательского действия «Зафиксировать».Когда я попадаю в метод pipe.Invoke (), я получаю исключение, в котором говорится, что весь сценарий «не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, еслипуть был включен, проверьте правильность пути и попробуйте снова. "
Вот мой сценарий:
Param(
[parameter(Mandatory=$true,ValueFromPipeline=$true)]
[string]$installPath
);
schtasks /create /TN MyTask /RU domain\account /RP password /xml $installPath\MyTaskSchedule.xml;
Я пробовал его с конечными точками с запятой и без,с и без функции упаковки.Я проверил, что код C # передает правильный путь установки и что xml-файл существует в каталоге до того, как будет выполнен этот шаг.Я могу запустить это из самого PowerShell, и он работает просто отлично.
Вот мой код:
public override void Commit( System.Collections.IDictionary savedState )
{
base.Commit( savedState );
String targetDirectory = this.Context.Parameters["TDir"].ToString();
String script = System.IO.File.ReadAllText( targetDirectory + "TaskScheduler.ps1" );
RunspaceConfiguration c = RunspaceConfiguration.Create();
using ( Runspace runspace = RunspaceFactory.CreateRunspace() )
{
runspace.Open();
using ( Pipeline pipeline = runspace.CreatePipeline() )
{
Command myCommand = new Command( script );
CommandParameter param = new CommandParameter( "installPath", targetDirectory.Replace("\\\\", "\\") );
myCommand.Parameters.Add( param );
pipeline.Commands.Add( myCommand );
try
{
pipeline.Invoke();
}
catch ( Exception e )
{
MessageBox.Show( e.Message );
}
}
}
}
Когда исключение перехватывается в pipe.Invoke, отображается весь сценарий (с$ installPath вместо фактического пути) в виде строки перед сообщением об ошибке, описанным выше.Я пробовал несколько проверок внутри самого скрипта, но я получаю одинаковые результаты, несмотря ни на что, что говорит мне о том, что пространству выполнения просто не нравится сам скрипт.