PowerShell File Checksum Integrity Verifier (PsFCIV)

PowerShell File Checksum Integrity Verifier is a enhanced PowerShell version of legacy Microsoft FCIV.exe tool. PsFCIV is used to track your files integrity status by calculating cryptographic hashes over a file (or files) and writing them into FCIV-compatible XML database.

3.9 Star
34,332 times
Add to favorites
E-mail Twitter del.icio.us Digg Facebook
  • Why can't I run this?
    2 Posts | Last post March 20, 2016
    • On a Windows 10 system I run .\PsFCIV_2.5.ps1 and it completes without displaying anything; no error or confirmation of success, yet the Start-PsFCIV function is not installed. So how can I run it?
    • you didn't import the function. You need to dot-source the function by running the command:
      . path\Start-PsFCIV.ps1
  • Function
    2 Posts | Last post December 12, 2015
    • How this this PSFCIV verify by compute the hash key?
      Where does it verify the checksum of the file?
    • it does in the '__precheck' and in '__checkfiles' embedded functions.
  • I get errors with large files > 4GB
    2 Posts | Last post November 18, 2015
    • __P
      Exception setting "Size": "Cannot convert value "6574368256" to type
      "System.UInt32". Error: "Value was either too large or too small for a
      Seems to be OK if you change line 199 from "public UInt32 Size { get; set; }" to "public UInt64 Size { get; set; }"
    • Yes, you are correct. A UInt64 should be used.
  • Simple Solution
    2 Posts | Last post August 07, 2015
    • Look at this link to get Powershell code for generating correct powershell MD5 value
    • Look at my previous response. The code is correct. You need to compare hash values against the same file, not different files (which would have different hash values).
  • Reporting Bug
    2 Posts | Last post August 07, 2015
    • Running this powershell 4.0
      Start-PsFCIV -HashAlgorithm MD5   -Path "ahmadm-31072015-123620-PM.TXT" -Online
      name      : PsFCIV_2.5.ps1
      Size      : 68778
      TimeStamp : 12/12/2013 09:20:06
      MD5       : F1EB2408A00F6E58A8941B712695D311
      SHA1      : 
      SHA256    : 
      SHA384    : 
      SHA512    : 
      Running the Microsoft utility 
      fciv -md5 "ahmadm-31072015-123620-PM.TXT"
      1fc1f4ecb917c4059f89726fa38fc1f5 ahmadm-31072015-123620-pm.txt
      I have verified the MD5 generated via your powershell script and the Microsoft FCIV utility with other online MD5 checkers and the MD5 hash generated by Microsoft utility matches but your powershell script does not match
      Start-PsFCIV -HashAlgorithm MD5   -Path "ahmadm-31072015-123620-PM.TXT" -xml "c:\temp\new.xml"
        <TimeStamp>12/12/2013 09:20:06</TimeStamp> 
      Your MD5 code does not match with your -online output.
      I think your script has bugs and needs to be taken offline till you fix it... wouldn't you agree??
    • The code is correct. Note that XML stores hash in Base64 encoding, not in hex. Another thing: you show the output of a checksum against PsFCIV_2.5.ps1 file, not your file. You messed file names, this is why your result doesn't match.
  • Pass exit code to remainder of script
    3 Posts | Last post November 24, 2014
    • Vadims, thank you for the script, it's working wonderfully as designed so far. I am trying to include this in a larger script that will create the checksum, move some data, then verify the checksum of the moved data. if i manually perform the tasks it works as designed, but due to "if ($Quiet) {exit $exit}" when it gets to the verify section of my script it completely exits. ideally i would like to pass the exit code on to the remainder of my script for verification and action, etc.
    • even when I change that code to something other than exit and try and pass the variable or even display it to host/verbose/debug/whatever, it still closes out the powershell window
    • I was close to figuring it out with powershell sessions, but then I figured out the original issue causing me to look to psfciv as an option. please disregard this question and delete it if necessary.
  • How can I verify signatures of downloaded software
    2 Posts | Last post November 05, 2014
    • Hi,
      I want to verify a software that I download from the internet. The publisher releases PGP signed message and signature.
      Can I use PsFCIV for this purpose?
      The signatures I'm trying to verify are as below. Assume I want to verify the file bitcoin-0.9.3-win64-setup.exe
      Hash: SHA256
      c425783b6cbab9b801ad6a1dcc9235828b98e5dee6675112741f8b210e4f65cd  bitcoin-0.9.3-linux.tar.gz
      251938650bd79681dd93dcce346589aa5d1217d012a6f8e749165ef2149662d2  bitcoin-0.9.3-macosx.dmg
      8894ee06e0c53fb857a676e5f72a62c72bda54907c36e9791fe3b483b413dd30  bitcoin-0.9.3-win32-setup.exe
      a6d9f1ec2eed7c0d9b106d0725408ef00e627f2ca87ce623e751a1c9b3b86bb2  bitcoin-0.9.3-win64-setup.exe
      175da29efda80d16737f50082e1e1c83d620fdc1a07a528a99ff3acb2a03ab8d  bitcoin-0.9.3-win.zip
      -----BEGIN PGP SIGNATURE-----
      Version: GnuPG v1
      -----END PGP SIGNATURE-----
    • PsFCIV is not compatible with PGP signature. However, you can manually run PsFCIV against your files to list their hashes and compare with ones in the PGP message. However, PGP message signature will not be verified.
  • Output the bad files to pipeline
    2 Posts | Last post September 16, 2014
    • I'd like to leverage this function into a scheduled task.  Can I output the 'bad' files to the powershell pipeline (rather than the popup grid?)
    • Currently it is not implemented in a convenient way. However, there is global variable $global:stats which keeps file names in groups. So you can switch to a root directory and use Get-Item to get the file object from file names.
  • Running Script
    2 Posts | Last post July 25, 2014
    • I get the following error when trying to run Start_PsFCIV.  Please advise.
      PS C:\> Start-PsFCIV -Path C:\COMM -XML C:\PsFCIV_2.5\Hash.xml
      Start-PsFCIV : The term 'Start-PsFCIV' is not recognized as the name of a cmdlet, function, script file, or operable
      program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
      At line:1 char:1
      + Start-PsFCIV -Path C:\COMM -XML C:\PsFCIV_2.5\Hash.xml
      + ~~~~~~~~~~~~
          + CategoryInfo          : ObjectNotFound: (Start-PsFCIV:String) [], CommandNotFoundException
          + FullyQualifiedErrorId : CommandNotFoundException
    • you didn't imported the function. You need to dot-source the function by running the command:
      . path\Start-PsFCIV.ps1
  • network paths
    2 Posts | Last post July 19, 2014
    • Can this app be used to generate hashes for files/directories on network paths (i.e. UNC paths or \\server\path)
    • yes, you can specify UNC paths with the tool. However, be aware that network file check will be slower than local file check.
11 - 20 of 29 Items