Powershell 没有将文件的正确路径作为参数发送
Powershell not sending the right path for a file as argument
我正在尝试将哈希函数应用于文件夹内的所有文件,作为某种版本控制。这个想法是制作一个列出文件名和生成的校验和的测试文件。在线挖掘我发现了一些应该可以解决问题的代码(理论上):
$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,如果有任何帮助的话。
尝试使用 .FullName 而不仅仅是 .Name。
$returnhash = [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file.FullName)))
我正在尝试将哈希函数应用于文件夹内的所有文件,作为某种版本控制。这个想法是制作一个列出文件名和生成的校验和的测试文件。在线挖掘我发现了一些应该可以解决问题的代码(理论上):
$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,如果有任何帮助的话。
尝试使用 .FullName 而不仅仅是 .Name。
$returnhash = [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file.FullName)))