计划任务触发器何时GPO无法在启动时运行(无DC)?


1

我正在通过GPO推送启动脚本。该脚本更新本地脚本(如果发生更改或删除),然后自行运行。

我希望只有当机器脱机且无法接收更新的脚本时才能在启动时运行本地脚本。是否有一个事件日志项,用于触发无法到达的DC-to-apply-GPO-on-boot?我不希望每次DC不可用时运行脚本(例如临时网络中断),仅在DC不可用时才启动。

有一个更好的方法吗?

Answers:


0

一种相当简单的方法是始终在启动时运行PowerShell脚本,然后检查域是否可用:

Try {
    [System.DirectoryServices.ActiveDirectory.Domain]::GetComputerDomain() | Out-Null
} Catch {
    # Code here
}

如果没有可以联系域控制器,那么 GetComputerDomain 函数抛出异常,执行落入catch块。如果域可用,则函数成功并且脚本结束。

当然,PowerShell脚本中的代码需要是PowerShell,但您可以通过将脚本转储到临时文件,运行批处理器,然后删除该文件来运行经典批处理:

Try {
    [System.DirectoryServices.ActiveDirectory.Domain]::GetComputerDomain() | Out-Null
} Catch {
    $tmpBat = [System.IO.Path]::GetTempFileName() + '.bat'
    @"
rem                              PUT YOUR BATCH CODE HERE
"@ | Out-File $tmpBat -Encoding ASCII
    cmd /c $tmpBat
    Remove-Item $tmpBat
}

批量代码之前缺少空格是有意的;多行字符串文字(由...描述的内容)是必要的 @""@ ),这使您无需处理PowerShell转义。


不完全是我想要的,但我认为它会做我需要的。该脚本是powershell。从GPO运行,它在本地复制它的当前版本并更新启动任务。使用您的建议,如果域可用并且它正在从DC运行,则它执行X.如果域不可用,它也会执行X.这应该使它每次启动时只执行一次X.
Teknowledgist
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.