Sign up ×
Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

I have a batch file that I'd like to run on startup of an EC2 Windows AMI. The program I'd like to run from that batch file takes the instance-id of the EC2 machine as a parameter. What is the simplest way to get that Instance ID passed as an argument to that program?

From Amazon's Documentation on the subject, I see that you're supposed to issue a WGET to a specified URL and parse the response. So an alternate way of phrasing this question might be "How do I pass the contents of a HTTP request to a program as an argument in a Windows batch file"

In pseudocode, this is what I'd like to do:

set ID = GET
myprogram.exe /instanceID=%ID%

Any suggestions on how I might proceed?

share|improve this question

5 Answers 5

Alternative: maybe you could do this using PowerShell on Amazon's EC2. Here are some links to start:

share|improve this answer
Alternatives are always good. Thanks for that! – Jason Kester Jun 2 '09 at 13:54

PowerShell 3.0 and Invoke-WebRequest:

PS> $instanceId = Invoke-WebRequest -Uri

Or if you need to survive in batch, us a win32 binary of curl.

Or based on your use-case, you could use CloudFormation to get the Instance-Id during the API call and pass it to cf-init for a bootstrap action for your application deployment.

share|improve this answer
This returns a webresponse - in order to get the actual id - you might want to use: $instanceId = (Invoke-WebRequest -Uri – Jochen van Wylick Feb 23 at 9:53

Powershell would be the easiest way to do this:

$webclient = new-object System.Net.WebClient
$myip = $webclient.DownloadString("")
myprogram.exe /instanceID=$myip

share|improve this answer
$wc = New-Object System.Net.WebClient;
$instanceIdResult = $wc.DownloadString("")
Write-Host $instanceIdResult
share|improve this answer
How is this any different from the other answer using a WebClient and DownloadString?? – Chris S Apr 30 '13 at 5:28

wget doesn't have an option to output the contents of the downloaded file to screen (or at least the version I have here doesn't), so you have to use a temporary file anyway. What you can do then is the following:

wget -O "instance-id" ""
set /p ID=< instance-id

set /p usually prompts for something and we just redirect the file's contents here. This assumes that the instance ID is the only thing that's in that file. You can have a little more fun with parsing text when using for /f but for a simple "put the first line of that file into a variable" set /p suffices.

share|improve this answer
Does wget -O - http://... not output the file to standard out? – David North Dec 19 '09 at 10:00
Ah, drat. Wasn't written into wget --help but it works, yes. Sorry. – Joey Jan 5 '10 at 19:00

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.