我正在完成从实例创建AMI的过程,因为我需要在关闭机器之前运行sysprep,然后从中创建AMI。
麻烦就是我使用PowerShell做的事情,它不会执行sysprep。
这就是我的invoke-comment现在的样子
$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
知道这里有什么问题吗?
答案 0 :(得分:1)
嗯,那个输出表明它正在运行该命令。 -Passthru
Start-Process
参数将Process
对象传递给管道,它不会等待进程终止。
我想问题是您希望命令在进程完成时等待,以便您可以执行下一个作业,即重新启动计算机并对其进行映像。如果您想等待该过程完成,您可能会发现只使用invoke-expression
或&
运算符来运行Ec2Config.exe
命令更容易。