7

У меня есть сценарий Windows PowerShell, который отлично работает в интерактивном редакторе. Скрипт простой однострочный sql cmd:

sqlcmd -S servername -d dbname -E -W -w 999 -s "," -Q "SELECT select col1,col2,'','','','','','','','','','','','','','','','','','','','','','','','','' From Table" -o "C:\sqlcmd.csv"

Когда я ввожу это в командной строке powershell, он работает нормально. Я сохраняю его в файле ps1 и пытаюсь запустить его из командной строки, набрав.\ Filename.ps1, он открывает его в блокноте и не выполняет его.

Затем я пытаюсь запустить его как команду:

powershell sqlcmd -S servername -d dbname -E -W -w 999 -s "," -Q "SELECT select col1,col2,'','','','','','','','','','','','','','','','','','','','','','','','','' From Table" -o "C:\sqlcmd.csv"

И это говорит "-s отсутствует параметр ...".

Любые предложения о том, чтобы заставить это работать правильно? Я где-то читал о политике выполнения Windows, и мне было интересно, было ли это что-то подобное.

Операционная система - Windows XP, SP2.

4 ответа4

3

Запустите regedit

HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell

Измените значение атрибута (Default) на 0 .

Возможные значения следующие:

  • 0 - выполнить,
  • Edit - Открыть в PowerShell ISE,
  • Open - открыть в блокноте.

В целях безопасности Microsoft по умолчанию установила действие « Open .

2

Вы можете запустить скрипт Powershell из командной строки следующим образом:

powershell -command "& .\filename.ps1"

Возможно, вам придется изменить политику выполнения для запуска сценариев Powershell.

powershell -command "Set-ExecutionPolicy Unrestricted"
1

Я бы не использовал PowerShell для этого. Это не преследует никакой цели, кроме принудительной загрузки PowerShell, анализа строки на предмет переменных и последующего вызова внешней программы. Сохраните его в файл .cmd и используйте как пакетную программу, потому что это действительно так.

1

Я понял, что на этот вопрос уже дан ответ, но если вы действительно хотите запустить.\ Filename.ps1, есть способ сделать это.

Часть 1: Получить расположение PowerShell

  1. Откройте Пуск> Все программы> Стандартные> Windows Powershell.
  2. Щелкните правой кнопкой мыши ярлык Windows Powershell.
  3. Левый клик "Открыть местоположение файла".
  4. Выделите адресную строку сверху.
  5. Щелкните правой кнопкой мыши на панели адреса.
  6. Левый клик "Копировать".

Часть 2. Установка ассоциации файлов .ps1

  1. Перейдите в расположение вашего файла .ps1.
  2. Щелкните правой кнопкой мыши файл .ps1.
  3. Левый клик "Свойства".
  4. Найдите часть, где написано "Открывается с помощью". Щелкните левой кнопкой мыши «Изменить ...» на правой стороне.
  5. Щелкните левой кнопкой мыши кнопку «Обзор ...» в правом нижнем углу.
  6. Выделите адресную строку сверху.
  7. Щелкните правой кнопкой мыши на панели адреса.
  8. Левый клик "Вставить".
  9. Щелкните левой кнопкой мыши кнопку со стрелкой, указывающей вправо на правой стороне строки адреса.
  10. Щелкните левой кнопкой мыши «powershell.exe».
  11. Левый клик "Открыть"
  12. Вернитесь в окно "Открыть с помощью".
  13. Щелкните левой кнопкой мыши "ОК" в правом нижнем углу.
  14. Вернитесь в окно свойств.
  15. Щелкните левой кнопкой мыши "ОК" в правом нижнем углу.

Часть 3: Выполнить.\ Filename.ps1 из командной строки

  1. Запустите это из командной строки.

.\ Filename.ps1

-YP

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .