Запуск ярлыков, таких как программы
-
09-06-2019 - |
Вопрос
Пример:У вас есть ярлык s
к SomeProgram
в текущем каталоге.
В cmd.exe
, вы можете ввести s
и он запустит программу.
В PowerShell наберите s
дает:
The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
Если вы наберете s.lnk
или SomeProgram
, программа работает нормально.
Как настроить PowerShell для выполнения ярлыков, как программ?
Решение
В моей системе Vista нажатие S не запустит файл lnk, если в списке для переменной среды PATHEXT не установлено значение .lnk.Когда я делаю.S будет работать в cmd.exe, а мне нужно сделать .\S в powershell.
Другие советы
Вы также можете вызвать ярлык с помощью командлета «invoke-item».Например, если вы хотите запустить «internet explorer.lnk», вы можете ввести следующую команду:
invoke-item 'Internet Explorer.lnk'
Или вы также можете использовать псевдоним
ii 'internet explorer.lnk'
Еще одна интересная вещь заключается в том, что вы можете выполнить «invoke-item t.txt», и он автоматически откроет любой обработчик по умолчанию для файлов *.txt, например блокнот.
Примечание Если вы хотите выполнить приложение app.exe в текущем каталоге, вам необходимо указать относительный или абсолютный путь для выполнения.«.\app.exe» — это то, что вам нужно будет ввести для запуска приложения.
После добавления ;.LNK
до конца моего PATHEXT
переменной среды, теперь я могу выполнять ярлыки даже без предыдущего ./
обозначения.(Спасибо, Брюсатк!)
Меня также вдохновило предложение Стивена создать небольшой скрипт, который автоматически присваивает псевдонимы всем ярлыкам в моей папке. PATH
(хотя я планирую придерживаться более простого решения;).
$env:path.Split( ';' ) |
Get-ChildItem -filter *.lnk |
select @{ Name='Path'; Expression={ $_.FullName } },
@{ Name='Name'; Expression={ [IO.Path]::GetFileNameWithoutExtension( $_.Name ) } } |
where { -not (Get-Alias $_.Name -ea 0) } |
foreach { Set-Alias $_.Name $_.Path }
Я не верю, что ты сможешь.Возможно, вам лучше использовать псевдонимы часто используемых команд в сценарии, который вы вызываете из сценария своего профиля.
Пример -
Set-Alias np c:\windows otepad.exe
Тогда у вас будет короткое, легко набираемое имя, доступное из командной строки.
Во-первых, ярлык не «s», а «s.lnk».Например.вы не можете открыть текстовый файл (скажем, с помощью блокнота), набрав «t», когда имя «t.txt» :) Технет говорит
Переменная среды Pathext определяет список расширений файлов, проверяемых Windows NT при поиске исполняемого файла.Значением PATHEXT по умолчанию является .COM;.EXE;.BAT;.CMD.
Вы можете использовать точечный источник, как описано здесь другими, или вы также можете использовать символ вызова «&».Это означает, что PS рассматривает вашу строку как нечто, что нужно выполнить, а не просто текст.Хотя это может быть более важно в сценарии.
Я бы добавил, что вы должны передавать любые параметры ВНЕ кавычек (этот момент меня уже укусил), обратите внимание, что "-r" находится не в строке в кавычках, а только в exe.
& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null
Вы всегда можете использовать завершение табуляции, чтобы ввести «s[TAB]» и нажать ENTER, и это выполнит его.