Командлет в качестве значения переменной
Столкнулся с такой проблемой, например нужно получить список служб
Код:
clear
$a="get-service"
$a
write-host ---------------
&$a
Но вот использовать подстановочный знак не получается,
Код:
clear
$a="get-service a*"
$a
write-host ---------------
&$a
Цитата:
get-service a*
---------------
& : Имя "get-service a*" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность
написания имени, а также наличие и правильность пути, после чего повторите попытку.
D:\!_Scripts\set for comandlet variable.ps1:9 знак:2
+ &$a
+ ~~
+ CategoryInfo : ObjectNotFound: (get-service a*:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
|
Это в принципе невозможно или здесь я допустил ошибку в написании переменной ?
Спасибо.
|
Зачем ставить "" - кавычки?
$a=get-service a*
&$a - Убрать.
|
Код:
$a="get-service a*"
$a
write-host ---------------
Invoke-Expression $a
|
оба сообщения работают, немного разное отображение информации при выполнении, так что можно выбрать при написании скрипта, в зависимости от желания
Код:
clear
write-host ---------------
write-host "get-service a*"
$a=get-service a*
# Переменная $a выведет название команды
write-host ---------------
# Обратимся к переменной $a, чтобы она передала команде, которая является
# значением этой переменной, - управление, и выдала результат
$a
# Командлет Invoke-Expression анализирует или выполняет указанную строку как команду и
# возвращает результат выражения и команды.
write-host ---------------
Код:
clear
write-host ---------------
write-host "get-service a*"
#######################
$a="get-service a*"
# Переменная $a выведет название команды
write-host ---------------
# Обратимся к переменной $a, чтобы она передала команде, которая является
# значением этой переменной, - управление, и выдала результат
# Командлет Invoke-Expression анализирует или выполняет указанную строку как команду и
# возвращает результат выражения и команды.
Invoke-Expression $a
write-host ---------------
|
Код:
clear
write-host ---------------
write-host "get-service a*"
#
$a={get-service a* | sort-object status}
# заключаем выражение в фигурные скобки
# передаем выходные данные переменной
# Переменная $a выведет результат работы командлета на другой командлет
# Таким образом, результат выполнения команды get-service a* будет осортирован по колонке status
write-host ---------------
# Обратимся к переменной $a, чтобы она передала команде, которая является
# значением этой переменной, - управление, и выдала результат
&$a
# возвращает результат выражения и команды.
write-host ---------------
|
Цитата:
Цитата maslinaV
Код:
$a={get-service a* | sort-object status}
# заключаем выражение в фигурные скобки
# <...>
write-host ---------------
# <...>
&$a
# <...>
write-host ---------------
»
|
А зачем так сложно? Можно проще:
Код:
$a=get-service a* | sort-object status
write-host ---------------
$a
write-host ---------------
.
Можно даже и переменную не вводить, если, конечно, она не будет задействована в дальнейшем. Или у Вас теоретическая разработка:)?
|
Вот мой ответ на вопрос в самом начале
Код:
clear
$a={get-service a*}
$a
write-host ---------------
&$a
Фигурные скобки вместо кавычек
|
greg zakharov |
21-05-2015 15:59 2509875 |
maslinaV, видимо Вы не совсем понимаете, что такое скрипт-блок и чем он отличается от строки. Запись:
Код:
$a = "get-service a*"
означает, что переменной присваивается строка "get-service a*", а в случае
Код:
$a = {get-service a*}
переменная $a становится "контейнером" для скрипт-блока; чтобы переменная хранила результат не нужно изобретать колесо заново, достаточно записи: . Вам об этом уже говорили ранее. Ну и Get-Help Вам в помощь.
|
Цитата Georgio:
Цитата:
Или у Вас теоретическая разработка? »
|
да
Цитата Georgio:
Цитата:
Можно даже и переменную не вводить, если, конечно, она не будет задействована в дальнейшем »
|
для этого и разбирается скрипт
Цитата greg zakharov:
Цитата:
переменная $a становится "контейнером" для скрипт-блока; чтобы переменная хранила результат не нужно изобретать колесо заново, достаточно записи: »
|
Спасибо за пояснение, но человек который объяснял это, совсем по другому строит написание скрипта, и не вдавался в такие подробности,а я учусь разбирать такие скрипты и мне свойственно так писать, у меня нет опыта и глубоких знаний power shell
|
Время: 04:46.
© OSzone.net 2001-