Сведения о вопросе

GANGST1ER

18:08, 2nd August, 2020

Теги

powershell    

Выполнять ярлыки, как программы

Просмотров: 412   Ответов: 6

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



  Сведения об ответе

LAST

21:06, 1st October, 2020

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

invoke-item 'Internet Explorer.lnk'

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

ii 'internet explorer.lnk'

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

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


  Сведения об ответе

DO__IT

18:23, 6th August, 2020

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


  Сведения об ответе

nYU

11:36, 26th August, 2020

После добавления ;.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 }


  Сведения об ответе

dumai

01:58, 5th August, 2020

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

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

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

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

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


  Сведения об ответе

baggs

21:54, 15th August, 2020

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

Пример -

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

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


  Сведения об ответе

baggs

14:32, 28th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться