Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Проблема с относительным путём при запуске ярлыка на .ps1 от Админа

Ответить
Настройки темы
PowerShell - [решено] Проблема с относительным путём при запуске ярлыка на .ps1 от Админа

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Если нужно запускать файл скрипта PowerShell с помощью ярлыка на него в том же каталоге, то ярлык этот выглядит примерно так:
Код: Выделить весь код
powershell.exe -ExecutionPolicy Bypass -NoExit -NoLogo -File ".\script.ps1"
где запись .\ говорит о том, что файл скрипта находится в одном каталоге с ярлыком и путь является относительным (т.е. каталог у них может быть какой угодно).

Проблема заключается в том, что всё это работает только при запуске от текущего пользователя. Если попробовать запустить данный ярлык от имени Администратора, то трюк с относительным путём уже не сработает и скрипт просто не запустится, т.к. в качестве пути будет использоваться не каталог запуска, а %SystemRoot%\System32.

Так как же должен выглядеть ярлык, чтобы в качестве текущего (относительного) пути использовался именно каталог запуска, вне зависимости от кого он запускается?

Отправлено: 19:54, 20-03-2025

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6690
Благодарности: 1566

Профиль | Отправить PM | Цитировать


Можно попробовать
Код: Выделить весь код
$PSScriptRoot\script.ps1
https://learn.microsoft.com/ru-ru/po...5#psscriptroot

или
Код: Выделить весь код
$PWD.path\script.ps1
https://learn.microsoft.com/ru-ru/po...rshell-7.5#pwd

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 22:52, 20-03-2025 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1232
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Можно попробовать »
Это внутри скриптов будет работать, а до запуска скрипта, переменной не существует.

Цитата DJ Mogarych:
или »
а это текущий каталог, аналог в cmd %cd%
тоже не поможет...

Цитата Carrio:
Так как же должен выглядеть ярлык, чтобы в качестве текущего (относительного) пути использовался именно каталог запуска, вне зависимости от кого он запускается? »
Если очень требуется именно такой вариант запуска, то использовать лучше не ярлык, а батник...
run.bat:
Код: Выделить весь код
@echo off
pushd %~dp0
powershell.exe -ExecutionPolicy Bypass -NoExit -NoLogo -File ".\script.ps1"
popd
либо указывать не относительный путь к скрипту, а абсолютный...

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:53, 21-03-2025 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6690
Благодарности: 1566

Профиль | Отправить PM | Цитировать


Можно попробовать вот так, поиск в профиле пользователя нужного файла и его запуск прямо из ярлыка:

Код: Выделить весь код
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -c "powershell (dir "C:\Users\Vasya\*\script.ps1" -recurse).fullname"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:43, 21-03-2025 | #4


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
Если очень требуется именно такой вариант запуска, то использовать лучше не ярлык, а батник... »
Да, я тоже дошёл до этого решения. Пытался сначала запихнуть этот код в ярлык, но потом осознал, что %~dp0 там работать не будет. В общем, через батник тоже нормально, даже более универсально. Всё-равно, чтобы кликом мыши запустить скрипт PowerShell из файла понадобится 2 элемента (хоть с ярлыком, хоть с батником), как ни крути.

Цитата DJ Mogarych:
Можно попробовать вот так, поиск в профиле пользователя нужного файла и его запуск прямо из ярлыка: »
Так можно и до поиска по всем дискам дойти, скрипт то может быть в любом месте

Отправлено: 20:23, 21-03-2025 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6690
Благодарности: 1566

Профиль | Отправить PM | Цитировать


Цитата Carrio:
Так можно и до поиска по всем дискам дойти »
Да, но здесь нормального решения и не будет. Самое нормальное решение - это использовать абсолютные пути.
Цитата Carrio:
чтобы кликом мыши запустить скрипт PowerShell из файла понадобится 2 элемента »
Можно ПКМ -> Выполнить с помощью Powershell.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:16, 22-03-2025 | #6


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1232
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата Carrio:
Всё-равно, чтобы кликом мыши запустить скрипт PowerShell из файла понадобится 2 элемента (хоть с ярлыком, хоть с батником), как ни крути. »
Необязательно. Можно внести ассоциации файлов и будет запуск скриптов кликом мыши... но это нерекомендуемое действие из соображений безопасности...

-------
scio me nihil scire. Ѫ


Отправлено: 10:21, 22-03-2025 | #7


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Можно ПКМ -> Выполнить с помощью Powershell. »
Это всё-равно не удобно.
Тогда как с батником вообще красота: скрипт и батник в одном каком угодно каталоге, а уже ярлык на этот батник можно разместить хоть на панели задач и запускать всего ОДНИМ кликом мыши.

Цитата YuS_2:
Необязательно. Можно внести ассоциации файлов и будет запуск скриптов кликом мыши... »
Там, вроде, есть проблемы с пробелами в пути до скрипта.
Плюс надо дать постоянное разрешение системе на запуск таких файлов, что небезопасно.

Отправлено: 11:53, 22-03-2025 | #8


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1232
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата Carrio:
Там, вроде, есть проблемы с пробелами в пути до скрипта. »
Микрософт, такой микрософт

Цитата Carrio:
что небезопасно. »
естественно, это снижение безопасности о чем и написал... но js и vbs, например, являются исполняемыми скриптами, по умолчанию, батники - тоже сценарии... и ничего, о безопасности никто не парится.

-------
scio me nihil scire. Ѫ


Отправлено: 13:04, 22-03-2025 | #9


Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
естественно, это снижение безопасности о чем и написал... но js и vbs, например, являются исполняемыми скриптами, по умолчанию, батники - тоже сценарии... и ничего, о безопасности никто не парится »
M$, такой M$

Отправлено: 16:15, 22-03-2025 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Проблема с относительным путём при запуске ярлыка на .ps1 от Админа

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие - Можно ли запустить скрипт PS1 от имени другого пользователя? Той Серью Программное обеспечение Windows 1 13-02-2021 11:29
Проблема при запуске ncpa.cpl от имени администратора Evgeniy15 AutoIt 3 01-06-2015 19:12
Интернет - [решено] При запуске ярлыка открываются сразу 2 (два) окна IE8 goodwиn Microsoft Windows 2000/XP 38 12-05-2013 23:07
Разное - отображение страниц в браузере при запуске с ярлыка ga-lan Microsoft Windows 7 11 04-01-2013 16:34
VBS/WSH/JS - [решено] Проблема передачи параметров в скрипт при запуске из ярлыка gora Скриптовые языки администрирования Windows 1 08-09-2011 13:26




 
Переход