Как я могу написать псевдоним PowerShell с аргументами в середине? - PullRequest
61 голосов
/ 12 ноября 2010

Я пытаюсь настроить псевдоним Windows PowerShell для запуска исполняемого файла MinGW g ++ с определенными параметрами.Однако эти параметры должны указываться после имени файла и других аргументов.Я не хочу переживать, пытаясь настроить функцию и все такое.Есть ли способ просто сказать что-то вроде:

alias mybuild="g++ {args} -lib1 -lib2 ..."

или что-то в этом роде?Я не так хорошо знаком с PowerShell, и мне трудно найти решение.Кто-нибудь? * * 1004

Ответы [ 4 ]

94 голосов
/ 12 ноября 2010

Вы хотите использовать функцию, а не псевдоним, как упоминал Роман. Примерно так:

function mybuild { g++ $args -lib1 -lib2 ... }

Чтобы попробовать это, вот простой пример:

PS> function docmd { cmd /c $args there }
PS> docmd echo hello
hello there
PS> 

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

5 голосов
/ 12 ноября 2010

Нет такого способа встроенного. ИМХО, функция-обертка - лучший путь. Но я знаю, что были изобретены некоторые обходные пути, например:

https://web.archive.org/web/20120213013609/http://huddledmasses.org/powershell-power-user-tips-bash-style-alias-command

2 голосов
/ 16 февраля 2018

Это примерная функция, которая будет делать разные вещи в зависимости от того, как она была вызвана:

Function Do-Something {
[CmdletBinding()] 
[Alias('DOIT')]
Param(
    [string] $option1,
    [string] $option2,
    [int] $option3)
#$MyInvocation|select *|FL
If ($MyInvocation.InvocationName -eq 'DOIT'){write-host "You told me to do it...so i did!" -ForegroundColor Yellow}
Else {Write-Host "you were boring and said do something..." -ForegroundColor Green}
}
1 голос
/ 22 сентября 2017

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

$g=[guid]::NewGuid();
echo "function G$g { COMMANDS }; New-Alias -Force ALIAS G$g">>$profile

, где вы заменили ALIAS на желаемый псевдоним и COMMANDS с командой или строкой команд для выполнения.

Конечно, вместо этого вы можете (и должны!) Создать псевдоним для вышеупомянутого с помощью:

echo 'function myAlias {
    $g=[guid]::NewGuid();
    $alias = $args[0]; $commands = $args[1]
    echo "function G$g { $commands }; New-Alias -Force $alias G$g">>$profile
}; New-Alias alias myAlias'>>$profile

Простов случае, если ваш мозг вывернулся наизнанку от всей рекурсии (псевдонимы псевдонимов и т. д.), после вставки второго блока кода в PowerShell (и перезапуска PowerShell), простой пример его использования:

или без аргументов:

alias myLs 'ls D:\MyFolder'

Если у вас еще нет профиля

Приведенный выше метод завершится неудачей, если у вас еще нет профиля!В этом случае используйте New-Item -type file -path $profile -force из этого ответа .

...