搜索文件并生成MD5哈希值

时间:2014-08-31 14:26:52

标签: powershell

嗨大家我在搜索和生成文件的哈希值时遇到了问题。我所面临的问题是在编写输出时 进入Out.txt文件。我想写两个文件Data1.txt和SqlData.txt的输出结果但不幸的是它删除了第一个文件输出并保存了最后一个文件输出结果,即SqlData.txt值下面是简短的代码描述用于理解代码< / p>

#File1.txt文件包含我要搜索的两个文件Data1.txt和SqlData.txt的列表 #Dir1.txt文件包含目录(C :)的路径,我想在其中搜索$ arr输出文件

到目前为止我已经尝试过的代码。

cls
$arr = Get-ChildItem -Path "C:\Direct\File1.txt"  
$d = Get-Content $arr
Foreach ($objFile in $d) {
$c = $objFile.Name
$a = Get-Content "C:\Direct\Dir1.txt" 
$e = Get-ChildItem -Path $a -Filter $objFile -Recurse  -Force -ErrorVariable FailedItems -ErrorAction SilentlyContinue # Searching the Files
$k = Get-Hash $e >  C:\Direct\Reverse\Out.txt #Fetching the Hash value of files and writing output into Out.txt file
} 

如果有任何不清楚的地方,请告诉我并帮助我解决此问题。 感谢

1 个答案:

答案 0 :(得分:0)

$searchPath = Get-Content "C:\Direct\Dir1.txt" 
Get-Content -Path "C:\Direct\File1.txt" | ForEach-Object{
    # For each line in the file. Create a custom object that contains all the needed data.
    $theFile = Get-ChildItem -Path $_ -Filter $searchPath  -Recurse  -Force -ErrorVariable FailedItems -ErrorAction SilentlyContinue
    [pscustomobject] @{
        'File Name' = $_
        'Path' = $theFile.DirectoryName
        'Hash'= Get-Hash $theFile
    }
} | ConvertTo-Csv -notypeinformation | Out-File C:\Direct\Reverse\Out.txt -Append
  1. $searchPath获取您所说的c:\。如果那就是它所包含的那么你真的不需要它。但我可以在路上看到其他搜索,所以我按要求离开它。这只需要调用一次,因此我将其从ForEach循环中取出。
  2. 我们获取文件的内容,该文件应该是单个文件的列表。
  3. 对于每个文件名,我们搜索$searchPath我认为我们可以更好地进行Get-ChildItem调用。我需要对此进行调查。
  4. 使用我们需要的所有详细信息创建自定义对象。
  5. 将自定义对象转换为csv实体,因此输出将是干净的。
  6. 将这些自定义对象放到文件中。我们使用-Append来确保它不会覆盖任何细节。
  7. <强>注意事项 我只是把它掀起来弄湿你的哨子。 我需要得到Get-Hash因为我没有它所以我无法正确测试。我很快就无法更新到4.0。 这不会进行任何错误检查,即。如果文件存在。我建议在任何制作剧本中使用。

相关问题