Есть скрипт который работает, если его код просто вставить в командный интерпретатор (не важно, запущен ли он под админом или нет). Но если скрипт сохранить в виде файла с расширением *.ps1, и затем его запустить, то просто на несколько секунд появляется синий пустой экран интерпретатора и потом он закрывается. Скрипт не отрабатывает ( он должен просто заархивировать пару файлов).
В чем может быть проблема?
Решение найдено. Я писал скрипты в блокноте а потом просто менял расширение *txt на *ps1.
Надо было код из блокнота скопировать в PowerShell ISE и оттуда уже сохранить как фал с расширением *ps1.
Запуск скриптов был изначально включен.
Решение найдено. Я писал скрипты в блокноте, а потом просто менял расширение на *ps1. Надо было код скрипта скопировать в Powershell ISE и оттуда уже сохранить как файл *ps1. Тогда все работает.
Запуск скриптов был включен изначально.
После я сохранил этот текстовый файл и изменил расширение .txt на .ps1.
Далее "Правая клавиша мыши---Выполнить с помощью PowerShell". Результат тот-же - появляется пустой синий экран терминала на пару секунд а потом гаснет. Ничего не происходит.
Если-же сначала запустить терминал PowerShell (даже не в режиме администратора), вставить код и запустить, то код отработает как надо: появится сообщение.
Если запустить этот код в PowerShell-ISE (тоже не в режиме администратора) все так-же будет работать.
Стоит этот код из ISE сохранить как отдельный файл с расширением .ps1, то этот фал будет отрабатывать как надо.
Но вот что я заметил. Если я иду по первому сценарию (из .txt в .ps1.) то итоговый файл весит 141 байт.
А если я создаю его через PowerShell-ISE, то итоговый файл весит 144 байта. Притом манипуляции именем файла не меняет ситуацию. И лишних пробелов в коде скрипта нет.
Разрешения на выполнение обоих скриптов есть у всех групп пользователей.
Похоже PowerShell-ISE дописывает какую-то инфу в файл при сохранении и потому он потом отрабатывает как надо.
MaxKozlov, да, именно так. Если перезагрузить систему, то когда запускаешь скрипт, перед самым закрытием пустого окна быстро выскакивает какая-то ошибка но я не успеваю её прочитать. Если после этого запустить скрип еще раз, то ошибка не появляется, хотя окно все равно закрывается.
Я сравнил оба файла (без строки с остановкой) в hex-редакторе. Действительно, файл от ISE содержит дополнительно 3 байта перед первым символом кода скрипта.
Забавно, когда-то я на это натыкался, но уже забыл
PSv5.1 файл без BOM воспринимает, как дефолтную системную кодировку (1251) и буква "ф" в кириллице вызывает ошибку. v7 уже по умолчанию ожидает UTF8
Короче, создавайте ваши скрипты с BOM :)
или в кодировке 1251, если используете psv5