早上好,
我有这个PowerShell脚本如下:
$zips = Get-ChildItem 'C:\Users\X\Desktop\Powershell\Zip\' - Filter *.zip
$sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider
foreach ($file in $zips) {
$return = "" | Select Name, Hash
$return.name = $file.Name
$return.hash = [System.BitConverter]::ToString($sha1.ComputeHash([System.IO.File]::ReadAllBytes($file.FullName)))
Write-Output $return
[System.IO.File}::WriteAllText("C:\Users\X\Desktop\Info\"+ $_.Name + ".txt", $_.FullName)
}
Read-Host -Prompt "Press Enter to Exit"
所以它计算文件夹'zip'中所有zip文件的SHA1哈希值,我试图将哈希值保存到位置\ desktop \ info \中的文本文件中,并带有一个单独的文本文件每个zip文件。
哈希的计算没有任何问题,并将其打印在powershell窗口中,但目前所做的只是创建一个单独的文本文件,其中没有数据,没有名称。
我错过了什么?我已经尝试使用另一个脚本中的信息做了非常相似的事情,但我似乎无法产生相同的结果。
感谢任何帮助。
答案 0 :(得分:0)
试试这个:
[System.IO.File]::WriteAllText("C:\Users\X\Desktop\Info\"+$return.Name+".txt",$return.Hash)
答案 1 :(得分:0)
而不是
[System.IO.File}::WriteAllText("C:\Users\X\Desktop\Info\"+ $_.Name + ".txt", $_.FullName)
试试这个:
$return.hash | Out-File "C:\Users\X\Desktop\Info\$($file.BaseName).txt"