Powershell没有为文件发送正确的路径作为参数

时间:2016-07-18 15:22:03

标签: powershell powershell-v2.0

我试图将哈希函数应用于文件夹中的所有文件作为某种版本控制。我们的想法是创建一个测试文件,列出文件名和生成的校验和。在线挖掘我发现了一些应该做的技巧(理论上):

$list = Get-ChildItem 'C:\users\public\documents\folder' -Filter *.cab
$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider 

foreach ($file in $list) {
$return = "" | Select Name, Hash

$returnname = $file.Name
$returnhash = [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file.Name)))
$return = "$returnname,$returnhash"

Out-File -FilePath .\mylist.txt -Encoding Default -InputObject ($return) -Append
}

但是当我运行它时,我收到一个错误,因为它试图从c:\ users \ me \中读取文件,这是我运行脚本的文件夹。并且文件c:\ users \ me \ aa.cab不存在,因此无法访问。

我已经尝试了所有我能想到的东西,但没有运气。我使用Windows 7和Powershell 2.0,如果这有任何帮助。

1 个答案:

答案 0 :(得分:2)

尝试使用.FullName而不仅仅是.Name。

$returnhash = [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file.FullName)))