Cheap Unlimited Cloud Backup Storage

Have you ever just wanted a cloud backup solutions that you didn’t have to bother calculating how much you’re paying per GB? I you’re like me you have a $#!#ton of data that you would have to upload the prices don’t make much sense and a NAS or home server are the more sensible solution. However, I don’t want to go out and purchase a server (I really do) or if it’s too impractical to shell out a bunch of cash just for the purpose of backing up your data to NAS enter “backblaze”.

I’m not sponsored by backblaze in any way. Although I wish I was “email me backblaze!”

When I had been searching for a solution that would simply cover my backup needs for my significant amount of data to be backed up (20TB) it doesn’t seem like it’s that much storage? or does it? At least in cloud-land it does.

Google charges $200/mo. for their 20TB of cloud storage service.

Dropbox Business charges $25/mo/user requiring a minimum of 3 users. So for a home user to back up their storage of 20 TB that would total $75/mo. Still more reasonable than Google Drive. (Box) charges $15/mo/user requiring a minimum of 3 users. So for a home user single PC backup total of $45/mo.

Then I checked out It has a more reasonable price of $9.95/mo and it only requires 1 user.

When I took a look at backblaze I had found that I could backup all of the data “attached” to my PC for $6/mo. That means that if you have external drives that those are included as well!

I had also discovered that the services also offers a promotional deal of getting the first month free! I’m loving that.

I’m still uploading my initial backup and during the backup process it’s been really quick and easy to get setup. By default all drives were selected to be backed up with the exception of my Google Drive file stream as a GSuite user. That seems logical to me as that is already in the cloud. However, if you want to backup your cloud storage from another service as long as it is a mapped drive on your system you can back it up with the backblaze service.

Then I had discovered that I wanted to tinker with some settings to increase the performance of the initial backup process as my upload speed is a measly 10 Mbps. Curse you asymmetric internet connections!

The first setting was to max out my upload speed in the backblaze control panel by clicking on “Settings” and going into the “performance” tab. Then deselecting “automatic threading/throttle” and then bumping the number of backup threads one at a time to determine where the curve was in the performance dropoff. I had settled on “4” backup threads to be sufficient.

You can choose what to backup and what to exclude in the control panel settings and you can minimize the window to the system tray’s overflow menu.

I went to and signed in using modern authentication with my google account. From there I was able to look at all of the computers associated with my account. More than one PC can be added to each account. There was a file explorer style view to select individual files to be restored as needed.

So, far I haven’t completed my initial backup yet and I haven’t had to restore anything but I can say that I’m already impressed with the service. Especially in comparison to other companies offerings.

Try this service out now! You’ll thank me later. To thank me now for the recommendation you can use my referral link here which gives me some unknown quantity of free months to use for the service.

Migrate Accounts from Local to Domain Profile


This post is meant as an archive of this information due to its overall usefulness. Everything hereafter is credit to Felix Gorovodsky.

Step 1: Step 1

Join computer to new domain and restart it

Step 2: Step 2

Login in on old local account

Step 3: Step 3

Grant full permissions on your home folder, such as C:\USERS\testuser, keep in mind to check the option to replicate permissions to all child objects. Don’t worry about not setting permissions on few folders like Documents/My music/Pictures etc. These are not real folders, they are just links, so no permissions can be set. Just ignore them.

Step 4: Step 4

After this open Regedit

Step 5: Step 5

Right-click on HKEY_CURRENT_USER and select permissions

Step 6: Step 6

In new window click Advanced, then Add, and then type in DOMAIN ACCOUNT NAME. You may need to provide domain admin credentials to query AD.

Step 7: Step 7

Select user, then check following options:
A- Apply to: This Key and subkeys
B- Full Control
C- DO NOT SELECT LAST CHECKBOX – apply these permissions to objects and/or containerswithin this container only

Step 8: Step 8

Click Ok, then ok, then ok

Step 9: Step 9

Wait till finish and restart computer

Step 10: Step 10

Login to domain account, this will local profile, store SID information in registry etc.

Step 11: Step 11

Logout from domain profile, restart and login to local admin account

Step 12: Step 12

Open registry, navigate to HKLM\Software\Microsoft\Windows_NT\CurrentVersion\Profile List

Step 13: Step 13

Find the one, with local path to profile in key: ProfileImagePath, copy value of this key, eg. C:\Users\test.local

Step 14: Step 14

Find the other one with newly created profile path, eg. C:\Users\test.user.domain

Step 15: Step 15

Replace value of ProfileImagePath from old profile, eg. C:\Users\test.user.domain with C:\Users\test.local

Step 16: Step 16

Double check permissions for folders, check value of the keys.

