Выполнять быстрые клавиши, такие как программы

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

Ответ 1

В моей системе Vista, набрав S, не будет запускаться файл lnk, если у меня нет переменной окружения PATHEXT, установленной с .lnk в списке. Когда я делаю. S будет работать в cmd.exe, и я должен сделать. \S в powershell.

Ответ 2

Вы также можете вызвать ярлык, используя командлет "invoke-item". Например, если вы хотите запустить "internet explorer.lnk", вы можете ввести следующую команду:

invoke-item 'Internet Explorer.lnk'

Или вы также можете использовать псевдоним

ii 'internet explorer.lnk'

Еще одна интересная вещь заключается в том, что вы можете сделать "invoke-item t.txt", и он автоматически откроет все, что было обработчиком по умолчанию для файлов *.txt, например, записной книжки.

Примечание. Если вы хотите выполнить приложение app.exe в текущем каталоге, вы должны фактически указать путь, относительный или абсолютный, для выполнения. ".\app.exe" - это то, что вам нужно было бы ввести для выполнения приложения.

Ответ 3

После добавления ;.LNK в конец моей переменной среды PATHEXT я могу теперь выполнять ярлыки даже без предшествующей нотации ./. (Спасибо, bruceatk!)

Я также был вдохновлен предложением Стивена создать небольшой script, который автоматически сглаживает все ярлыки в моей 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 }

Ответ 4

Я не верю, что ты можешь. Возможно, вам лучше сгладить обычно используемые команды в script, которые вы вызываете из своего профиля script.

Пример -

Set-Alias ​​np c:\windows\notepad.exe

Затем у вас есть короткое, легко печатаемое имя из командной строки.

Ответ 5

Во-первых, ярлык не является "s", это "s.lnk". Например. вы не можете открыть текстовый файл (скажем, с помощью блокнота), набрав "t", когда имя "t.txt":) Technet говорит

Переменная окружения PATHEXT определяет список расширений файлов проверяется Windows NT при поиске для исполняемого файла. Значение по умолчанию PATHEXT:.COM;.EXE;.BAT;.CMD

Вы можете использовать точечный источник, как описано другими, или вы также можете использовать символ вызова "&". Это означает, что PS обрабатывает вашу строку как нечто исполняемое, а не только текст. Это может быть более важным в script.

Я бы добавил, что вы должны передать какие-либо параметры OUTSIDE из кавычек (этот бит мне раньше), обратите внимание, что "-r" не находится в цитируемой строке, а только exe.

& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null

Ответ 6

Вы всегда можете использовать табуляцию, чтобы ввести "s [TAB]" и нажмите ENTER, и это будет выполнено.