How do I set instance script parameters to a prefab?

I am attempting to make a game where the user can configure many instances of the same type of object/prefab but each instance in the game can have a different scale, color, texture, etc. How can I use the instantiate method the call my prefab to make a copy but then allow the script parameters to be modified on an instance based level rather than modifying all of the gameobjects of that type of prefab in the model? Just like when you make a class in C# with properties. You then instantiate that class multiple times and the values for properties on each of those instances may be different but the class itself is the same type of object. I’m a newbie so I know I am missing something here.

Instantiate returns a reference to the instantiated object, just store it in a variable and change it’s values

for example:

var MyInstance = Instantiate (MyPrefab, Vector3.zero, Quaternion.identity);
MyInstance.transform.localScale = Vector3(Random.Range(1,1.1),Random.Range(1,1.1),Random.Range(1,1.1));

if you want to access your custom scripts you can get them with GetComponent:

var MyInstance = Instantiate (MyPrefab, Vector3.zero, Quaternion.identity);
var MyScript = MyInstance.GetComponent(MyScriptName);
MyScript.MyValue = 1;