2014-09-26 80 views
0

我正在从实例创建AMI的过程中工作,因为我需要在关闭计算机之前运行sysprep,然后从中创建AMI。使用powershell远程运行ec2config.exe -sysprep

麻烦是我使用powershell时,它不会执行sysprep。

这是我的调用注释看起来像现在

$securePassword = ConvertTo-SecureString $newAdminPassword -AsPlainText -force 
$credential = new-object -typename System.Management.Automation.PsCredential(".\Administrator",$securePassword) 
Invoke-Command -ComputerName $hostName -ScriptBlock { Start-Process "C:\Program Files\Amazon\Ec2ConfigService\Ec2Config.exe" -ArgumentList '-sysprep' -NoNewWindow -PassThru -Verbose -R} -Credential $credential 

它不运行此命令,只需打印出此输出

Handles NPM(K) PM(K)  WS(K) VM(M) CPU(s)  Id ProcessName     PSComputerName 
------- ------ -----  ----- ----- ------  -- -----------     -------------- 
     7  1  252  108  3  0.00 2556 Ec2Config      10.1.7.254 

任何想法有什么不对吗?

回答

1

那么,该输出表明它正在运行该命令。 参数Start-ProcessProcess对象传递给管道,并且它不会等待进程终止。

我想问题是您希望命令等待进程完成后,您可以执行下一个任务,即重新启动计算机并对其进行映像。如果您想等待过程完成,则可能会发现使用invoke-expression或仅使用&运算符来运行Ec2Config.exe命令会更容易。