# Run PowerShell-Script from Server in unattend.xml

Currently we are Deploying our Windows 10 Machines with Windows Deployment Services(WDS) with a unattend.xml file for basic settings. From time to time there are machines which won't activate windows automatically(we are using OEM licences). This seems to happen only with new machines on which Windows wasn't activated before.

To "bypass" this issue, I've created a small powershell-script which gets the windows-key from bios/uefi and activates the windows copy with this key. The Script is working well and I would like to add it to the unattend.xml to run it automatically after setup. I would like to store the script on our fileserver(to avoid changing the image each time when I changed the script) and run it from there. Where do I have to configure this in the unattend.xml file ? Is this even possible ?

I found a topic on serverfault(How can I run a PowerShell script during the specialize pass of a WDS deploy?) where they talk about this. In the comments section they talk about adding it to the OOBE and autologon section. Since I'm a bit confused(and the topic is really old), I would like to ask: - Do I have to configure an autologon with the right credentials and run the script under this autologon user ? And if so: how is this done in the unattend.xml File ?

## 1 Answer

To execute Powershell scripts automatically via unattend.xml you are going to want to configure the run synchronous command entry(s) for your script.

Open Windows SIM to the unattend file that you would like to mod. open the components tab and expand the *Microsoft-Windows-Deployment* entry.

After you have added the item to the unattend.xml, You can configure the command that is run in the box that says path.

For powershell scripts on a server you might use a command like:

powershell -File "\\remote-computer\some\dir\script.ps1".

For powershell scripts on a local computer, the syntax is like this:

powershell -File "C:\path\to\dir\script.ps1".

If you want to execute a standalone powershell cmdlet you can use this command style:

powershell verb-noun -argument(s).

Optional:

Enter the credentials that you need to execute the command.

Links:

Tl;Dr:

Use Windows SIM to add synchronous or asynchronous commands to your unattend.xml.

• Thank you, great answer, it is working like expected. +1 for the comprehensive answer. Have a nice weekend :) – SaintCore Nov 11 '16 at 15:51
• I am glad that it helped you. I hope you have a nice weekend too! – Elliot Labs Nov 11 '16 at 21:58