Псевдоним Powershell md5sum

#powershell

#powershell

Вопрос:

Моя цель состоит в том, чтобы я мог ввести файл md5sum в powershell. Я попытался добавить псевдоним, см. Код ниже:

 function file_hash {
  param (
    [Parameter(Mandatory = $true, Position = 0)]
    $algorithm,
    [Parameter(mandatory=$false, ValueFromPipeline=$true, Position = 1)]
    $file
  )
  if ($file) {
    (Get-FileHash -Path $file -Algorithm $algorithm).Hash
  }
}

Set-Alias md5sum (file_hash -algorithm 'MD5' -file $args)
  

Powershell не может создать псевдоним из-за следующей ошибки:
Невозможно привязать аргумент к параметру ‘Value’, поскольку он равен null.
Может ли кто-нибудь мне помочь?
Как я могу получить свой псевдоним md5sum?

Ответ №1:

Короче говоря, вы не можете делать то, что пытаетесь сделать, по крайней мере, не так, как вы пытаетесь это сделать.

Из документации Microsoft в примере 5: создайте псевдоним для команды с параметрами:

Вы не можете создать псевдоним для команды с параметрами и значениями, такими как Set-Location -Path C:WindowsSystem32 .

Приведенная выше ссылка предоставляет альтернативу для достижения той же функциональности, хотя:

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

 PS> Function CD32 {Set-Location -Path C:WindowsSystem32}

PS> Set-Alias -Name Go -Value CD32
  

Итак, в вашем случае вы бы сделали что-то вроде:

 function Invoke-FileHashMD5
{
    param( $File )
    file_hash -algorithm 'MD5' -file $File
}

Set-Alias -Name md5sum -Value "Invoke-FileHashMD5"