{"id":4043,"date":"2007-08-16T10:59:00","date_gmt":"2007-08-16T10:59:00","guid":{"rendered":""},"modified":"2007-08-16T10:59:00","modified_gmt":"2007-08-16T10:59:00","slug":"transforming-servermanagercmd-query-xml-to-input-xml","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/","title":{"rendered":"Transforming ServerManagerCmd query xml to input xml"},"content":{"rendered":"

Transforming ServerManagerCmd query xml to input xml<\/span><\/h1>\n
\n\u00a0<\/span>\n<\/div>\n
Hello, my name is Travis Nielsen and I\u2019m a developer on the Server Manager team. Among other things, I have worked on the ServerManagerCmd.exe tool for command line installation. <\/span><\/div>\n
\u00a0<\/span><\/div>\n
One of the most common requests I have heard from customers is that they want to detect what roles and features are installed on one machine and automate installing the same set of roles and features on another server. To make this work, users typically envision that something like the following would work:<\/span><\/div>\n

1.<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>On the original server, query what roles and features are installed and save to xml format:<\/span><\/p>\n

a.<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>ServerManagerCmd.exe \u2013query Master.xml<\/span><\/p>\n

2.<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>On the target server, use the xml file output by the previous query in order to install the same set of roles and features:<\/span><\/p>\n

a.<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>ServerManagerCmd.exe \u2013inputPath Master.xml<\/span><\/p>\n

\u00a0<\/span><\/div>\n
However, this approach will not work since the xml output by the -query option has a different schema than the -inputPath xml. While the differences in the xml look insignificant at first glance, there are enough differences that this will not work.\u00a0 <\/span>Identifying the differences is left as an exercise for the reader.<\/span><\/div>\n
\u00a0<\/span><\/div>\n
Luckily, all hope is not lost. There is a way to convert the xml from the query output into the xml input file used to install or remove the same set of roles and features. <\/b>Below are instructions for using xslt (XML transforms) to convert the xml query output to the proper xml input format.<\/span><\/div>\n
\u00a0<\/span><\/div>\n

1)<\/span>\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Download the conversion tool<\/span><\/span><\/h2>\n
\u00a0<\/span><\/div>\n
Download the command line transformation utility and save to a folder on your computer: msxsl.exe <\/b><\/span><\/span><\/div>\n
http:\/\/www.microsoft.com\/downloads\/details.aspx?familyid=2FB55371-C94E-4373-B0E9-DB4816552E41&displaylang=en<\/span><\/a><\/div>\n

2)<\/span>\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Save the transform files<\/span><\/span><\/h2>\n
\u00a0<\/span><\/div>\n
An xsl transform will take an xml file and transform it into another format. There are three transforms provided that you may find useful: Install.xsl, Remove.xsl, and View.xsl. <\/span><\/div>\n

\u00b7<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Install:<\/b> This transform will create an xml file to use with ServerManagerCmd.exe -inputPath for installing roles and features that were detected on a server. See Appendix A.<\/span><\/span><\/p>\n

\u00b7<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Remove:<\/b> This transform will create an xml file to use with ServerManagerCmd.exe -inputPath for removing roles and features that were not detected on the master server. \u00a0<\/span>See Appendix B.<\/span><\/span><\/p>\n

\u00b7<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>View:<\/b> This transform will create an html file that will display which roles and features are installed on the master server.\u00a0 <\/span>See Appendix C.<\/span><\/span><\/p>\n

\n<\/span><\/span>\u00a0<\/div>\n
These three xsl files can be found at the end of this article in appendix A, B, and C. Using copy and paste with your favorite text editor (ie. Notepad), save these files to your machine. Note that you won\u2019t want to use a fancier word processor that preserves html formatting tags.<\/span><\/div>\n

3)<\/span>\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Query the \u201cMaster\u201d Server<\/span><\/span><\/h2>\n
\u00a0<\/span><\/div>\n
Given that you have the tools needed for the transform, you are ready to proceed. First, you will need to query a server for the roles and features that are installed. The server where this query is run will be referred to as the \u201cmaster\u201d server since it will essentially provide the list of roles and features that will potentially be installed on other servers. From an elevated command prompt on the master server, execute:<\/span><\/div>\n
\u00a0<\/span><\/div>\n
ServerManagerCmd.exe -query Master.xml<\/span><\/span><\/div>\n
\u00a0<\/span><\/div>\n

