powershell - 将第一个参数传递给 cli
问题描述
尝试编写一个简单的脚本,该脚本将使用传递给我的 ps1 脚本的文件名返回文件的 SHA256 签名:
脚本名称是sha256sum.ps1
.
第一个参数将是任何文件,例如:
sha256sum.ps1 dummy.exe
我在里面试过这些sha256sum.ps1
:
Get-FileHash -algo SHA256 %1
Get-FileHash -algo SHA256 $1
Get-FileHash -algo SHA256 $args[1]
但他们都没有工作。
有没有一种简单的方法可以做到这一点?
编辑:感谢您的帮助,这是我的脚本的最终版本,伙计们:)
#!/usr/bin/env pwsh
param( $firstArg )
function calcSignature( $filename ) {
$scriptName = Split-Path -Leaf $PSCommandPath
switch( $scriptName ) {
"md5sum.ps1" { $algo = "MD5"; Break }
"sha1sum.ps1" { $algo = "SHA1"; Break }
"sha256sum.ps1" { $algo = "SHA256"; Break }
"sha384sum.ps1" { $algo = "SHA384"; Break }
"sha512sum.ps1" { $algo = "SHA512"; Break }
}
(Get-FileHash -algo $algo $filename).Hash + " " + $filename
}
calcSignature( $firstArg )
现在我只有一个脚本,其他的都是指向sha256sum.ps1
.
解决方案
我猜您正在寻找“如何将参数传递给您的.ps1
脚本”。
这是脚本sha256sum.ps1
外观的示例:
param(
[parameter(mandatory)]
[validatescript({
Test-Path $_ -PathType Leaf
})]
[system.io.fileinfo]$File
)
(Get-FileHash $File -Algorithm SHA256).Hash
现在,如果我们调用这个脚本,例如:
PS \> .\sha256sum.ps1 .\test.html
1B24ED8C7929739D296DE3C5D6695CA40D8324FBF2F0E981CF03A8A6ED778C9C
注意:当前目录是脚本和 html 文件所在的位置,如果不是这样,您应该使用绝对路径。
我建议您阅读官方文档以了解有关函数和param(...)
块的概念。
推荐阅读
- python - ImportError:安装 Pusher 后无法导入名称 certificate_transparency
- c - GNU Make:检测 Xcode
- linq - 使用 Linq,如何在两个表之间没有外键关系的情况下连接两个表?
- python - Pandas - 过滤列至少匹配一次的行
- javascript - Spinning Wheel - 即使旋转停止,动画功能也会继续运行
- mysql - mysqldump前后对比新软件验证过程中的数据库内容
- javascript - 在另一个函数中从 Frisby POST 检索 JSON 响应
- ionic-framework - 离子 - 分配失败 - JavaScript 堆内存不足
- python - TypeError:'list'和'str' Python 3.6.2的实例之间不支持'<'
- kaa - 将 linux 服务器时区更改为 UTC 后,KAA 服务器未启动(PSQLException:FATAL:参数“TimeZone”的值无效:“UTC”)