GPO:加载 explorer.exe 后运行 PowerShell 登录脚本

GPO:加载 explorer.exe 后运行 PowerShell 登录脚本

我知道邮政总局设置“计算机配置 => 管理模板 => 系统 => 脚本 => 同步运行登录脚本”。但是,这可确保登录脚本在 Windows 资源管理器开始加载之前运行(启用时)。

我需要相反的东西。我想确保 explorer.exe 已成功加载,然后执行 PowerShell 登录脚本。这是因为我需要触发的应用程序的一些奇怪的依赖关系。

我尝试禁用该设置,根据描述,该设置应允许同时运行文件资源管理器和脚本。不幸的是,它没有(是的,我确实重新启动并进行了 gpupdates...)

因此,我尝试在 PowerShell 登录脚本中添加一个名为 wait-for-explorer() 的函数。它会循环休眠,while直到 explorer.exe 运行。但是,这似乎无法正常工作。

解决这个问题的最佳和最干净的方法是什么?我是否忽略了 GPO 设置?

代码如下:

Function Wait-For-Explorer
{   
    $process = 'explorer.exe'
    $waitTime = 1

    While ($owner.User -ne $env:USERNAME) 
    {   
        try 
        {     
            $owner = (Get-WmiObject -class win32_process | where { $_.ProcessName -eq $process }).GetOwner() | Select -Property User
        }
        catch
        {
            Write-Host "Zzzzz...."
            Start-Sleep -Seconds $waitTime
        }
    }

    Write-Host "Process ${process} is running..."
}

更新

我找到了问题的答案,以及为什么 Microsoft 没有提供这样的选项。原因是根据 Technet 文章核心组策略的工作原理,组策略的处理是同步的,这意味着计算机组策略在登录对话框出现之前完成,而用户组策略在 shell 处于活动状态并可供用户与其交互之前完成。这反过来意味着组策略引擎在用户 shell 加载后没有(直接)启动进程的可能性……

答案1

我刚刚偶然发现了以下设置:

用户配置 => 策略 => 管理模板 => 系统 => 登录 => 在用户登录时运行这些程序

从这里调用我的脚本时,一切都正常。这(似乎)与 AD 用户对象中的“登录脚本”的行为方式相同。它等待文件资源管理器完成加载,然后执行脚本……所以任务完成了!感谢所有人!

答案2

您是否尝试过将其作为计划任务运行,并以“用户登录”作为触发器?这可能会消除对此类功能的需求。

SCHTASKS /Create [/S system [/U username [/P [password]]]]
    [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day]
    [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime]
    [/RI interval] [ {/ET endtime | /DU duration} [/K] [/XML xmlfile] [/V1]]
    [/SD startdate] [/ED enddate] [/IT | /NP] [/Z] [/F]

Description:
    Enables an administrator to create scheduled tasks on a local or
    remote system.

Parameter List:
<...many switches delted...>
/SC   schedule     Specifies the schedule frequency.
                   Valid schedule types: MINUTE, HOURLY, DAILY, WEEKLY,
                   MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT.

在此处输入图片描述

答案3

如果你看看 MDT(http://technet.microsoft.com/en-us/windows/dn475741.aspx) 执行此操作时,它会将快捷方式放置在用户的“启动”文件夹中。这样,您几乎可以保证脚本不会运行,直到用户登录并显示桌面。如果您在 MDT 脚本文件夹中挖掘一下,您会找到用于创建这些快捷方式的现成脚本。

相关内容