Как переименовать псевдоним в PowerShell?

Я хочу сделать свои собственные версии некоторых встроенных псевдонимов PowerShell. Вместо того, чтобы полностью удалять переопределенные псевдонимы, я бы хотел переименовать их, чтобы я мог использовать их, если захочу. Например, может быть я переименую set в orig_set, а затем добавьте мое собственное новое определение для set.

Это то, что я пробовал до сих пор:

PS> alias *set*

CommandType     Name     Definition
-----------     ----     ----------
Alias           set      Set-Variable

PS> function Rename-Alias( $s0, $s1 ) { Rename-Item Alias:\$s0 $s1 -Force }
PS> Rename-Alias set orig_set
PS> alias *set*

CommandType     Name     Definition
-----------     ----     ----------
Alias           set      Set-Variable

Есть идеи, почему это не работает?

4 голоса | спросил jwfearn 11 Jpm1000000pmTue, 11 Jan 2011 21:26:57 +030011 2011, 21:26:57

3 ответа


0

Одно из решений: изменить способ вызова функции Rename-Alias. Вместо

PS> Rename-Alias set orig_set

сделай это:

PS> . Rename-Alias set orig_set

[Спасибо @Keith Hill за этот совет.]

Но возникает вопрос: как написать функцию для переименования псевдонимов без необходимости всегда вызывать с точкой (.)?

ответил jwfearn 13 Jam1000000amThu, 13 Jan 2011 00:50:03 +030011 2011, 00:50:03
0

Прелесть системы провайдера в PowerShell заключается в том, что вы можете использовать доброе старое Rename-Item для псевдонима, потому что есть диск с псевдонимом, например

Rename-Item Alias:\set original_set -Force

То есть вы узнаете, как использовать Get-ChildItem, Remove-Item, Copy-Item и т. д., и можете применять их к вещам, отличным от каталогов и файлов, если «вещь» содержится в поставщике. Чтобы увидеть, как все ваши провайдеры выполняют:

Get-PSProvider

Чтобы увидеть все диски, созданные этими провайдерами, выполните:

Get-PSDrive
ответил Keith Hill 12 Jam1000000amWed, 12 Jan 2011 00:46:46 +030011 2011, 00:46:46
0
function Rename-Alias($old, $new)
{
    $resolved = get-alias $old
    $cmdletName = $resolved.definition
    Set-Alias $new $cmdletname
    rm "alias:\$old" -force
}
ответил Robert S Ciaccio 11 Jpm1000000pmTue, 11 Jan 2011 21:32:15 +030011 2011, 21:32:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132