Shadow Posted March 16, 2011 Posted March 16, 2011 I recently got an offer for a part-time job which would require me to learn PowerShell. Now, after searching the net a bit I gathered that for PowerShell to make sense, one must first be familiar with Windows Server (which is another thing I'm required to learn). Also, the word virtualization came up a number of times. The thing is, my knowledge in this area is limited to a very rough conceptual image of what ae server is and that's it; I can scarcely even host a CS LAN game. I'm eager to learn and I'm not limited by time, but I have absolutely no idea where to start. I tried searching for stuff like "Windows Server 2008 tutorial" but that just spews out a bunch of resources that build upon previous knowledge. I'm searching for something aimed at a complete layman, who has no experience with servers, networking or any of that stuff whatsoever, something that will allow me to build a knowledge base which will allow me to understand what Windows Server 2008 is, how it works and finally allow me to learn PowerShell, if possible for free. Any ideas?
Xittenn Posted March 16, 2011 Posted March 16, 2011 Now, after searching the net a bit I gathered that for PowerShell to make sense, one must first be familiar with Windows Server The thing is, my knowledge in this area is limited to a very rough conceptual image of what ae server is and that's it; I can scarcely even host a CS LAN game. I am of the opinion that these are misguided observations of what PowerShell and Servers truly are. To begin with PowerShell is a scripting language that operates on COM and .NET objects and is not a technology defined in its entirety for use across a network. Also a 'Server' is not always by definition a 'Networked Technology.' I think the first thing you would be required to understand is what PowerShell is acting upon and this is COM and .NET Objects. Now although COM chimes well with .com they are in no means the same thing and this follows into .NET. COM and .NET are frameworks and specifications that allow for different languages to develop 'Objects' that can intercommunicate as well as they provide a structure under which the internals of such objects can be formed in a generalized yet common manner. .NET extends this further in that it also provides, as part of its framework, sets of libraries that accomplish many tasks such as GUI Development, 2D/3D Animation and Mail etc. A 'Server' as defined by these two technologies is any 'Object' that is 'Modular' and that fulfills services for a 'Client.' Many services are provided by the Windows Operating System but a server can be any module that accomplishes some task at the request of another module and are often integral pieces of technology packaged with installed software applications. One thing both libraries accomplish is the task of remoting and this is where networks, internet and so on come into play. A 'Server' that acts as a liaison or that provides remoted procedures or access to remoted resources accomplishes its task, under the Windows OS and more often than not, through the use of the COM and .NET technologies. This means that to accomplish its tasks a server will implement a standardized infrastructure to allow clients a common method of remoting communication. There are a number of means by which remoting takes place and this includes but is not exclusive to RPC and Pipes and so on. Remoting is a process that is more generalized as Inter Process Communication(IPC) and is something that the two technologies also accomplish on the same computer as processes are not capable of communicating directly. PowerShell is a scripting language that operates on top of the COM and .NET technologies and allows programmers and administrators an easy solution to instancing and manipulating objects and servers whether it be on the same computer or across a network and whether it be on Windows 7 or Windows Server 2008 R2. This allows for a broad range of solutions to a broad range of problems that these two professionals face in their duties. PowerShell can increase productivity by easing the programming required to accomplish debugging tasks and can also be used as a means of scripting a set of events that must transpire with very broad applications. For Administrators PowerShell can also aid in the debugging of systems as well as gives the Administrator ease of functionality in scripting system wide events and also as well as a broad number of other applications. There is a fair bit to say about all of this and I hope I accurately stated everything that I have. There is a lot to learn. Knowing the precise nature of the job it is you will be developing the experience in would be very helpful. Research within the areas that you require the immediate knowledge in will most definitely depend on the tasks you will be expected to accomplish and I don't believe it is sufficient enough to say I will be working with networked servers.
Shadow Posted March 16, 2011 Author Posted March 16, 2011 (edited) Okay, that was quite a bit to take in. To be frank I think I'm even more confused than I was before, but that's to be expected. To quote the guy I talked to, I'd be "developing and implementing Cloud solutions". But I don't even know what that means and while that's just a quick Google search away, that's not what I'm after at the moment. I've long since been interested in learning more about this field since it has remained impenetrable for me for ages. But I've never had any motivation or reasons to delve any deeper, which is what changed in the past few days. But like I said, I don't know what half the stuff you mentioned means. I don't even know the name of the field I mention a couple of sentences earlier. The problem is that I have a very few terms floating in my mind right now with absolutely no connections to each other. To give a real life example, I know that pans are for cooking, the stuff that will be cooked is called food, the purpose of food is to be eaten, the process of cooking is achieved by raising the temperature of the food which is in turn achieved by use of the stove of which we have multiple types and all this takes place in the kitchen. I have no such framework in what I'm/we're talking about. I don't know the names, I don't know the relationships and I don't know what happens in the processes. And that's what I'm after; how to learn this stuff is step two, step one is what am I trying to learn? But thanks for your response, I wasn't sure if there would be anyone here who'd be able to answer my question. Edited March 16, 2011 by Shadow
Xittenn Posted March 16, 2011 Posted March 16, 2011 (edited) .exe : This is an executable file for an application that you install on your computer. This contains some or all of the code necessary to have a running application like a game. .dll : The Dynamic Link Library is a module defined under Windows(there is a different equivalent to this under Linux.) DLLs are similar in nature to executables in that they encapsulate the code necessary to accomplish tasks. DLLs are where 'Server' code is defined where when we speak of servers we are speaking of a module that defines a means of accomplishing a task. An example of this could be a rendering pipeline for 3D graphics. A software application could call a DLL that encapsulates rendering code and create an instance of a rendering object. Assembly : Assemblies are .NETs means of defining modules(DLLs) COM : Component Object Model is a framework. .NET : Is a framework developed for high level languages(managed) specifically. ABI : An Abstract Binary Interface is the code that exposes the internal code of a DLL(or other) to the external world. COM Interface : COM uses COM Interfaces to expose the code that is internal to a DLL to the external world; and by external we mean anything that is not the specified module. An interface defines a set of methods, these methods allow communication between client and server and are representative of sets of actions. example: Interface IRender3D { LoadBuffer( VertexPoints in ); Render(); } .NET Interface : The .NET framework defines an equivalent type of interface to that of COM Registry : The registry is where information about modules, servers and so on exists on any given computer and this allows the COM framework to do things like load a module transparently(without the exact location) based on IDs. GAC : Global Assembly Cache is .NETs registry and is how .NET organizes interconnectivity on your computer Class Object : Class Objects are factories that when a given module is in its running state the Class Object will instance objects like a renderer and passes the object to a client. Objects : Objects are created by the Class Object of a COM Object. The way that an object is passed in COM is by passing a COM or .NET Interface. So taking the before mentioned example the interface IRender3D will be passed to the client and the client can then load a buffer with a set of vertices and subsequently render an image. Process : Executables when running are run on a process thread on your computer. Every running application runs in its own process. Modules(DLLs) are loaded into the process via COM based commands. IPC: Inter Process Communication is the means by which communication takes place between processes. This extends to across networks. Many types of data cannot be transmitted between the boundaries that are created on a computer and so these types of data need to be transformed into data that is transmittable. Marshaling : The act of transforming data from a non-transmittable type to a more transmittable type for the purpose of transmission across boundaries. Other terms you should know for the area you will be working in: Database, MySQL, ActiveX, OLE, Structured Storage, Property Pages, ASP.NET, Cloud, Silverlight .... I will probably edit in a few more after :/ This is a lot to learn period Edited March 16, 2011 by Xittenn
Shadow Posted March 17, 2011 Author Posted March 17, 2011 I think I gathered that from your first post as well as from searching the internet, but it doesn't answer my question; where do I start? I'm pretty much fluent in C/C++, so I'm familiar with the concept of programming.
Xittenn Posted March 17, 2011 Posted March 17, 2011 My apologies I guess I took the following the wrong way! The problem is that I have a very few terms floating in my mind right now with absolutely no connections to each other. Well for starters C#, PowerShell is more so geared towards .NET, but the knowledge of COM is essential(wouldn't dwell). You are going to want to look at the Windows Services to start and learning what takes care of what. Then crunch on the .NET Framework: Runtime Component Model IO Networking Security You will most definitely need to be familiar with XML, SOAP, AJAX etc.. Then hit the cloud I'm sure you will absorb it all like a sponge once you get going. I can't really say much beyond this unless you state specifics. I have spent most of my time in COM and I think most of the guys here are more in tune with Linux systems so it might be a bit difficult to get opinions or guidance. Enjoy!
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now