Это функция безопасности PowerShell. Вы можете вызывать сценарии только по относительному или абсолютному пути, но не по имени файла.
Чтобы запустить скрипт, введите путь и имя файла скрипта. Путь требуется, даже если сценарий находится в текущем каталоге, чтобы вредоносному коду было сложнее запускать сценарии. Расширение имени файла является необязательным, и, как всегда, Windows PowerShell не учитывает регистр.
Обоснование этого решения заключается в следующем:
Один из приемов, которые злоумышленники обычно пытаются использовать в других оболочках, - это создание сценария с тем же именем файла, что и у встроенной команды. Так, например, если вы хотите, чтобы пользователь запускал ваш скрипт, вы можете назвать его Dir.ps1 и поместить в папку. Если вы убедили пользователя набрать Dir и нажать Enter, ваш скрипт может выполняться, а не команда Dir, которую ожидал пользователь. Эта техника называется захватом команд. В Windows PowerShell вы всегда должны указывать путь к такому сценарию, что делает Windows PowerShell довольно хорошо защищенным от перехвата команд. Запуск demo1 не работает, так как пути нет, но работает ./demo1 работает. Это потому, что я сейчас указал путь - текущую папку. Скорее всего, эту командную строку не следует путать со встроенной командой, поскольку вы никогда не наберете какой-либо путь, если будете ссылаться на встроенную команду. Таким образом, требование пути помогает Windows PowerShell избежать перехвата команд и путаницы в отношении того, что может произойти при нажатии клавиши Enter.
Источники: http://technet.microsoft.com/en-us/magazine/2007.09.powershell.aspx http://technet.microsoft.com/en-us/library/bb613481%28v=vs.85%29.aspx