4

У меня есть сценарий powershell, который я хочу запускать на своем компьютере каждый раз, когда я вхожу в систему. Я добавил его как REG_SZ в мой текущий пользовательский ключ "run", но он никогда не выполняется.

Я изменил политику исполнения на "неограниченную", но все же не повезло.

Содержимое значения реестра выглядит следующим образом:

powershell.exe c:\path\myscript.ps1

Это работает из командной строки. Есть идеи, почему он не запускается из реестра?

Благодарю.

4 ответа4

3

Обычно я запускаю сценарии PowerShell следующим образом:

powershell.exe -file c:\path\myscript.ps1

Для получения дополнительной информации запустите это из командной строки:

powershell.exe -help
1

Сегодня я прочитал о скрипте powershell, который продолжается после перезагрузки компьютера. Для этого сценарий автоматически пишет на свой ключ запуска. Если вы посмотрите на этот пост, вы увидите, что он просто записывает имя скрипта и его параметры в раздел реестра.

Я еще не смог протестировать его, но если он сработает для него, это будет означать, что вы не добавляете «powershell.exe» перед именем скрипта.

1

Хорошо, я понял это. Вам нужно установить политику выполнения на удаленную подпись, а не на "обход", как мне сказала Microsoft. Для этого выполните эту команду в powershell:

set-executionpolicy remotesigned

Тогда это REG_SZ в моем ключе запуска реестра

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -file c:\path\myscript.ps1

Итак, теперь у меня есть сценарий powershell, который запускает все мои обычные программы с промежутком между ними, позволяя мне немедленно приступить к работе на моей машине без медлительности, которую все приложения пытаются открыть одновременно.

Вот небольшой фрагмент моего *.PS1 файл, как другие могут найти его полезным:

# Chrome Browser
Start-Sleep -s 20
& "C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe"

# Outlook
Start-Sleep -s 10
& "c:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"

# Messenger
Start-Sleep -s 10
& "c:\Program Files (x86)\Windows Live\Messenger\msnmsgr.exe" /background

# Snagit
Start-Sleep -s 30
& "C:\Program Files (x86)\TechSmith\Snagit 10\Snagit32.exe" /i /h

# Evernote
Start-Sleep -s 60
& "C:\Program Files (x86)\Evernote\Evernote\EvernoteTray.exe"
0

Если я правильно помню, вы не можете выполнить скрипт powershell напрямую (как при двойном щелчке по нему), он должен быть выполнен из командной строки. Может быть, Windows видит выполнение из реестра как выполнение напрямую. То, что вы могли бы попробовать (и я здесь, на коне), это вызвать скрипт из командного файла, а затем вызвать командный файл из реестра.

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