Ответ 1
В моей системе Vista, набрав S, не будет запускаться файл lnk, если у меня нет переменной окружения PATHEXT, установленной с .lnk в списке. Когда я делаю. S будет работать в cmd.exe, и я должен сделать. \S в powershell.
Пример. У вас есть ярлык 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
я могу теперь выполнять ярлыки даже без предшествующей нотации ./
. (Спасибо, 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 }
Я не верю, что ты можешь. Возможно, вам лучше сгладить обычно используемые команды в script, которые вы вызываете из своего профиля script.
Пример -
Set-Alias np c:\windows\notepad.exe
Затем у вас есть короткое, легко печатаемое имя из командной строки.
Во-первых, ярлык не является "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
Вы всегда можете использовать табуляцию, чтобы ввести "s [TAB]" и нажмите ENTER, и это будет выполнено.