最近做一个项目用到powershell的加入域命令,测试时发现ip冲突了,加入域失败,但程序竟然显示成功。原来是代码中有判断命令的返回值,一般命令正确执行返回0,失败返回非0值。但加入域失败了依然返回0,非常的郁闷!

最后google到几篇老外的帖子,找到相关的解决办法。

powershell -ExecutionPolicy Remoteive -Command "& {e:\abc.ps1; exit $LastExitCode }"

使用以上的命令格式,便可以通过echo %errorlevel%看到命令的返回值了。但这个返回值还必须要在脚本中显式地指定,否则还会返回0,如下:

$objReturn = add-computer -DomainName Domain01 -Server Domain01\DC01 -passthru

if($objReturn.HasSucceeded)
{
exit 0
}
else
{
exit 1
}