Step 17: Step 17

If everything is ok, reboot computer and try to login to new domain profile. You should be welcomed with old desktop and settings.

Step 18: Step 18

One thing to remember, all outlook passwords need to be re-entered since credentials storage is wiped.

Get Desktop Monitor Information with a Powershell Script

Script source:

I’ve found that this script works fantastically and is incredibly easy to use.

Just copy and paste this into your Powershell ISE window, Visual Studio code, notepad++, or just plain old notepad and save the file as a .ps1 file. I recommend the Powershell ISE because then I can just hit run and test the code immediately.


This powershell function gets information about the monitors attached to any computer. It uses EDID information provided by WMI. If this value is not specified it pulls the monitors of the computer that the script is being run on.

The function begins by looping through each computer specified. For each computer it gets a list of monitors.
It then gets all of the necessary data from each monitor object and converts and cleans the data and places it in a custom PSObject. It then adds
the data to an array. At the end the array is displayed.

.PARAMETER ComputerName
Use this to specify the computer(s) which you'd like to retrieve information about monitors from.

PS C:/> Get-Monitor.ps1 -ComputerName MyComputer

Manufacturer Model SerialNumber AttachedComputer
------------ ----- ------------ ---------------
Acer Acer K272HUL T0SfADAFD MyComputer

PS C:/> $Computers = @("Comp1","Comp2","Comp3")
PS C:/> Get-Monitor.ps1 -ComputerName $Computers

Manufacturer Model SerialNumber AttachedComputer
------------ ----- ------------ ----------------


[String[]]$ComputerName = $env:ComputerName

#List of Manufacture Codes that could be pulled from WMI and their respective full names. Used for translating later down.
$ManufacturerHash = @{
"AAC" = "AcerView";
"ACR" = "Acer";
"ACI" = " Asus";
"APP" = "Apple Computer";
"AUO" = "Asus";
"CMO" = "Acer";
"CPQ" = "Compaq";
"DEL" = "Dell";
"HWP" = "HP";
"LEN" = "Lenovo";
"SAN" = "Samsung";
"SAM" = "Samsung";
"SNY" = "Sony";
"SRC" = "Shamrock";
"SUN" = "Sun Microsystems";
"SEC" = "Hewlett-Packard";
"TAT" = "Tatung";
"TOS" = "Toshiba";
"TSB" = "Toshiba";
"VSC" = "ViewSonic";
"UNK" = "Unknown";
"_YV" = "Fujitsu";

#Takes each computer specified and runs the following code:
ForEach ($Computer in $ComputerName) {

#Grabs the Monitor objects from WMI
$Monitors = Get-WmiObject -Namespace "root\WMI" -Class "WMIMonitorID" -ComputerName $Computer -ErrorAction SilentlyContinue

#Creates an empty array to hold the data
$Monitor_Array = @()

#Takes each monitor object found and runs the following code:
ForEach ($Monitor in $Monitors) {

#Grabs respective data and converts it from ASCII encoding and removes any trailing ASCII null values
If ([System.Text.Encoding]::ASCII.GetString($Monitor.UserFriendlyName) -ne $null) {
$Mon_Model = ([System.Text.Encoding]::ASCII.GetString($Monitor.UserFriendlyName)).Replace("$([char]0x0000)","")
} else {
$Mon_Model = $null
$Mon_Serial_Number = ([System.Text.Encoding]::ASCII.GetString($Monitor.SerialNumberID)).Replace("$([char]0x0000)","")
$Mon_Attached_Computer = ($Monitor.PSComputerName).Replace("$([char]0x0000)","")
$Mon_Manufacturer = ([System.Text.Encoding]::ASCII.GetString($Monitor.ManufacturerName)).Replace("$([char]0x0000)","")

#Sets a friendly name based on the hash table above. If no entry found sets it to the original 3 character code
$Mon_Manufacturer_Friendly = $ManufacturerHash.$Mon_Manufacturer
If ($Mon_Manufacturer_Friendly -eq $null) {
$Mon_Manufacturer_Friendly = $Mon_Manufacturer

#Creates a custom monitor object and fills it with 4 NoteProperty members and the respective data
$Monitor_Obj = [PSCustomObject]@{
Manufacturer = $Mon_Manufacturer_Friendly
Model = $Mon_Model
SerialNumber = $Mon_Serial_Number
AttachedComputer = $Mon_Attached_Computer

#Appends the object to the array
$Monitor_Array += $Monitor_Obj

} #End ForEach Monitor

#Outputs the Array

} #End ForEach Computer

I plan on coming back to this script and configuring prompts for PS remoting to domain joined PCs and gather lists of all PCs in a domain with particular monitor information.