Skip to content

Instantly share code, notes, and snippets.

@Hashbrown777
Hashbrown777 / _NetLbfoTeam.ps1
Created June 19, 2023 15:53
After extracting the needed files, get `New-NetLbfoTeam` working in win10
try {
Switch ($args[0]) {
#entrypoint
$NULL {
if (!(Start-Process `
-FilePath 'PsExec' `
-ArgumentList (
'-s',
'-nobanner',
'-accepteula',
@Hashbrown777
Hashbrown777 / stackoverflow-unsave.js
Last active May 31, 2023 09:46
Unfollow all your questions in a Stack Exchange list
//go to one of your lists, eg https://superuser.com/users/saves/241800
$('.s-block-link.js-unsave').click()
//NO NEED TO USE THIS
(async (links) => {
const request = {
body : 'fkey=' + localStorage['se:fkey'].replace(/,.*$/, ''),
method : 'POST',
@Hashbrown777
Hashbrown777 / merge.ps1
Created May 22, 2023 12:00
take all files in $from and put them in the same place under $to, replacing any matched files
$from = $from | gi
$to = ($to | gi).FullName
$from `
| Get-ChildItem -File -Recurse `
| &{
Begin {
$from = '^' + [Regex]::Escape($from.FullName)
}
Process {
@Hashbrown777
Hashbrown777 / batt50.ps1
Created May 15, 2023 05:00
Discharge laptop to 55% before shutting it down & not using it for a good while
while ((Get-CimInstance Win32_Battery).EstimatedChargeRemaining -gt 55) { sleep 60 } shutdown -s -t 0
//leaves only the unique elements in two sorted arrays
function diff(bob, steve) {
for (let b = 0, s = 0; b < bob.length && s < steve.length; ++b, ++s) {
if (bob[b] < steve[s])
--s;
else if (bob[b] > steve[s])
--b;
else {
bob.splice(b--, 1);
steve.splice(s--, 1);
@Hashbrown777
Hashbrown777 / _punchHoles.ps1
Last active June 22, 2023 17:01
In files identified as containing corrupted blocks punch holes in the valid blocks so they don't take up as much space
$blockSize = 4KB
$buffer=[byte[]]::new($blockSize)
Get-ChildItem -File `
| Sort-Object -Property Length
| %{
"$($_.Name)`t$($_.Length / 1MB -bor 0)MB"
$path = $_.FullName
#useful if your files are patchable eg torrent-sourced
sudo cp --reflink=always $path "${path}_rescued"
@Hashbrown777
Hashbrown777 / datesort.ps1
Created January 16, 2023 17:19
Sorting captures from holidays into folders named by date
$ErrorActionPreference = 'Stop'
$shell = New-Object -ComObject 'Shell.Application'
&{
gci -File `
| ?{
#leave these in the root directory
$_.Name -notmatch '^(IMG_\d{4}.JPG|sort.ps1|Untitled.png)$'
}
@Hashbrown777
Hashbrown777 / dirdiff.ps1
Created January 16, 2023 08:52
Sees if there are any differences between two folder structures and file contents therein using a multithreaded process
#folders you want checked that are found in each root
$paths = 'Pics of cats', 'Pics of dogs'
#roots to compare, must include terminating slash
$roots = '//?/D:/PicsBackup/', '//?/C:/Users/Hashbrown/Desktop/'
#any files that are permitted to differ and wont be checked
$skip = `
'Pics of cats/test.ps1',
'Pics of cats/tabby/download.log'
#periodically the script outputs the last sucessfully checked path.
#upon failure you can start from exactly where you were, skipping all previously checked files
@Hashbrown777
Hashbrown777 / clonepage.js
Last active June 12, 2023 09:06
Clones the selected element in the console into a new window, copying all styles and re-inserting any pseudo elements.
(function ({element, asBody, embedUrls, convertPseudo}) {
let copy = open().document;
copy.open();
copy.write('<!doctype html>\n<html><head></head><body></body></html>');
copy.close();
if (asBody) {
for (const name of element.getAttributeNames())
copy.body.setAttribute(name, element.getAttribute(name));
for (const node of element.children)
@Hashbrown777
Hashbrown777 / ChunkSum.ps1
Created November 23, 2022 17:17
Get multiple checksum hashes on a per-chunk basis from a single file.
<# Similar to a CheckSum, but you receive one for every chunk of a given size in the file as if hashing several files each of that size.
You could use this to assess where in a file it differs from another (say, over a network, where comparing digests is infinitely better than comparing the real byte streams)
-File
Can be a string or file reference (it's passed to Get-Item internally anyway)
-ChunkSize
The size to 'break' the file into to report each hash on.
A chunksize greater or equal to the filesize is equivalent to a normal Get-FileHash call.
This figure does not have to be a multiple of BufferSize (nor vice versa); the streaming is robust.
-BufferSize
The amount, in bytes, to read at a time before passing it on to the hashing algorithm.