Вопрос

Пример:У вас есть ярлык 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, и это выполнит его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top