4)<\/span>\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Generate the Install xml input file<\/span><\/span><\/h2>\n
\u00a0<\/span><\/div>\n
Now that we have the xml from the query of the master server, we will generate the xml that can be used to install all of the roles and features that were detected on the master server as installed. The xml generated will be a list of all the roles and features that should be installed, but will not contain a list of the roles and features that should be uninstalled to match the set exactly on the target server.<\/span><\/div>\n
\u00a0<\/span><\/div>\n
Run the xsl tool to generate the input xml that will install all the roles, role services, and features that are installed according to query.xml<\/span><\/div>\n
\u00a0<\/span><\/div>\n
msxsl.exe Master.xml install.xsl -o install.xml<\/span><\/span><\/div>\n
\u00a0<\/span><\/div>\n
If you view Install.xml in a text or xml editor, you will notice a couple of things:<\/span><\/div>\n

\u00b7<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>There are a lot of blank lines in the file that can be ignored.<\/span><\/p>\n

\u00b7<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>The set of roles and features that are listed in the xml are not exactly what you see installed on your master server. The difference is that roles, role services, and features that contain other role services and features are not listed. At install time, they will automatically be included by Server Manager with the install. It is not possible to install a role service or feature without its parent.<\/span><\/p>\n

5)<\/span>\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Generate the Remove xml input file<\/span><\/span><\/h2>\n
\u00a0<\/span><\/div>\n
Next, we generate the xml that can be applied to remove all the roles and features that were not detected as installed on the master server. This would not be necessary if you are mirroring the roles and features to a machine where there are not any roles or features installed yet. Neither will you need this if you only want to use the previously generated Install xml to add roles and features instead of removing as well.<\/span><\/div>\n
\u00a0<\/span><\/div>\n
Run the xsl tool to generate the input xml that will remove all the roles, role services, and features that are not installed according to Master.xml<\/span><\/div>\n
\u00a0<\/span><\/div>\n
msxsl.exe Master.xml remove.xsl -o remove.xml<\/span><\/span><\/div>\n
\u00a0<\/span><\/div>\n
As with the Install.xml, you may notice that Remove.xml does not contain an exact mapping of what to uninstall. The reason is that if you request to uninstall a root role or feature, all sub role services and subfeatures will also be installed. Therefore, root nodes are not included in the list unless they don\u2019t have any children installed.<\/span><\/div>\n

6)<\/span>\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Use the Install and Remove xml input files<\/span><\/span><\/h2>\n
\u00a0<\/span><\/div>\n
Now you\u2019re ready to perform the installation of desired roles and features on a target server. First, run the following command (from an elevated command prompt) to add the desired roles and features. <\/span><\/div>\n
\u00a0<\/span><\/div>\n
ServerManagerCmd.exe -inputPath Install.xml<\/span><\/span><\/div>\n
\u00a0<\/span><\/span><\/div>\n
If some of the roles or features are already installed on the target server, there is no need to remove them from the install xml. Requesting to install a role or feature that is already installed will not have any effect. An informational message will simply be displayed to indicate that the role or feature did not need to be installed. <\/span><\/div>\n
\u00a0<\/span><\/div>\n
Finally, if you desire to remove roles or features that should not be present according to the master server, run the following command (from an elevated command prompt) to remove the extraneous roles and features. Again, if they are already not detected as installed on the target server, this will have no effect on the server.<\/span><\/div>\n
\u00a0<\/span><\/span><\/div>\n
ServerManagerCmd.exe -inputPath Remove.xml<\/span><\/span><\/div>\n
\u00a0<\/span><\/div>\n
Note that neither of these commands will have any effect of installing or uninstalling when run on the master server where they were generated.<\/span><\/div>\n

7)<\/span>\u00a0\u00a0\u00a0 <\/span><\/span><\/span>Generate the View html file<\/span><\/span><\/h2>\n
\u00a0<\/span><\/div>\n
The last transform will convert the query xml into a friendly html file to view the available roles, role services, and features, with installed roles\/features highlighted in green. <\/span><\/div>\n
\n<\/span><\/span>\u00a0<\/div>\n
msxsl.exe Master.xml View.xsl -o View.html<\/span><\/span><\/div>\n
\u00a0<\/span><\/div>\n
Now open the View.html in your favorite web browser.<\/span><\/div>\n
\u00a0<\/span><\/div>\n

