PowerShell script for shredding files.
If you have more than enough free disk space, your files will most likely still be recoverable - even after shredding.
Tested with PowerShell v5.1.18362.752 on Windows 10 Enterprise OS (64-bit).
Made for educational purposes. I hope it will help!
Open the PowerShell from \src\ and run the commands shown below.
Set the execution policy:
Set-ExecutionPolicy Unrestricted
Run the script:
.\file_shredder.ps1 .\somefile.txt
Or, run the following command from either PowerShell or Command Prompt:
PowerShell -ExecutionPolicy Unrestricted -File .\file_shredder.ps1 .\somefile.txt
To run the PowerShell encoded command, run the following command from either PowerShell or Command Prompt:
PowerShell -ExecutionPolicy Unrestricted -EncodedCommand JABwACAAPQAgACQAKABSAGUAYQBkAC0ASABvAHMAdAAgAC0AUAByAG8AbQBwAHQAIAAiAEUAbgB0AGUAcgAgAGYAaQBsAGUAIABwAGEAdABoACIAKQAuAFQAcgBpAG0AKAApADsAIABXAHIAaQB0AGUALQBIAG8AcwB0ACAAIgAiADsAIABpAGYAIAAoACQAcAAuAEwAZQBuAGcAdABoACAALQBsAHQAIAAxACkAIAB7ACAAVwByAGkAdABlAC0ASABvAHMAdAAgACIARgBpAGwAZQAgAGkAcwAgAHIAZQBxAHUAaQByAGUAZAAiADsAIAB9ACAAZQBsAHMAZQAgAHsAIABXAHIAaQB0AGUALQBIAG8AcwB0ACAAIgAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAYABuACMAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIwBgAG4AIwAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAARgBpAGwAZQAgAFMAaAByAGUAZABkAGUAcgAgADEALgAzACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAjAGAAbgAjACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABiAHkAIABJAHYAYQBuACAAUwBpAG4AYwBlAGsAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACMAYABuACMAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIwBgAG4AIwAgAEcAaQB0AEgAdQBiACAAcgBlAHAAbwBzAGkAdABvAHIAeQAgAGEAdAAgAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwBpAHYAYQBuAC0AcwBpAG4AYwBlAGsALwBmAGkAbABlAC0AcwBoAHIAZQBkAGQAZQByAC4AIAAgACAAIAAgACAAIAAgACAAIAAjAGAAbgAjACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACMAYABuACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAiADsAIAAkAHMAegAgAD0AIAAyADAANAA4ADsAIAAkAGIAIAA9ACAAJABuAHUAbABsADsAIAAkAHIAbgBnACAAPQAgACQAbgB1AGwAbAA7ACAAJABzACAAPQAgACQAbgB1AGwAbAA7ACAAJABmACAAPQAgACQAbgB1AGwAbAA7ACAAdAByAHkAIAB7ACAAJABmACAAPQAgAEcAZQB0AC0ASQB0AGUAbQAgACQAcAAgAC0ARQByAHIAbwByAEEAYwB0AGkAbwBuACAAUwBpAGwAZQBuAHQAbAB5AEMAbwBuAHQAaQBuAHUAZQA7ACAAaQBmACAAKAAkAGYAIAAtAGUAcQAgACQAbgB1AGwAbAApACAAewAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiAFAAYQB0AGgAIABkAG8AZQBzACAAbgBvAHQAIABlAHgAaQBzAHQAcwAiADsAIAB9ACAAZQBsAHMAZQBpAGYAIAAoACQAZgAgAC0AaQBzAG4AbwB0ACAAWwBJAE8ALgBGAGkAbABlAEkAbgBmAG8AXQApACAAewAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiAFAAYQB0AGgAIABzAHAAZQBjAGkAZgBpAGUAZAAgAGkAcwAgAG4AbwB0ACAAYQAgAGYAaQBsAGUAIgA7ACAAfQAgAGUAbABzAGUAIAB7ACAAJABmAC4AQQB0AHQAcgBpAGIAdQB0AGUAcwAgAD0AIAAiAE4AbwByAG0AYQBsACIAOwAgACQAcwBlAGMAIAA9ACAAWwBNAGEAdABoAF0AOgA6AEMAZQBpAGwAaQBuAGcAKAAkAGYALgBMAGUAbgBnAHQAaAAgAC8AIAAkAHMAegApADsAIAAkAGIAIAA9ACAATgBlAHcALQBPAGIAagBlAGMAdAAgAEIAeQB0AGUAWwBdACAAJABzAHoAOwAgACQAcgBuAGcAIAA9ACAAWwBTAGUAYwB1AHIAaQB0AHkALgBDAHIAeQBwAHQAbwBnAHIAYQBwAGgAeQAuAFIAYQBuAGQAbwBtAE4AdQBtAGIAZQByAEcAZQBuAGUAcgBhAHQAbwByAF0AOgA6AEMAcgBlAGEAdABlACgAKQA7ACAAJABzACAAPQAgAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABJAE8ALgBGAGkAbABlAFMAdAByAGUAYQBtACgAJABmAC4ARgB1AGwAbABOAGEAbQBlACwAIABbAEkATwAuAEYAaQBsAGUAQQBjAGMAZQBzAHMAXQA6ADoAVwByAGkAdABlACkAOwAgAGYAbwByACAAKAAkAGkAIAA9ACAAMAA7ACAAJABpACAALQBsAHQAIAA3ADsAIAAkAGkAKwArACkAIAB7ACAAJABzAC4AUABvAHMAaQB0AGkAbwBuACAAPQAgADAAOwAgAGYAbwByACAAKAAkAGoAIAA9ACAAMAA7ACAAJABqACAALQBsAHQAIAAkAHMAZQBjADsAIAAkAGoAKwArACkAIAB7ACAAJAByAG4AZwAuAEcAZQB0AEIAeQB0AGUAcwAoACQAYgApADsAIAAkAHMALgBXAHIAaQB0AGUAKAAkAGIALAAgADAALAAgACQAYgAuAEwAZQBuAGcAdABoACkAOwAgAH0AIAB9ACAAJABzAC4AUwBlAHQATABlAG4AZwB0AGgAKAAwACkAOwAgACQAcwAuAEMAbABvAHMAZQAoACkAOwAgACQAZgAuAEMAcgBlAGEAdABpAG8AbgBUAGkAbQBlACAAPQAgACIAMAA5AC8AMAA2AC8AMgAwADYAOQAgADAANAA6ADIAMAA6ADAAMAAgAEEATQAiADsAIAAkAGYALgBMAGEAcwB0AFcAcgBpAHQAZQBUAGkAbQBlACAAPQAgACIAMAA5AC8AMAA2AC8AMgAwADYAOQAgADAANAA6ADIAMAA6ADAAMAAgAEEATQAiADsAIAAkAGYALgBMAGEAcwB0AEEAYwBjAGUAcwBzAFQAaQBtAGUAIAA9ACAAIgAwADkALwAwADYALwAyADAANgA5ACAAMAA0ADoAMgAwADoAMAAwACAAQQBNACIAOwAgACQAZgAuAEQAZQBsAGUAdABlACgAKQA7ACAAVwByAGkAdABlAC0ASABvAHMAdAAgACIARgBpAGwAZQAgAGgAYQBzACAAYgBlAGUAbgAgAHMAaAByAGUAZABkAGUAZAAgAHMAdQBjAGMAZQBzAHMAZgB1AGwAbAB5ACIAOwAgAH0AIAB9ACAAYwBhAHQAYwBoACAAewAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAkAF8ALgBFAHgAYwBlAHAAdABpAG8AbgAuAEkAbgBuAGUAcgBFAHgAYwBlAHAAdABpAG8AbgAuAE0AZQBzAHMAYQBnAGUAOwAgAH0AIABmAGkAbgBhAGwAbAB5ACAAewAgAGkAZgAgACgAJABiACAALQBuAGUAIAAkAG4AdQBsAGwAKQAgAHsAIAAkAGIALgBDAGwAZQBhAHIAKAApADsAIAB9ACAAaQBmACAAKAAkAHIAbgBnACAALQBuAGUAIAAkAG4AdQBsAGwAKQAgAHsAIAAkAHIAbgBnAC4ARABpAHMAcABvAHMAZQAoACkAOwAgAH0AIABpAGYAIAAoACQAcwAgAC0AbgBlACAAJABuAHUAbABsACkAIAB7ACAAJABzAC4AQwBsAG8AcwBlACgAKQA7ACAAJABzAC4ARABpAHMAcABvAHMAZQAoACkAOwAgAH0AIABpAGYAIAAoACQAZgAgAC0AbgBlACAAJABuAHUAbABsACkAIAB7ACAAQwBsAGUAYQByAC0AVgBhAHIAaQBhAGIAbABlACAALQBOAGEAbQBlACAAIgBmACIAOwAgAH0AIAB9ACAAfQANAAoA
The encoded script will prompt for input. See the slightly altered and minified script here.
To pass parameters to PowerShell encoded command, run the following command from either PowerShell or Command Prompt:
PowerShell -Command "'.\somefile.txt'" | PowerShell -ExecutionPolicy Unrestricted -EncodedCommand JABwACAAPQAgACQAKABSAGUAYQBkAC0ASABvAHMAdAAgAC0AUAByAG8AbQBwAHQAIAAiAEUAbgB0AGUAcgAgAGYAaQBsAGUAIABwAGEAdABoACIAKQAuAFQAcgBpAG0AKAApADsAIABXAHIAaQB0AGUALQBIAG8AcwB0ACAAIgAiADsAIABpAGYAIAAoACQAcAAuAEwAZQBuAGcAdABoACAALQBsAHQAIAAxACkAIAB7ACAAVwByAGkAdABlAC0ASABvAHMAdAAgACIARgBpAGwAZQAgAGkAcwAgAHIAZQBxAHUAaQByAGUAZAAiADsAIAB9ACAAZQBsAHMAZQAgAHsAIABXAHIAaQB0AGUALQBIAG8AcwB0ACAAIgAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAYABuACMAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIwBgAG4AIwAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAARgBpAGwAZQAgAFMAaAByAGUAZABkAGUAcgAgADEALgAzACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAjAGAAbgAjACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABiAHkAIABJAHYAYQBuACAAUwBpAG4AYwBlAGsAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACMAYABuACMAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIwBgAG4AIwAgAEcAaQB0AEgAdQBiACAAcgBlAHAAbwBzAGkAdABvAHIAeQAgAGEAdAAgAGcAaQB0AGgAdQBiAC4AYwBvAG0ALwBpAHYAYQBuAC0AcwBpAG4AYwBlAGsALwBmAGkAbABlAC0AcwBoAHIAZQBkAGQAZQByAC4AIAAgACAAIAAgACAAIAAgACAAIAAjAGAAbgAjACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACMAYABuACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAjACMAIwAiADsAIAAkAHMAegAgAD0AIAAyADAANAA4ADsAIAAkAGIAIAA9ACAAJABuAHUAbABsADsAIAAkAHIAbgBnACAAPQAgACQAbgB1AGwAbAA7ACAAJABzACAAPQAgACQAbgB1AGwAbAA7ACAAJABmACAAPQAgACQAbgB1AGwAbAA7ACAAdAByAHkAIAB7ACAAJABmACAAPQAgAEcAZQB0AC0ASQB0AGUAbQAgACQAcAAgAC0ARQByAHIAbwByAEEAYwB0AGkAbwBuACAAUwBpAGwAZQBuAHQAbAB5AEMAbwBuAHQAaQBuAHUAZQA7ACAAaQBmACAAKAAkAGYAIAAtAGUAcQAgACQAbgB1AGwAbAApACAAewAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiAFAAYQB0AGgAIABkAG8AZQBzACAAbgBvAHQAIABlAHgAaQBzAHQAcwAiADsAIAB9ACAAZQBsAHMAZQBpAGYAIAAoACQAZgAgAC0AaQBzAG4AbwB0ACAAWwBJAE8ALgBGAGkAbABlAEkAbgBmAG8AXQApACAAewAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAiAFAAYQB0AGgAIABzAHAAZQBjAGkAZgBpAGUAZAAgAGkAcwAgAG4AbwB0ACAAYQAgAGYAaQBsAGUAIgA7ACAAfQAgAGUAbABzAGUAIAB7ACAAJABmAC4AQQB0AHQAcgBpAGIAdQB0AGUAcwAgAD0AIAAiAE4AbwByAG0AYQBsACIAOwAgACQAcwBlAGMAIAA9ACAAWwBNAGEAdABoAF0AOgA6AEMAZQBpAGwAaQBuAGcAKAAkAGYALgBMAGUAbgBnAHQAaAAgAC8AIAAkAHMAegApADsAIAAkAGIAIAA9ACAATgBlAHcALQBPAGIAagBlAGMAdAAgAEIAeQB0AGUAWwBdACAAJABzAHoAOwAgACQAcgBuAGcAIAA9ACAAWwBTAGUAYwB1AHIAaQB0AHkALgBDAHIAeQBwAHQAbwBnAHIAYQBwAGgAeQAuAFIAYQBuAGQAbwBtAE4AdQBtAGIAZQByAEcAZQBuAGUAcgBhAHQAbwByAF0AOgA6AEMAcgBlAGEAdABlACgAKQA7ACAAJABzACAAPQAgAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABJAE8ALgBGAGkAbABlAFMAdAByAGUAYQBtACgAJABmAC4ARgB1AGwAbABOAGEAbQBlACwAIABbAEkATwAuAEYAaQBsAGUAQQBjAGMAZQBzAHMAXQA6ADoAVwByAGkAdABlACkAOwAgAGYAbwByACAAKAAkAGkAIAA9ACAAMAA7ACAAJABpACAALQBsAHQAIAA3ADsAIAAkAGkAKwArACkAIAB7ACAAJABzAC4AUABvAHMAaQB0AGkAbwBuACAAPQAgADAAOwAgAGYAbwByACAAKAAkAGoAIAA9ACAAMAA7ACAAJABqACAALQBsAHQAIAAkAHMAZQBjADsAIAAkAGoAKwArACkAIAB7ACAAJAByAG4AZwAuAEcAZQB0AEIAeQB0AGUAcwAoACQAYgApADsAIAAkAHMALgBXAHIAaQB0AGUAKAAkAGIALAAgADAALAAgACQAYgAuAEwAZQBuAGcAdABoACkAOwAgAH0AIAB9ACAAJABzAC4AUwBlAHQATABlAG4AZwB0AGgAKAAwACkAOwAgACQAcwAuAEMAbABvAHMAZQAoACkAOwAgACQAZgAuAEMAcgBlAGEAdABpAG8AbgBUAGkAbQBlACAAPQAgACIAMAA5AC8AMAA2AC8AMgAwADYAOQAgADAANAA6ADIAMAA6ADAAMAAgAEEATQAiADsAIAAkAGYALgBMAGEAcwB0AFcAcgBpAHQAZQBUAGkAbQBlACAAPQAgACIAMAA5AC8AMAA2AC8AMgAwADYAOQAgADAANAA6ADIAMAA6ADAAMAAgAEEATQAiADsAIAAkAGYALgBMAGEAcwB0AEEAYwBjAGUAcwBzAFQAaQBtAGUAIAA9ACAAIgAwADkALwAwADYALwAyADAANgA5ACAAMAA0ADoAMgAwADoAMAAwACAAQQBNACIAOwAgACQAZgAuAEQAZQBsAGUAdABlACgAKQA7ACAAVwByAGkAdABlAC0ASABvAHMAdAAgACIARgBpAGwAZQAgAGgAYQBzACAAYgBlAGUAbgAgAHMAaAByAGUAZABkAGUAZAAgAHMAdQBjAGMAZQBzAHMAZgB1AGwAbAB5ACIAOwAgAH0AIAB9ACAAYwBhAHQAYwBoACAAewAgAFcAcgBpAHQAZQAtAEgAbwBzAHQAIAAkAF8ALgBFAHgAYwBlAHAAdABpAG8AbgAuAEkAbgBuAGUAcgBFAHgAYwBlAHAAdABpAG8AbgAuAE0AZQBzAHMAYQBnAGUAOwAgAH0AIABmAGkAbgBhAGwAbAB5ACAAewAgAGkAZgAgACgAJABiACAALQBuAGUAIAAkAG4AdQBsAGwAKQAgAHsAIAAkAGIALgBDAGwAZQBhAHIAKAApADsAIAB9ACAAaQBmACAAKAAkAHIAbgBnACAALQBuAGUAIAAkAG4AdQBsAGwAKQAgAHsAIAAkAHIAbgBnAC4ARABpAHMAcABvAHMAZQAoACkAOwAgAH0AIABpAGYAIAAoACQAcwAgAC0AbgBlACAAJABuAHUAbABsACkAIAB7ACAAJABzAC4AQwBsAG8AcwBlACgAKQA7ACAAJABzAC4ARABpAHMAcABvAHMAZQAoACkAOwAgAH0AIABpAGYAIAAoACQAZgAgAC0AbgBlACAAJABuAHUAbABsACkAIAB7ACAAQwBsAGUAYQByAC0AVgBhAHIAaQBhAGIAbABlACAALQBOAGEAbQBlACAAIgBmACIAOwAgAH0AIAB9ACAAfQANAAoA
To generate a PowerShell encoded command from a PowerShell script, run the following PowerShell command:
[Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes([IO.File]::ReadAllText($script)))
To decode a PowerShell encoded command, run the following PowerShell command:
[Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($command))