This post is a brief response to some of the comments I received on my last post: Copying Files to Every User’s Profile.
One comment and suggestion that came up was to just use Active Setup. Active Setup has two significant drawbacks though:
- The currently logged in user has to log out and back in.
- Active Setup is unsupported for direct use. References: Get Rid of Active Setup and more authoritatively Windows 10 in-place upgrade and Active Setup.
The quote from Aaron Margosis in Windows 10 in-place upgrade and Active Setup, which is a comment to a post linked to in that post, is the clincher for me. I also have an informal response from Michael Niehaus in a thread from a myITForum distribution list that confirms that Active Setup is unsupported. As Michael Niehaus noted in one of his TechEd sessions, doing unsupported things gives you unsupported results.
Finally, from memory and based on when there actually was some official documentation on Active Setup, it was created and included in Windows for updating user’s profiles for Internet Explorer. Internet Explorer, ’nuff said. Boom goes the dynamite.
Another comment I received was that I should have written the script in PowerShell and that using something “old”, like a batch script is more or less wrong. I love PowerShell in general and think it’s a great tool, but it’s just that: a tool. It’s not the only tool and isn’t the best tool for everything either. Just because you’ve got a great hammer, doesn’t mean that everything is or should be a nail or that your “old” sledgehammer might not work better for a specific task.
A tool is the right tool for a job if it meets your requirements, is supported for the job you are using it for, and it does indeed do the job correctly. Doing the job efficiently is important as well, but not necessarily required or critical. The age of the tool or an arbitrary standard of a tool being new or cool is irrelevant. Advocating a tool based solely on an arbitrary standard or personal preference is just zealotry and may as well be a best practice; i.e., useless in the real world and even harmful or counter-productive. Technical facts should dictate technical choices and not blind or arbitrary guidance or preferences.
As a comparison, I did convert the batch script from my Copying Files to Every User’s Profile post to PowerShell. In this case, there honestly is little difference between the two technically or otherwise.
The PowerShell is arguably more elegant (if you know PowerShell) and could be simplified into a single [long] line by removing the param block and just using unnamed arguments similar to what we have to do with a batch file. Alternatively, it could be made more robust by adding WhatIf support and improved in other subtle ways also.
The case could be made that the batch file is slightly better because it uses the more full-featured xcopy to perform the file copy. Of course, the Powershell script could use xcopy as well if that’s needed. And around and around we go.
Which you use is more of a preference than anything as both are fully supported, both meet the requirements of copying files to user’s profiles, and both work (in my testing and experience at least — there are always scenarios possible that could cause issues though). There are corner cases here as well that may drive you to one or the other, like having PowerShell disabled altogether, but make an informed choice instead of one driven by zeal, zealots, and zealotry.