2015-09-10 3 views
0

Мы используем Microsoft Release Management 2013 для развертывания в Dev/Test/Prod. Сервер сборки/развертывания - MS2012. Серверы приложений - MS2008. У меня было это работа и развертывание, но потом я начал получать это сообщение. Все, что он делает, использует «Run Command Line» для запуска командного файла на сервере приложений, который создает резервную копию, устанавливает тип запуска служб Windows, останавливает службы и т. Д. Если я запускаю командный файл непосредственно на сервере приложений, он запускает только хорошо. Я добавил более подробное ведение журнала в этой статье, но никакой дополнительной информации не было собрано для отладки. В последнее время Powershell не обновляется на серверах.Ошибка: термин «./RunCommandLine.ps1» не распознается как имя командлета, функции, файла сценария или операционной программы

http://blogs.msdn.com/b/visualstudioalm/archive/2013/12/13/how-to-enable-detailed-logs-and-collect-traces-from-various-release-management-components.aspx

Кто-нибудь знает, где * .PS1 файлы должны быть? Я искал локальный и сервер, но ничего не нашел. Кто-нибудь когда-нибудь сталкивался с этим?

Сообщение об ошибке:

The term './RunCommandLine.ps1' is not recognized as the name of a cmdlet, 
function, script file, or operable program. Check the spelling of the name, 
or if a path was included, verify that the path is correct and try again. 
At line:1 char:21 
+ ./RunCommandLine.ps1 <<<< -FilePath '\\unc-path\batchfile.bat' -Arguments '' 
    + CategoryInfo   : ObjectNotFound: (./RunCommandLine.ps1:String) [] , CommandNotFoundException 
    + FullyQualifiedErrorId : CommandNotFoundException 

ответ

0

Попробуйте

powershell ./RunCommandLine.ps1 
+0

Знаете ли вы, где находится файл RunCommandLine.ps1? –

+0

Нет. Я предположил, что это было в стартовом каталоге. В противном случае "./" не имеет никакого смысла. Если вы откроете приглашение PowerShell как администратор, перейдите в корень вашего диска C: и запустите «Get-ChildItem -Recurse | Where-Object {$ _. Name -match« RunCommandLine.ps1 »), он должен его найти. Он будет плюнуть на некоторые ошибки разрешений, но он все равно продолжит смотреть, что может. –

+1

Спасибо за помощь, но слишком много доступа запрещено! haha Это работает ... dir/b/s c: \ RunCommandLine.ps1 –

2

При выполнении сценария как ./RunCommandLine.ps1 сценарий, как ожидается, будет в текущем рабочем каталоге (.). В зависимости от среды, из которой вы выполняете этот оператор, рабочий каталог может быть не таким, каким вы ожидаете.

Вот некоторые команды, которые позволяют определить текущий рабочий каталог при запуске точно так же, как ваш сценарий:

$PWD.Path 
(Get-Location).Path 
(Resolve-Path '.').Path 

Есть в основном 3 способа решения вопроса:

  • Укажите путь к сценарию PowerShell относительно текущего рабочего каталога.
  • Изменить текущий рабочий каталог в папку сценария PowerShell:

    Push-Location 'C:\some\folder' 
    .\RunCommandLine.ps1 
    Pop-Location 
    
  • Выполнить скрипт PowerShell с его полным путем:

    & 'C:\some\folder\RunCommandLine.ps1' 
    

    Оператор вызова (&) позволяет которые определяются как строки (например, потому что они содержат пробелы), которые в противном случае просто отражались бы.

Смежные вопросы

 Смежные вопросы