other old stuff for archiving.
yes I remembered to strip my sublime text license key out of the w10 boilerplate :P
This commit is contained in:
parent
92b37b7730
commit
2d132e2fbf
3
powershell/Csv2Json.ps1
Normal file
3
powershell/Csv2Json.ps1
Normal file
@ -0,0 +1,3 @@
|
||||
param($file)
|
||||
|
||||
Import-Csv $file | ConvertTo-Json > "$file$(".json")"
|
3
powershell/block-adobe.ps1
Normal file
3
powershell/block-adobe.ps1
Normal file
@ -0,0 +1,3 @@
|
||||
cd "C:\Program Files\Adobe\Adobe Premiere Pro CC 2019";
|
||||
|
||||
Get-ChildItem -Recurse -Filter *.exe | ForEach-Object { New-NetFirewallRule -DisplayName "adobe" -Direction Outbound -Program $_.FullName -Action Block}
|
7
powershell/de-webp.ps1
Normal file
7
powershell/de-webp.ps1
Normal file
@ -0,0 +1,7 @@
|
||||
param(
|
||||
$webp = 16
|
||||
)
|
||||
|
||||
$target = [System.IO.Path]::GetDirectoryName($webp) + "/" + [System.IO.Path]::GetFileNameWithoutExtension($webp) + ".png"
|
||||
dwebp $webp -o $target
|
||||
remove-item $webp
|
13
powershell/randstr.ps1
Normal file
13
powershell/randstr.ps1
Normal file
@ -0,0 +1,13 @@
|
||||
param(
|
||||
[int]
|
||||
$length = 16
|
||||
)
|
||||
|
||||
if($length -lt 1){
|
||||
Write-Warning "I call 1..length, so 1..0 counts backwards, giving 2 characters, -1 gives 3, etc."
|
||||
}
|
||||
|
||||
$str = 1..$length | ForEach-Object{
|
||||
"A", "B", "C", "D", "E", "F", "G", "H", "I", "K", "J", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" | Get-Random
|
||||
}
|
||||
return $str -join ""
|
28
powershell/rename-LineByLine.ps1
Normal file
28
powershell/rename-LineByLine.ps1
Normal file
@ -0,0 +1,28 @@
|
||||
#make a source, make a dest, get to the target location and go nuts
|
||||
param($srcNamesFile, $destNamesFile)
|
||||
|
||||
if($srcNamesFile -and $destNamesFile){
|
||||
|
||||
$srcLines = (Get-Content -Path $srcNamesFile)
|
||||
$destLines = (Get-Content -Path $destNamesFile)
|
||||
if($srcLines.length -ne $destLines.length){
|
||||
Write-Host "different lengths"
|
||||
} else{
|
||||
0..($srcLines.length) | ForEach-Object {
|
||||
$src = $srcLines[$_]
|
||||
$dest = $destLines[$_]
|
||||
if($src -and $dest){
|
||||
Rename-Item $src $dest
|
||||
}
|
||||
}
|
||||
}
|
||||
} else{
|
||||
$files = (Get-ChildItem -Name)
|
||||
$files > _src.txt
|
||||
$files > _dest.txt
|
||||
Write-Host "edit dest.txt in your favorite text editor, then call me again like:"
|
||||
$me = $myInvocation.MyCommand.Name
|
||||
Write-Host "$me -srcNamesFile src.txt -destNamesFile dest.txt"
|
||||
Write-Host "note we don't recurse."
|
||||
Write-Host "hint: to replace a dot that is not the last dot on the line, use this regex: \.(?=.*\..*)"
|
||||
}
|
18
powershell/retrymappeddrives.ps1
Normal file
18
powershell/retrymappeddrives.ps1
Normal file
@ -0,0 +1,18 @@
|
||||
$i=3
|
||||
while($True){
|
||||
$error.clear()
|
||||
$MappedDrives = Get-SmbMapping |where -property Status -Value Unavailable -EQ | select LocalPath,RemotePath
|
||||
foreach( $MappedDrive in $MappedDrives)
|
||||
{
|
||||
try {
|
||||
New-SmbMapping -LocalPath $MappedDrive.LocalPath -RemotePath $MappedDrive.RemotePath -Persistent $True
|
||||
} catch {
|
||||
Write-Host "There was an error mapping $MappedDrive.RemotePath to $MappedDrive.LocalPath"
|
||||
}
|
||||
}
|
||||
$i = $i - 1
|
||||
if($error.Count -eq 0 -Or $i -eq 0) {break}
|
||||
|
||||
Start-Sleep -Seconds 30
|
||||
|
||||
}
|
7
powershell/snapshots4everyone.ps1
Normal file
7
powershell/snapshots4everyone.ps1
Normal file
@ -0,0 +1,7 @@
|
||||
vboxland
|
||||
./VBoxManage list vms |
|
||||
Select-String -Pattern "\{[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}\}" |
|
||||
Foreach-Object {
|
||||
$vmName = """$($_.Matches[0])"""
|
||||
./VBoxManage.exe snapshot $vmName take "$(Get-Date -Format "yyyy-MM-ddThh-mm-ss.ffff")"
|
||||
}
|
4
powershell/thisDirStripExif.ps1
Normal file
4
powershell/thisDirStripExif.ps1
Normal file
@ -0,0 +1,4 @@
|
||||
Get-ChildItem *.jpg | foreach-object
|
||||
{
|
||||
magick convert $_.Name -auto-orient -strip $_.Name
|
||||
}
|
6
powershell/vbox-icon.ps1
Normal file
6
powershell/vbox-icon.ps1
Normal file
@ -0,0 +1,6 @@
|
||||
param($vm, $iconfile);
|
||||
#param? more like params.
|
||||
|
||||
|
||||
$cmd = '"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm $vm --iconfile $iconfile';
|
||||
iex "& $cmd";
|
43
powershell/window-always-top.ps1
Normal file
43
powershell/window-always-top.ps1
Normal file
@ -0,0 +1,43 @@
|
||||
param($processName="firefox", $topmost=$true)
|
||||
Add-Type @"
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
public class SFW {
|
||||
[DllImport("user32.dll")]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool SetForegroundWindow(IntPtr hWnd);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, uint uFlags);
|
||||
|
||||
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
|
||||
static readonly IntPtr HWND_NOTTOPMOST = new IntPtr(-2);
|
||||
|
||||
const UInt32 SWP_NOSIZE = 0x0001;
|
||||
const UInt32 SWP_NOMOVE = 0x0002;
|
||||
const UInt32 TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE;
|
||||
|
||||
public static void MakeTopMost (IntPtr hWnd)
|
||||
{
|
||||
SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
|
||||
}
|
||||
public static void MakeNotTopMost (IntPtr hWnd)
|
||||
{
|
||||
SetWindowPos(hWnd, HWND_NOTTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
|
||||
}
|
||||
}
|
||||
"@
|
||||
|
||||
$h = ((Get-Process $processName).MainWindowhandle.Where({$_ -ne [IntPtr]0}))[0]
|
||||
|
||||
|
||||
if($topmost)
|
||||
{
|
||||
[SFW]::MakeTopMost([IntPtr]$h)
|
||||
[SFW]::SetForegroundWindow([IntPtr]$h)
|
||||
}
|
||||
else
|
||||
{
|
||||
[SFW]::MakeNotTopMost([IntPtr]$h)
|
||||
}
|
4
windows10 boilerplate/go.bat
Normal file
4
windows10 boilerplate/go.bat
Normal file
@ -0,0 +1,4 @@
|
||||
cd "resrc"
|
||||
"./PowerShell-7.0.3-win-x64.msi" /passive ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1
|
||||
powershell "Set-ExecutionPolicy RemoteSigned -scope CurrentUser"
|
||||
powershell "./therealinstall.ps1"
|
BIN
windows10 boilerplate/resrc/PowerShell-7.0.3-win-x64.msi
Normal file
BIN
windows10 boilerplate/resrc/PowerShell-7.0.3-win-x64.msi
Normal file
Binary file not shown.
209
windows10 boilerplate/resrc/therealinstall.ps1
Normal file
209
windows10 boilerplate/resrc/therealinstall.ps1
Normal file
@ -0,0 +1,209 @@
|
||||
#be admin, we're going to fuck with registry
|
||||
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
|
||||
{
|
||||
$newProcess = new-object System.Diagnostics.ProcessStartInfo "pwsh";
|
||||
$newProcess.Arguments = """" + $myInvocation.MyCommand.Definition + """";
|
||||
$newProcess.Verb = "RunAs";
|
||||
[System.Diagnostics.Process]::Start($newProcess);
|
||||
exit
|
||||
}
|
||||
|
||||
#customize windows
|
||||
#regedit: hide recycle bin, skip recycle bin, show file extensions, better time format, powershell scripts run by default
|
||||
Set-Content -Path ~/boilerplate_registry.reg -Value @"
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UserProfileEngagement]
|
||||
"ScoobeSystemSettingEnabled"=dword:00000000
|
||||
|
||||
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]
|
||||
"{645FF040-5081-101B-9F08-00AA002F954E}"=dword:00000001
|
||||
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]
|
||||
"{645FF040-5081-101B-9F08-00AA002F954E}"=dword:00000001
|
||||
|
||||
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
|
||||
"NoRecycleFiles"=dword:00000001
|
||||
"ConfirmFileDelete"=dword:00000001
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]
|
||||
"NoRecycleFiles"=dword:00000001
|
||||
"ConfirmFileDelete"=dword:00000001
|
||||
|
||||
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
|
||||
"HideFileExt"=dword:00000000
|
||||
"Hidden":dword:00000001
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
|
||||
"HideFileExt"=dword:00000000
|
||||
"Hidden":dword:00000001
|
||||
|
||||
[HKEY_CURRENT_USER\Control Panel\International]
|
||||
"sShortDate"="yyyy-MM-dd"
|
||||
"sShortTime"="HH:mm"
|
||||
"sTimeFormat"="HH:mm:ss"
|
||||
[HKEY_LOCAL_MACHINE\Control Panel\International]
|
||||
"sShortDate"="yyyy-MM-dd"
|
||||
"sShortTime"="HH:mm"
|
||||
"sTimeFormat"="HH:mm:ss"
|
||||
|
||||
[HKEY_CLASSES_ROOT\.ps1]
|
||||
@="Microsoft.PowerShellScript.1"
|
||||
[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\Open\Command]
|
||||
@="\"$((get-command pwsh).Source)\" \"-Command\" \"if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'\""
|
||||
[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command]
|
||||
@="\$((get-command pwsh).Source)\" \"-Command\" \"if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1'\""
|
||||
"@
|
||||
regedit /s $(Resolve-Path ~/boilerplate_registry.reg)
|
||||
Write-Host "registry updated: hide recycle bin, skip recycle bin, show delete confirmation dialog, show file extensions, better time format, powershell scripts run by default (like bats)"
|
||||
|
||||
Set-TimeZone -Name "Eastern Standard Time"
|
||||
Write-Host "Set timezone to Eastern Standard. (pretty sure even if it's daylight savings time at the moment, it knows what we're talking about)"
|
||||
|
||||
#remove desktop shortcuts, Notably Edge.
|
||||
rm "~/Desktop/*.lnk";
|
||||
Write-Host "desktop shortcuts removed"
|
||||
|
||||
#remove some known windows bloatware.
|
||||
#king.com = candy crush, farm heroes
|
||||
#zunemusic = groove music
|
||||
$bloatwarePatterns = @"
|
||||
^king\.com\.
|
||||
^Microsoft\.Skype
|
||||
^Microsoft\.Xbox
|
||||
^Microsoft\.Zune
|
||||
^Spotify
|
||||
"@ -split "`n"
|
||||
ForEach($pattern in $bloatwarePatterns){
|
||||
ForEach($bloatware in ls "C:/Program Files/WindowsApps" | split-path -Leaf){
|
||||
if($bloatware -match $pattern){
|
||||
Remove-AppxPackage $bloatware
|
||||
Write-Host "removed bloatware: $bloatware"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#scoop
|
||||
if(![bool](Get-Command -Name scoop -ErrorAction SilentlyContinue))
|
||||
{
|
||||
Write-Host "installing scoop"
|
||||
#if we do this and scoop is already installed, we error out of the whole script. try/catch will not save you.
|
||||
#however, if we scoop install any scoop app, and it's already there, we get a warning and we keep going.
|
||||
iwr -useb get.scoop.sh | iex;
|
||||
}
|
||||
else
|
||||
{
|
||||
Write-Host "already have scoop"
|
||||
}
|
||||
|
||||
scoop install git;
|
||||
scoop bucket add extras;
|
||||
scoop install 7zip firefox sublime-text sublime-merge keepassxc kdiff3 openssh
|
||||
|
||||
#have sshd put you in powershell
|
||||
Set-Content -Path ~/boilerplate_registry_sshd.reg -Value @"
|
||||
Windows Registry Editor Version 5.00
|
||||
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH]
|
||||
"DefaultShell"="$((get-command pwsh).Source)"
|
||||
[HKEY_CURRENT_USER\SOFTWARE\OpenSSH]
|
||||
"DefaultShell"="$((get-command pwsh).Source)"
|
||||
"@
|
||||
regedit /s $(resolve-path ~/boilerplate_registry_sshd.reg)
|
||||
Write-Host "told SSHD to put you in powershell"
|
||||
|
||||
|
||||
Write-Host "back in ye olden times, would have registered Sublime Text"
|
||||
#configure sublime text
|
||||
New-Item -ItemType Directory -Force -Path "~/scoop/persist/sublime-text/Data/Packages/User/"
|
||||
Set-Content -Path "~/scoop/persist/sublime-text/Data/Packages/User/Preferences.sublime-settings" -Value @"
|
||||
{
|
||||
"font_size": 12,
|
||||
"ignored_packages":
|
||||
[
|
||||
"Vintage"
|
||||
],
|
||||
"hot_exit": false
|
||||
}
|
||||
"@
|
||||
Write-Host "Configured sublime text"
|
||||
|
||||
#start keepassxc on logon
|
||||
$keepassAction = New-ScheduledTaskAction -Execute (Resolve-Path "~/scoop/apps/keepassxc/current/KeePassXC.exe")
|
||||
$keepassTrigger = New-ScheduledTaskTrigger -AtLogOn -User $env:UserName
|
||||
Register-ScheduledTask -TaskName "KeePass XC" -Action $keepassAction -Trigger $keepassTrigger
|
||||
Write-Host "Set KeePass XC to start on logon"
|
||||
|
||||
#shortcuts:
|
||||
$wshshell = new-Object -comobject wscript.shell
|
||||
$volEnv = $wshShell.environment("volatile")
|
||||
#sublime text
|
||||
$shortcut = $wshShell.CreateShortcut("$(Resolve-Path ~/Desktop)/Sublime Text.lnk")
|
||||
$shortcut.TargetPath = (Resolve-Path "~/scoop/apps/sublime-text/current/sublime_text.exe")
|
||||
$shortcut.WorkingDirectory = (Resolve-Path ~/Desktop)
|
||||
$shortcut.save();
|
||||
#firefox
|
||||
$shortcut = $wshShell.CreateShortcut("$(Resolve-Path ~/Desktop)/Firefox.lnk")
|
||||
$shortcut.TargetPath = (Resolve-Path "~/scoop/apps/firefox/current/firefox.exe")
|
||||
$shortcut.save();
|
||||
#powershell
|
||||
$shortcut = $wshShell.CreateShortcut("$(Resolve-Path ~/Desktop)/Powershell.lnk")
|
||||
$shortcut.TargetPath = $((get-command pwsh).Source)
|
||||
$shortcut.WorkingDirectory = (Resolve-Path ~/Desktop)
|
||||
$shortcut.save();
|
||||
|
||||
#popup stuff the user has to do
|
||||
#auto-logon
|
||||
netplwiz.exe
|
||||
#firefox extensions
|
||||
firefox "https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/" "https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/" "https://addons.mozilla.org/en-US/firefox/addon/keepassxc-browser/" "https://addons.mozilla.org/en-US/firefox/addon/awesome-rss/" "https://addons.mozilla.org/en-US/firefox/addon/cookie-remover/" "https://addons.mozilla.org/en-US/firefox/addon/dark-gold/"
|
||||
|
||||
#registry edit
|
||||
regedit
|
||||
|
||||
set-content -Path ~/desktop/test.log -value "i am a test set me to open with sublime text"
|
||||
Set-Content -Path ~/desktop/test.txt -value "I am a test set me to open with sublime text"
|
||||
|
||||
#pop some data up in a prettier form than the console window
|
||||
Set-Content -Path ~/boilerplate_readme.txt -Value @"
|
||||
things that you must do now:
|
||||
|
||||
FIRST: I popped up regedit.
|
||||
keys:
|
||||
Computer\HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\0\Command
|
||||
Computer\HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\open\Command
|
||||
value: pwsh %1
|
||||
|
||||
* Set hostname. If you open powershell as admin, Rename-Computer
|
||||
* I popped up netplwiz for you, set up auto-logon. Just uncheck, it'll ask for your password.
|
||||
* customize start menu.
|
||||
* customize task bar.
|
||||
* tell 7zip to get on the context menu.
|
||||
* set firefox to be the default web browser.
|
||||
* I popped up firefox to some extensions, you'll have to actually do the installation.
|
||||
* set sublime text to be the default for any file types.
|
||||
* I put some shortcuts on the desktop, you'll have to drag them to the quick launch bar, then delete the ones on the desktop
|
||||
* reboot, at some point
|
||||
|
||||
Other notes:
|
||||
this text file (should) delete itself on your next logon, along with some other junk that got dumped in your home dir.
|
||||
I swear we enabled file type extensions. You may have to refresh your explorer windows to see it. The key exists for hkey current user, but we did also make one for local machine, hopefully if you make new accounts they'll get it too.
|
||||
I think command line won't see pwsh until you reboot. Also when you reboot it'll refresh the desktop so recycle bin will hide.
|
||||
"@
|
||||
subl ~/boilerplate_readme.txt
|
||||
|
||||
#cleanup files we created
|
||||
Set-Content -Path ~/boilerplate_cleanup.ps1 -Value @"
|
||||
`$logfile = "~/Desktop/debug.log"
|
||||
Add-Content -Path `$logfile -Value "cleaning up. "
|
||||
rm ~/boilerplate_registry.reg
|
||||
rm ~/boilerplate_readme.txt
|
||||
rm ~/boilerplate_registry_sshd.reg
|
||||
Add-Content -Path `$logfile -Value "Removed some junk. "
|
||||
Unregister-ScheduledTask -TaskName "Cleanup From Boilerplate" -Confirm:`$false
|
||||
Add-Content -Path `$logfile -Value "Removed task. "
|
||||
Add-Content -Path `$logfile -Value "self-destructing... "
|
||||
rm ~/boilerplate_cleanup.ps1;
|
||||
Add-Content -Path `$logfile -Value "destroyed self. Will I dream, dave?"
|
||||
pause;
|
||||
"@
|
||||
$cleanupAction = New-ScheduledTaskAction -Execute (Resolve-Path ~/boilerplate_cleanup.ps1)
|
||||
$cleanupTrigger = New-ScheduledTaskTrigger -AtLogOn
|
||||
Register-ScheduledTask -TaskName "Cleanup From Boilerplate" -Action $cleanupAction -Trigger $cleanupTrigger -RunLevel Highest
|
Loading…
Reference in New Issue
Block a user