Appendix A: Install.xsl<\/span><\/h2>\n
\u00a0<\/span><\/div>\n
\n<<\/span>xsl:stylesheet<\/span>\n<\/div>\n
\nxmlns:xsl<\/span>=<\/span>http:\/\/www.w3.org\/1999\/XSL\/Transform<\/span>“<\/span>\n<\/div>\n
\nxmlns:sm<\/span>=<\/span>http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“<\/span>\n<\/div>\n
\nversion<\/span>=<\/span>1.0<\/span>“><\/span><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><!–<\/span> Transform to xml that can be used to install all roles, role services, and features that were discovered as installed in the output query. <\/span>–><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:output<\/span> <\/span>indent<\/span>=<\/span>no<\/span>“ \/><\/span><\/span>\n<\/div>\n
\u00a0 <\/span><\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>\/<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>> <\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:ServerManagerConfigurationQuery<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:element<\/span> <\/span>name<\/span>=<\/span>ServerManagerConfiguration<\/span>“ <\/span>namespace<\/span>=<\/span>“http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:attribute<\/span> <\/span>name<\/span>=<\/span>Action<\/span>“><\/span>Install<\/<\/span>xsl:attribute<\/span>><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:element<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:Role<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Id and @Installed=’true’ and count(sm:RoleService) = 0<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:element<\/span> <\/span>name<\/span>=<\/span>Role<\/span>“ <\/span>namespace<\/span>=<\/span>“http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:attribute<\/span> <\/span>name<\/span>=<\/span>Id<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@Id<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:attribute<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:element<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:RoleService<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Id and @Installed=’true’ and count(sm:RoleService) = 0<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:element<\/span> <\/span>name<\/span>=<\/span>RoleService<\/span>“ <\/span>namespace<\/span>=<\/span>“http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:attribute<\/span> <\/span>name<\/span>=<\/span>Id<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@Id<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:attribute<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:element<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:Feature<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Id and @Installed=’true’ and count(sm:Feature) = 0<\/span>“>\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:element<\/span> <\/span>name<\/span>=<\/span>Feature<\/span>“ <\/span>namespace<\/span>=<\/span>“http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:attribute<\/span> <\/span>name<\/span>=<\/span>Id<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@Id<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:attribute<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:element<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n<\/<\/span>xsl:stylesheet<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/span><\/div>\n

Appendix B: Remove.xsl<\/span><\/h2>\n
\u00a0<\/span><\/div>\n
\n<<\/span>xsl:stylesheet<\/span>\n<\/div>\n
\nxmlns:xsl<\/span>=<\/span>http:\/\/www.w3.org\/1999\/XSL\/Transform<\/span>“<\/span>\n<\/div>\n
\nxmlns:sm<\/span>=<\/span>http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“<\/span>\n<\/div>\n
\nversion<\/span>=<\/span>1.0<\/span>“><\/span><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><!–<\/span> Transform to xml that can be used to uninstall all roles, role services, and features that were not discovered as installed in the output query. <\/span>–><\/span>\n<\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>\/<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>> <\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:ServerManagerConfigurationQuery<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:element<\/span> <\/span>name<\/span>=<\/span>ServerManagerConfiguration<\/span>“ <\/span>namespace<\/span>=<\/span>“http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:attribute<\/span> <\/span>name<\/span>=<\/span>Action<\/span>“><\/span>Remove<\/<\/span>xsl:attribute<\/span>><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:element<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:Role<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Id and @Installed=’false’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:element<\/span> <\/span>name<\/span>=<\/span>Role<\/span>“ <\/span>namespace<\/span>=<\/span>“http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:attribute<\/span> <\/span>name<\/span>=<\/span>Id<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@Id<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:attribute<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:element<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>not(@Id) or @Installed=’true’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:RoleService<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Id and @Installed=’false’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:element<\/span> <\/span>name<\/span>=<\/span>RoleService<\/span>“ <\/span>namespace<\/span>=<\/span>“http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:attribute<\/span> <\/span>name<\/span>=<\/span>Id<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@Id<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:attribute<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:element<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>not(@Id) or @Installed=’true’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:Feature<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Id and @Installed=’false’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:element<\/span> <\/span>name<\/span>=<\/span>Feature<\/span>“ <\/span>namespace<\/span>=<\/span>“http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:attribute<\/span> <\/span>name<\/span>=<\/span>Id<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@Id<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:attribute<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:element<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>not(@Id) or @Installed=’true’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n<\/<\/span>xsl:stylesheet<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/span><\/div>\n

