Непонятные штуки — &

По намёку Артема начинаю разьяснять некоторые вещи в PowerShell, которые часто используются в скриптах, но тем не менее совсем не очевидны🙂

Начну с такого вопроса:

зачем перед длинным путём ставить «&»

 

Так как PowerShell в первую очередь Shell — из него можно запускать другие программы (сюрприз, да? ;)). Делается это простым и очевидным образом, например использовать утилиту Ping.exe можно так же как и в cmd.exe или из меню «Пуск»:

ping

Точно так же можно запустить и notepad, и остальные утилиты. Можно указывать имя утилиты без расширения, а можно с ним, например ping.exe Пока папка в которой находится программа перечислена в переменной окружения PATH, указывать полный путь к файлу не нужно. Ну а в остальных случаях это необходимо:

handle

А что будет если в этом пути находятся пробелы? Разумеется надо заключить путь в кавычки — двойные или одинарные (в данном случае не важно). Вот только почему то PowerShell вместо запуска программы, просто вывел путь к ней:

fwstring

Всё верно. Ведь для PowerShell не анализирует содержимое строк, а данные внутри кавычек — строка текста, и PowerShell просто выводит её на экран:

hw

Для того чтобы явно указать PowerShell что это не просто текст, а команда которую необходимо выполнить, используется специальный символ: &

fwc

Опубликовано в Learn, PowerShell, Scripting, Tips. 2 комментария »

комментария 2 to “Непонятные штуки — &”

  1. Oleg Medvedev Says:

    А точка точно так же срабатывает. Какая меж ними разница?

    .»c:\Program Files\Media Player Classic\mplayerc.exe»

    запускает медиа плеер.

  2. Xaegr Says:

    В данном случае вроде никакой, а вообще точка указывает что команду нужно выполнить в текущем окружении. Вот например:
    > sc script.ps1 ‘$var = 123’
    > & .\script.ps1
    > $var
    > . .\script.ps1
    > $var
    123
    Во втором случае объявленная в внешнем скрипте переменная стала доступна и после его выполнения. Точно так же сохранятся например функции. Этот метод часто используют для импортирования собственных функций и называют dotsource🙂


Обсуждение закрыто.

%d такие блоггеры, как: