如何从 Windows Defender 中排除计划任务?

Hex*_*Hex 5 powershell windows-defender windows-task-scheduler windows-10

我已经安排了每两个小时运行一次的任务,并使用以下命令行操作:

  • 程序:mshta
  • 论据:vbscript:Execute("CreateObject(""Wscript.Shell"").Run ""powershell -NoLogo -Command """"& 'X:\Path\To\Custom\powershellScript.ps1'"""""", 0 : window.close")

每两个小时,我得到的不是任务运行,而是:

发现一些恶意软件 Windows Defender 正在将其删除

在后卫历史上:

检测到的项目 Trojan:Win32/Powerssere.G

我不想停止 Windows Defender,因为这样做可能会带来安全隐患。有没有办法在 Defender 中添加排除以忽略该任务?

我尝试添加脚本路径、文件夹mshta.exepowershell.exe排除项以及ps1文件类型。什么都不起作用。

顺便说一句,Defender 不会删除任务或应该运行的脚本,只是阻止其运行。

澄清

  • 它必须在后台运行,任务运行时不应弹出任何窗口,如果用户已登录,则必须与用户一起运行,我不想存储密码/使用其他用户帐户或最高权限运行。

  • 该脚本必须以登录用户的身份执行。其目的是将登录用户的壁纸更改为下载的壁纸($picturePath变量)。摘抄:


    $registryPropertyPath = "HKCU:\Control Panel\Desktop\"
    $registryPropertyName = "Wallpaper"
    $wallpaperProperty = (Get-ItemProperty -Path $registryPropertyPath -Name $registryPropertyName).WallPaper
    if ($wallpaperProperty -ne $picturePath) {
        Set-ItemProperty -Path $registryPropertyPath -Name $registryPropertyName -Value $picturePath
        for ($i = 0; $i -lt 20; $i++) {
            RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True
        }
    }
Run Code Online (Sandbox Code Playgroud)

pos*_*ote 1

至于这个……

我的脚本调用 RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters 1, True 来更新壁纸,必须在用户登录时执行,否则将无法工作

您正在尝试使用远程用户上下文在本地用户上下文中运行。这是 Windows 安全边界,一直以来都是如此。所以,这不是 PowerShell 问题。

由于违反了 Windows 安全边界,PowerShell 本身不允许这样做。

此外,还有其他方法可以做到这一点,而不是您正在尝试的方法。

如果您确实需要这样做,首先,在企业中,这就是 GPO 的用途。有些软管无论出于何种原因都不能使用 GPO。因此,他们尝试了这种方法,但它不起作用,因为它的设计初衷并非如此。

因此,如果您需要使用远程本地用户上下文,那么您需要使用 3rdP 选项,例如此处讨论的 SysInternals PSExec...

如何在 Windows 中为远程登录用户运行程序

您可以使用 PsExec 来完成此操作,请确保具有为他运行应用程序的正确权限。psexec \计算机 -u 用户 -i -d 命令

-u 表示用户,-i 使其交互,以便用户看到它,-d 确保命令不会等待

'superuser.com/questions/176249/how-to-run-a-program-for-remotely-logged-in-user-in-windows'

...或 AutoIT。

您还可以创建一个本机 .ps1 脚本,执行类似的操作...

cp "image.jpg" \\<IP>\C$
$RemoteReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('Users', "<IP>")
$WallPaper= $RemoteReg.OpenSubKey("S-1-5-21-780093305-1579027723-3042286928-500\Control Panel\Desktop",$True)
$WallPaper.SetValue("Wallpaper","C:\image.jpg")
Run Code Online (Sandbox Code Playgroud)

...并将其设置为用户的 RunOnce 选项(注册表)。

您可以创建一次计划任务,以便在用户登录时或一天中的其他时间运行一次。

因此,退后一步,考虑一下其他选择,而不是阻碍这项努力,因为这项努力实际上并不是为了让你到达你想要去的地方。