Appendix C: View.xsl<\/span><\/h2>\n
\u00a0<\/span><\/span><\/div>\n
\n<<\/span>xsl:stylesheet<\/span>\n<\/div>\n
\nxmlns:xsl<\/span>=<\/span>http:\/\/www.w3.org\/1999\/XSL\/Transform<\/span>“<\/span>\n<\/div>\n
\nxmlns:sm<\/span>=<\/span>http:\/\/schemas.microsoft.com\/sdm\/Windows\/ServerManager\/Configuration\/2007\/1<\/span>“<\/span>\n<\/div>\n
\nxmlns:html<\/span>=<\/span>html<\/span>“ <\/span><\/span>\n<\/div>\n
\nversion<\/span>=<\/span>1.0<\/span>“><\/span><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><!–<\/span> Display the roles, role services, and features that are available for install.<\/span>\n<\/div>\n
\n\u00a0 <\/span>Default role services and subfeatures will be in bold. <\/span>–><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:output<\/span> <\/span>method<\/span>=<\/span>html<\/span>“\/><\/span><\/span>\n<\/div>\n
\u00a0 <\/span><\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>\/<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>> <\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:ServerManagerConfigurationQuery<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>html:html<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>body<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>h2<\/span>><\/span>Server Roles and Features<\/<\/span>h2<\/span>><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>body<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>html:html<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:Role<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Installed=’true’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>B<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>Font<\/span> <\/span>color<\/span>=<\/span>#00AA00<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@DisplayName<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>Font<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>B<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Installed=’false’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@DisplayName<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>UL<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>UL<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:RoleService<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Installed=’true’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>B<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>Font<\/span> <\/span>color<\/span>=<\/span>#00AA00<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@DisplayName<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>Font<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>B<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Installed=’false’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@DisplayName<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>BR<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>UL<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>UL<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n\u00a0 <\/span><<\/span>xsl:template<\/span> <\/span>match<\/span>=<\/span>sm:Feature<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Installed=’true’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>B<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>Font<\/span> <\/span>color<\/span>=<\/span>#00AA00<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@DisplayName<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>Font<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/<\/span>B<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:if<\/span> <\/span>test<\/span>=<\/span>@Installed=’false’<\/span>“><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:value-of<\/span> <\/span>select<\/span>=<\/span>@DisplayName<\/span>“\/><\/span><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>xsl:if<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>BR<\/span>\/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><<\/span>UL<\/span>><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><<\/span>xsl:apply-templates<\/span> \/><\/span>\n<\/div>\n
\n\u00a0\u00a0\u00a0 <\/span><\/<\/span>UL<\/span>><\/span>\n<\/div>\n
\n\u00a0 <\/span><\/<\/span>xsl:template<\/span>><\/span>\n<\/div>\n
\u00a0<\/span><\/div>\n
\n<\/<\/span>xsl:stylesheet<\/span>><\/span>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

