1. Non-Whitelisted Processes: Let’s say for example you have a non-whitelisted app that needs to spawn powershell for some reason. Since it is not whitelisted, it will never get the chance to spawn powershell until it is whitelisted. So the way I see it, we can basically ignore this, and just assume that there is no reason to block powershell that is spawned from a non-whitelisted app, since it will never happen.
2. Whitelisted Processes: Let’s say for example you have a whitelisted app that needs to spawn powershell for some reason. I personally think that a whitelisted app should not be restricted in anyway, because bad things can happen. Yeah, I know, VS has a local sandbox feature, but that is beside the point. To me, if a whitelisted process needs to spawn powershell, it should be able to do so whenever it needs to, and should never be restricted in doing so.
3. Processes spawned by web apps: This is where it gets interesting. A lot of exploits run shellcode that spawn powershell as a child process of a web app… this is extremely common. The problem is… many security products auto allow everything in the windows folder, and as a result have to “patch” this issue by adding a vulnerable process feature. The new method that VS uses fixes this in an even more secure and user-friendly way because it blocks ALL child processes of web apps in the Windows folder (except for 2-3 files that are necessary and happen to be difficult to exploit). So 3 months from now, when all of the malware authors start exploiting a new windows process, it does not have to be added to the vulnerable process list… it is simply going to be blocked because it is a child process of a web app (that is in the windows folder). As I mentioned… there are a few others that are outside of the windows folder, like java, flash, Silverlight, etc, but those are easy to hardwire in.