【问题标题】:How to test what started a powershell script如何测试启动powershell脚本的原因
【发布时间】:2021-04-29 18:31:35
【问题描述】:

我有一个 PowerShell 脚本,可以通过以下方式启动

  • 在桌面上运行快捷方式,或者
  • 作为来自 Windows 任务计划程序的计划作业。

脚本本身是否有任何方法可以识别如何它是如何启动的?在实践中,每种方法都会在屏幕上产生一个缓慢滚动的命令窗口,一旦它运行,我就无法知道它是如何启动的。该脚本已经记录了一些关于自身的数据(名称、日期、时间和 $PID),但到目前为止我还没有找到如何测试启动方法,即任务调度程序或手动运行。

【问题讨论】:

  • 我只需添加一个类似-scheduled 的开关参数,我会在从任务计划程序启动时传递它。
  • 您可以在脚本中设置一个函数,告诉您谁运行它。关于谁/如何运行它,我会使用事件过滤。
  • 您是否完全启用和配置了 PS 审核?

标签: windows powershell scheduled-tasks


【解决方案1】:

任务计划程序运行的脚本有一个名为svchost的父进程,因此您可以在脚本中使用以下代码来检测:

'svchost' -eq (Get-Process -Id (Get-CimInstance Win32_Process -Filter "ProcessID = $pid").ParentProcessId).Name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2010-12-20
    • 2011-01-02
    • 1970-01-01
    相关资源
    最近更新 更多