Transforming ServerManagerCmd query xml to input xml \u00a0 Hello, my name is Travis Nielsen and I\u2019m a developer on the Server Manager team. Among other things, I have worked on the ServerManagerCmd.exe tool for command line installation.<\/p>\n","protected":false},"author":685,"featured_media":20642,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[8,23],"product":[],"content-type":[],"solution":[],"coauthors":[],"class_list":["post-4043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-longhorn","tag-windows-server"],"yoast_head":"\nTransforming ServerManagerCmd query xml to input xml | Microsoft Windows Server Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Transforming ServerManagerCmd query xml to input xml | Microsoft Windows Server Blog\" \/>\n<meta property=\"og:description\" content=\"Transforming ServerManagerCmd query xml to input xml \u00a0 Hello, my name is Travis Nielsen and I\u2019m a developer on the Server Manager team. Among other things, I have worked on the ServerManagerCmd.exe tool for command line installation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Windows Server Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/WindowsServer\" \/>\n<meta property=\"article:published_time\" content=\"2007-08-16T10:59:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1170\" \/>\n\t<meta property=\"og:image:height\" content=\"640\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Microsoft Windows Server Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@WindowsServer\" \/>\n<meta name=\"twitter:site\" content=\"@WindowsServer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Windows Server Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/author\/microsoft-windows-server-team\/\",\"@type\":\"Person\",\"@name\":\"Microsoft Windows Server Team\"}],\"headline\":\"Transforming ServerManagerCmd query xml to input xml\",\"datePublished\":\"2007-08-16T10:59:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/\"},\"wordCount\":2204,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg\",\"keywords\":[\"Longhorn\",\"Windows Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/\",\"name\":\"Transforming ServerManagerCmd query xml to input xml | Microsoft Windows Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg\",\"datePublished\":\"2007-08-16T10:59:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg\",\"width\":1170,\"height\":640,\"caption\":\"a group of people looking at a laptop\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Transforming ServerManagerCmd query xml to input xml\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/\",\"name\":\"Microsoft Windows Server Blog\",\"description\":\"Your Guide to the Latest Windows Server Product Information\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization\",\"name\":\"Microsoft Windows Server Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":1,\"height\":1,\"caption\":\"Microsoft Windows Server Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/WindowsServer\",\"https:\/\/x.com\/WindowsServer\",\"https:\/\/www.linkedin.com\/showcase\/microsoft-cloud-platform\/\",\"https:\/\/www.youtube.com\/user\/MSCloudOS\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Transforming ServerManagerCmd query xml to input xml | Microsoft Windows Server Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/","og_locale":"en_US","og_type":"article","og_title":"Transforming ServerManagerCmd query xml to input xml | Microsoft Windows Server Blog","og_description":"Transforming ServerManagerCmd query xml to input xml \u00a0 Hello, my name is Travis Nielsen and I\u2019m a developer on the Server Manager team. Among other things, I have worked on the ServerManagerCmd.exe tool for command line installation.","og_url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/","og_site_name":"Microsoft Windows Server Blog","article_publisher":"https:\/\/www.facebook.com\/WindowsServer","article_published_time":"2007-08-16T10:59:00+00:00","og_image":[{"width":1170,"height":640,"url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg","type":"image\/jpeg"}],"author":"Microsoft Windows Server Team","twitter_card":"summary_large_image","twitter_creator":"@WindowsServer","twitter_site":"@WindowsServer","twitter_misc":{"Written by":"Microsoft Windows Server Team","Est. reading time":"9 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/author\/microsoft-windows-server-team\/","@type":"Person","@name":"Microsoft Windows Server Team"}],"headline":"Transforming ServerManagerCmd query xml to input xml","datePublished":"2007-08-16T10:59:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/"},"wordCount":2204,"commentCount":1,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg","keywords":["Longhorn","Windows Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/","name":"Transforming ServerManagerCmd query xml to input xml | Microsoft Windows Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg","datePublished":"2007-08-16T10:59:00+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg","contentUrl":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2024\/03\/Developer-whiteboard-worksession.jpg","width":1170,"height":640,"caption":"a group of people looking at a laptop"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/2007\/08\/16\/transforming-servermanagercmd-query-xml-to-input-xml\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/"},{"@type":"ListItem","position":2,"name":"Transforming ServerManagerCmd query xml to input xml"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/","name":"Microsoft Windows Server Blog","description":"Your Guide to the Latest Windows Server Product Information","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#organization","name":"Microsoft Windows Server Blog","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":1,"height":1,"caption":"Microsoft Windows Server Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/WindowsServer","https:\/\/x.com\/WindowsServer","https:\/\/www.linkedin.com\/showcase\/microsoft-cloud-platform\/","https:\/\/www.youtube.com\/user\/MSCloudOS"]}]}},"word_count":1211,"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Windows Server Blog","distributor_original_site_url":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/posts\/4043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/users\/685"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/comments?post=4043"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/posts\/4043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/media\/20642"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/media?parent=4043"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/post_tag?post=4043"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/product?post=4043"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/content-type?post=4043"},{"taxonomy":"solution","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/solution?post=4043"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/windows-server\/blog\/wp-json\/wp\/v2\/coauthors?post=4043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}