首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测Windows启动事件是否运行了调用powershell脚本的批处理文件

问如何检测Windows启动事件是否运行了调用powershell脚本的批处理文件
EN

Stack Overflow用户
提问于 2020-03-02 12:28:15
回答 3查看 317关注 0票数 3

有一个调用Powershell脚本的批处理文件,我在Windows启动文件夹中创建了该批处理文件的快捷方式,因此Powershell脚本在Windows每次启动时都会运行。我只想知道Powershell脚本如何在运行时检测到它是在windows启动事件期间被批处理文件调用的,还是在用户手动运行批处理文件时被批处理文件调用的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-02 12:49:55

如果由用户运行时,它们只会直接运行批处理文件,而不是通过启动快捷方式,那么您可以设置启动快捷方式,以便在运行时将参数传递给批处理。

右键单击快捷方式,然后选择属性。在目标字段中,添加一个空格,然后单击1。

例如,如果是"C:\MyDir\MyScript.bat",则将其更改为"C:\MyDir\MyScript.bat" 1

运行此快捷方式时,它将启动批处理文件,但也会将变量%1中的值1传递给批处理文件

接下来,在批处理文件的顶部(或您想要的任何位置)添加以下内容。

代码语言:javascript
复制
@echo off
if "%1"=="1" (
   echo Hey I'm running at startup
)

如果批处理是从启动快捷方式运行的,则可以将echo行替换为要运行的命令。

票数 2
EN

Stack Overflow用户

发布于 2020-03-02 13:23:53

计划A:从用户中删除该选项。从它们的运行密钥启动.bat文件。

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

B计划:如果你的需求很复杂,可以使用。

代码语言:javascript
复制
# The time the script was ran
$runtime = get-date

# Starts when the user logs on
$LogonTime = (Get-Process explorer)[0].starttime

$differenceTime = New-TimeSpan -Start $logontime -End $runtime

If ($differenceTime.TotalMinutes -lt 1) {
    White-host "$env:USERNAME did not run it"
}
Else {
    Write-host "$env:USERNAME did run it"
}
票数 0
EN

Stack Overflow用户

发布于 2020-03-02 16:31:15

试试这个:

代码语言:javascript
复制
@echo off
wmic startup get command | find "%~f0" >nul && (
  echo I am running at startup!
)

它使用WMI类Win32_StartupCommand (在wmic别名的startup中)来检查bat文件在启动时是否正在运行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60482543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档