2015-06-03 2 views
0

У нас есть сценарий powershell, который мы обходим с помощью программы aC# .Net 4.5 на системах с powershell 4. Одной из главных целей является найти и остановить связанную службу Windows, чтобы мы могли сохранить его.Выполнение powershell с скобками в строке аргумента

Проблема на некоторых сайтах имя службы имеет скобки в имени т.е.

Service Management Acme (support.internal)

Это приводит к тому, чтобы сгенерировать PowerShell исключение, как я думаю, что он пытается разрешить (support.internal) как свойство объекта. Есть ли способ избежать скобок, так как вряд ли мы сможем переименовать все потенциальные имена служб Windows в поле.

Пример, который повторяет эту ошибку ниже

Это argumentstring мы переходим к cmd.exe.

/c powershell -executionpolicy unrestricted c:\psrunner\robotest.ps1 -source "Acme Management Service (support.internal)" -destination "" -logName "c:\psrunner\logs\\03062015_14_04_51.txt" > "c:\psrunner\logs\\powershell_log03062015_14_04_51.txt" 

Когда мы называем сценарий т.е.

support.internal: Термин «support.internal» не распознается как имя командлета, функции, файла сценария или действующий программа. Проверьте правильность написания имени или, если был указан путь, проверьте , что путь верен и повторите попытку. В строке: 1 char: 52 + c: \ psrunner \ robotest.ps1 -source Обновление обновлений для Neutrino (support.internal) -destinatio ... + ~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (support.internal: String) [], Co mmandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

+0

Попробуйте либо обратную сторону «' », либо обратную косую черту, чтобы сбежать, или действительно повсеместно переименовать службу. – Vesper

ответ

2

Одинарные кавычки вместо двойных кавычек должны также позволить PS увидеть вход как чистую строку.

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