检查DSQuery在PowerShell中是否成功?

时间:2017-08-22 00:38:38

标签: powershell batch-file active-directory windows-scripting

我正在尝试将批处理脚本转换为PowerShell。我遇到过这段代码,有人能告诉我如何将其转换为PowerShell吗?

dsquery ou -domain "$SysDomain" -name "$FuncOU,$DestOU" || (echo OU was not found & Goto :eof)

我想做的事情如下:

$dsq = dsquery ou -domain "$SysDomain" -name "$FuncOU,$DestOU"
if ($dsq.HasSucceeded -eq $true) {
    echo "OU was not found"
    exit
}

1 个答案:

答案 0 :(得分:1)

dsquery没有返回退出代码,所以我怀疑你的批处理命令是否有效。此外,该命令生成字符串输出,而不是进程或作业对象,因此无需检查HasSucceeded属性。

您可以做的是检查变量$dsq中收集的命令的输出。如果变量为空,则命令未找到OU。 PowerShell automatically interprets $null values as $false,所以这样的事情应该有效:

$dsq = & dsquery ou ...
if (-not $dsq) {
    echo 'OU was not found.'
    exit 1
}

旁注:我建议使用调用运算符(&)来运行外部命令,并在使用exit语句时返回实际的退出代码。