与Powershell相比,我更熟悉Bash,有时我对后者的对象模型感到困惑。
看一下Get-FileHash文档,似乎有三种方法来指定输入:
前两个是文件名,第三个是数据流。
现在,Get-ChildItem -File似乎输出了System.IO.FileInfo对象,从Get-Member所说的判断:
$ Get-ChildItem -File | Get-Member
TypeName: System.IO.FileInfo然而,流水线Get-ChildItem -File | Get-FileHash工作正常。我的问题是,允许将System.IO.FileInfo转换为Get-FileHash期望的输入类型的机制是什么?
发布于 2020-02-11 22:01:31
从有关函数高级参数文档,论证部分
ValueFromPipelineByPropertyName参数指示该参数接受来自管道对象属性的输入。object属性必须具有与参数相同的名称或别名。 例如,如果函数具有ComputerName参数,管道对象具有ComputerName属性,则将ComputerName属性值分配给函数的ComputerName参数。
更新:最初链接错误的源代码文件。正确的源代码在这里。作为@mclement0,Get-ChildItem cmdlet输出一个具有PSPath属性的对象,这使其工作。
发布于 2020-02-11 21:44:59
看起来它使用了pspath属性。
dir there | select pspath | get-filehash
Algorithm Hash Path
--------- ---- ----
SHA256 44723DD4D0E0D46A3C7FA8ACA254B61C27B6B5789F96177E82C80700409F1535 C:\users\...https://stackoverflow.com/questions/60176733
复制相似问题