首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在用户注销时执行powershell脚本

在用户注销时执行PowerShell脚本可以通过多种方式实现,具体方法取决于你的操作系统和环境。以下是一些常见的方法:

方法一:使用组策略(适用于Windows域环境)

  1. 打开组策略管理器
    • Win + R,输入 gpmc.msc,然后按回车。
  • 创建或编辑组策略对象(GPO)
    • 在组策略管理器中,右键点击“组策略对象”,选择“新建”。
    • 输入一个名称,然后双击新创建的GPO。
  • 配置用户注销脚本
    • 在GPO编辑器中,导航到 用户配置 -> Windows 设置 -> 脚本(登录/注销)
    • 双击“注销”文件夹,然后点击“添加”按钮。
    • 浏览并选择你的PowerShell脚本文件(通常是 .ps1 文件),然后点击“确定”。
  • 链接GPO到目标组织单位(OU)
    • 在组策略管理器中,右键点击目标OU,选择“链接现有GPO”。
    • 选择你刚刚创建或编辑的GPO。

方法二:使用本地组策略(适用于单台计算机)

  1. 打开本地组策略编辑器
    • Win + R,输入 gpedit.msc,然后按回车。
  • 配置用户注销脚本
    • 在本地组策略编辑器中,导航到 用户配置 -> Windows 设置 -> 脚本(登录/注销)
    • 双击“注销”文件夹,然后点击“添加”按钮。
    • 浏览并选择你的PowerShell脚本文件(通常是 .ps1 文件),然后点击“确定”。

方法三:使用任务计划程序(适用于单台计算机)

  1. 打开任务计划程序
    • Win + R,输入 taskschd.msc,然后按回车。
  • 创建基本任务
    • 在任务计划程序库中,右键点击“任务计划程序库”,选择“创建基本任务”。
    • 输入任务名称和描述,然后点击“下一步”。
  • 设置触发器
    • 选择“当用户注销时”,然后点击“下一步”。
  • 设置操作
    • 选择“启动程序”,然后点击“下一步”。
    • 浏览并选择PowerShell解释器(通常是 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe),然后在“添加参数”中输入 -File "C:\Path\To\YourScript.ps1"
  • 完成任务创建
    • 点击“完成”。

注意事项

  • 权限:确保运行脚本的用户具有足够的权限。
  • 脚本路径:确保脚本路径正确,并且脚本文件具有可执行权限。
  • 错误处理:在脚本中添加错误处理逻辑,以便在脚本执行失败时能够记录日志或通知管理员。

示例代码

以下是一个简单的PowerShell脚本示例,用于在用户注销时记录日志:

代码语言:txt
复制
# LogoffScript.ps1
$LogPath = "C:\Logs\Logoff.log"
$LogMessage = "$(Get-Date) - User logged off.`n"

Add-Content -Path $LogPath -Value $LogMessage

参考链接

通过以上方法,你可以在用户注销时执行PowerShell脚本,并根据需要记录日志或执行其他操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在docker容器中使用非root用户执行脚本 (

应用容器化之后,在docker容器启动时,默认使用的是root用户执行命令,因此容器中的应用默认都是使用root用户来运行的,存在很高的安全风险,那么如何能够使用非root的业务用户来运行应用呢,下面我将举一个简单的例子来说明...该例子是在容器中使用自建的用户来运行一个简单的shell脚本,并将脚本输出日志持久到容器外部。接下来让我们来看从制作镜像到容器运行的全过程吧。...chown hpf:hpf test.sh RUN chmod 755 test.sh ENTRYPOINT su - hpf -c "/data/scripts/test.sh" --使用所创建的用户来运行脚本...14.04              c69811d4e993       3 weeks ago        188 MB [root@host09 test]# 2、启动容器: 注意,在启动容器之前...,需要将宿主机上/data/hepf/log目录的权限,否则容器启动时,脚本中的日志将没有权限写该目录,我直接将该目录权限修改成777了。

2.2K10

Linux 启动时如何自动执行命令或脚本?

我们假定使用的是 Bash 作为登录及注销的主 Shell。如果你使用的是其他 Shell,那么有些方法可能会无效。如果有其他的疑问,请参考对应的 Shell 文档。...在启动时执行 Linux 脚本 有两种传统的方法可以实现在启动时执行命令或脚本: 方法 #1 - 使用 cron 任务 除了常用格式(分 / 时 / 日 / 月 / 周)外,cron 调度器还支持 @reboot...这个指令后面的参数是脚本(启动时要执行的那个脚本)的绝对路径。...下图说明如何分别使用 cron 任务和 rc.local 运行两个示例脚本(/etc/rc.d/rc.local/home/gacanepa/script1.sh 和/home/gacanepa/script2...Tecmint.com" DIR=/home/gacanepa echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt *启动时执行

3.8K40
  • 如何使用PS2EXE将PowerShell脚本编译为可执行程序

    关于PS2EXE PS2EXE是一个可以将PowerShell脚本编译为可执行程序的模块,在GUI和Ingo Karstein脚本的支持下,该模块能够生成真正的Windows可执行程序。...除此之外,PS2EXE还支持PowerShell 5.x和图形化前端。...注意事项 有一些人可能会滥用PS2EXE来编译他的计算机病毒脚本,因此越来越多的病毒扫描程序会将使用PS2EXE创建的程序识别为恶意程序并将其删除。因此,希望大家不要将其用于恶意目的。...PowerShell脚本(文件需要是UTF8或UTF16编码) outputFile = 目标可执行文件名称或目录 prepareDebug = 创建调试帮助信息 x86或x64 = 编译运行时32...编译的可执行文件只会在提权上下文中执行 supportOS = 使用最新Windows版本的功能 virtualize = 激活应用程序虚拟化 longPaths = 启用长路径支持 项目地址 https

    2.4K30

    【开发日记】如何让指定用户执行sudo命令时无需输入密码

    在 Linux 系统中,sudo命令用于让普通用户以超级用户身份执行一些需要管理员权限的操作。默认情况下,执行sudo命令时系统会提示用户输入密码。 如果希望让某个用户无需输入密码即可执行特定的命令。.../path/to/command:你希望用户免密码执行的命令的完整路径。 示例:下面是一个允许tworice用户在使用sudo命令执行docker ps命令时不需要输入密码的示例。...tworice ALL=(ALL) NOPASSWD: /usr/local/bin/docker ps 在文件界面输入i进入文件编辑状态,将这行命令放置在/etc/sudoers文件最后,并保存当前文件...,保存文件时使用Esc退出编辑状态,并按下:wq!...重新登录后执行sudo docker ps则不再需要输入密码。

    26410

    如何强制用户在Linux下一次登录时更改密码

    请注意,如果您刚创建了具有默认密码的用户帐户,则还可以使用此技巧强制该用户在首次登录时更改其密码。 有两种可能的方式来实现这一点,如下面详细描述的那样。...使用passwd命令 要强制用户更改其密码,首先密码必须已过期并导致用户密码过期,则可以使用passwd命令,该命令用于通过指定-e或--expire切换用户密码来更改用户密码用户名如图所示。...检查用户密码到期信息 运行上面的passwd命令后,您可以从chage命令的输出中看到必须更改用户的密码。一旦用户ravi下次尝试登录时,他会在访问shell之前提示更改密码,如以下屏幕截图所示。...现在要设置用户的密码过期,通过指定日期为零(0)来运行以下命令,意味着密码自上述日期(即1970年1月1日)以来没有更改过, 所以密码已经过期并且需要在用户再次访问系统之前立即进行更改。...检查密码到期信息 这里有一些额外的用户管理指南。 结论 建议用户出于安全原因,定期更改其帐户密码。

    2.5K80

    内网渗透|基于文件传输的 RDP 反向攻击

    如果我们通过相应的设置,在客户端连接远程主机的一瞬间,将远程主机上早已准备好的木马程序复制到客户端主机的启动项中,那么当客户端主机下一次启动时便会执行该木程序,客户端主机便可以成功上线。...但要注意的是,只有通过远程登陆的用户才可以在远程主机中访问 tsclient,其他在远程主机上本地登录的用户是无论如何也无法访问 tsclient 的。...我们的思路是,在远程主机的启动项中写入一个 .bat 脚本(run.bat),当一个客户端用户通过远程桌面连接到这个远程主机时,在登陆之后会立即执行这个启动项中的 run.bat 脚本。...start.bat 脚本执行后会首先遍历 tsclient 共享,发现 tsclient 共享后就会将自己复制到 tsclient 也就是连接远程主机的客户端主机上的启动项中,然后执行一个 Cobalt...不出预料,在 Windows 10 连接上 Windows Server 2012 时,run.bat 便会扩散到 Windows 10 的启动项中,当 Windows 10 注销后,管理员再次使用他的

    3.1K20

    通过计划任务实现持续性攻击

    Payload既可以从磁盘上执行,也可以从远程位置下载执行,这些Payload可以是可执行文件、PowerShell脚本或者scriptlets形式。...图*-* 查询调度任务 当目标系统的用户管理员注销时,将创建事件ID,并在下次登录时执行payload。 ?...图*-* 用户管理员注销获取的Meterpreter 我们也可以使用PowerShell创建计划任务,这些任务将在用户登录时或在特定的时间和日期执行。...如果用户具有管理员级别的权限,就可以使用以下命令来创建一个新的计划任务,该任务将会在系统登录时执行。...图*-* 使用Empire列出的Backdoor 计划任务列表 PowerShell的elevated模块提供了一个用户登录时执行计划任务的选项。

    1.1K30

    如何限制用户在某一时间段多次访问接口

    要知道,如今很多平台的接口都是可以同时被门户网站,手机端,移动浏览器访问,因为接口是通用的,而为了安全起见,有些接口都会设置一个门槛,那就是限制访问次数,也就是在某一时间段内不能过多的访问,比如登录次数限制...,在一些金融理财或者银行的接口上比较常见,另外一些与用户信息有关的接口都会有一个限制门槛 那么这个限制门槛怎么来做呢,其实有很多种方法,主流的做法可以用拦截器或者注解,那么今天咱们用注解来实现 首先需要定义一个注解...大致的流程就是要获取redis中的调用方法次数,使用incr函数,当key不存在的时候默认为0然后累加1,当累加1大于limit设置的限制次数时,则抛出异常,这个地方需要注意,如果是ajax调用的话需要判断是否

    1.8K60

    内网渗透横向移动之使用AnyDesk远程控制

    时桌面不能被注销 有可能连接上去是黑屏,这个是因为该桌面用户退出远程桌面但没有注销,此时,除非能用winlogon启动anydesk,否则没法使用屏幕 攻击 Windows 假使我们在windows上拿到目标的...使用一些提权的powershell脚本,脚本弹出了一个新的cmd窗口,但是数据不通过cs,只能通过远程桌面操作,但是不能直接RDP 然后我们可以通过命令让目标下载anydesk powershell (...应用后彻底退出anydesk,退出时不选择安装 生成的配置文件将会储存在 C:\Users\你的用户名\AppData\Roaming\AnyDesk ?...拓展: 这几步不是必须,按需操作 连接前可以设置连接的用户名,如果不设置,就会用当前的用户名 ? 有可能会暴露身份 ? 然后通过cs远程执行anydesk,然后在攻击机远程连接 ?...,可以使用计划任务执行,如果要使用计划任务,首先要知道当前用户是谁 powershell "(((Get-WmiObject -Class Win32_Process -Filter 'Name=\"explorer.exe

    3.6K30

    权限维持分析及防御

    sethc.exe或者在“控制面板”中关闭“启用粘滞键”选项 2、注册表注入后门 在普通用户权限下可以将后门程序或脚本路径填写到启动项注册表中,当系统管理员登录系统时触发后门 这个在ATT&CK中的Persistence...当设定的条件被满足时,系统将自动启动Powershell进程去执行后门程序,执行后进程将会消失,达到所谓的“无进程” Empire下有WMI相关的模块可以使用 usemodule powershell/...的渗透测试工具 集成了框架、脚本(包括下载和执行、键盘记录、DNS、延时命令等脚本)和各种Payload 存在ASPX的“大马”在\nishang\Antak-WebShell目录下 2、Weevely...,依然可以获取 (1)方法一 是使用mimikatz将伪造的SSP注人内存,重启就丢失 //注销用户 ....\mimikatz.exe "privilege::debug" "misc::memssp" exit //注销之后执行命令查看明文密码 powershell.exe cat c:\windows\system32

    1K10

    WMI利用(权限维持)

    那么在我们短暂的获取权限后,如何才能将权限持久化,也就是所说的权限维持住呢?...WMI事件中的事件消费者可以分为临时和永久两类,临时的事件消费者只在其运行期间关心特定事件并进行处理,永久消费者作为类的实例注册在WMI命名空间中,一直有效到它被注销。...$FinalPayload ###修改Payload,可以指定执行Powershell,或者cmd或者其他命令。...SELECT * FROM __TimerEvent WITHIN 10 WHERE TimerID = 'Trigger' 上线C2 注意:将上述Powershell脚本替换其执行的Payload进行本地执行...运行ps1脚本后成功上线 Mof文件添加事件 注意:笔者在测试Mof文件添加事件时,编译后的确能够正常添加事件,但是未能执行指定命令。 #PRAGMA NAMESPACE ("\\\\.

    1.9K21

    内网渗透之内网权限维持

    利用方式一:SSP注入域控内存 利用通常是用mimikatz把SSP注入到域控的内存中(但是域控不能重启,重启后SSP会丢失),注销当前用户重新登录,即可获取明文密码(获得的是重新登录域控时管理员输入的密码的明文...1、域控中使用管理员权限打开Mimikatz privilege::debug misc::memssp 2、查看明文密码 执行后,若用户注销或者有其他用户登录到此系统,即可在windows\system32...在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的 SID。 SID History是在域迁移过程中需要使用的一个属性,为了解决用户在迁移到另一个域中的时候权限会改变的问题。...原理:在修改域控密码时,用户输入新密码后,LSA会调用PasswordFileter来检查该密码是否符合复杂度要求,如果密码符合复杂度要去,LSA就会调用PasswordChangeNotify,在系统中同步密码...、生成dll注入的powershell脚本 下载Powershell的dll注入脚本 https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection

    7810

    Microsoft 本地管理员密码解决方案 (LAPS)

    LAPS 是如何工作的? LAPS 解决方案的核心是一个 GPO 客户端扩展 (CSE),它执行以下任务并可以在 GPO 更新期间强制执行以下操作: • 检查本地管理员帐户的密码是否已过期。...可以在环境中配置扩展权限,这可能允许未经授权的用户访问某些计算机上的 LAPS 密码。有关如何删除扩展权限的其他信息,请参阅 LAPS 操作指南(其中一些位于本文末尾的委派部分。...永久 VDI(相同的计算机名称): 此过程与物理计算机相同,因为用户连接到相同的 VDI 映像,该映像仍然存在(注销时不会被破坏)。...这一点, 由于 LAPS 没有(明显的)选项来强制 LAPS 客户端在启动时更改密码,因此需要运行一个脚本来清除 ms-Mcs-AdmPwdExpirationTime 属性,以便在 LAPS 客户端运行时...可以配置 PowerShell 脚本,在用户注销时(或在其他事件期间)清除 ms-Mcs-AdmPwdExpirationTime。VDI 解决方案可以提供此时运行脚本的能力。

    4K10

    如何获取TrustedInstaller权限

    TrustedInstaller的Token (此方法成功率高,但需要有基础计算机操作知识) Windows有两种类型的Token: Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录...、远程桌面登录) Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹) 注: 两种token只在系统重启后清除 具有Delegation token的用户在注销后...结束后,我们需要让系统允许使用 Powershell 脚本,我们输入: Set-ExecutionPolicyUnrestricted 并回车。...接着系统会显示执行策略更改,我们输入”A“并回车确认: 接着,我们导入 NtObjectManager 模块,我们输入: Import-ModuleNtObjectManager 并回车。...在 Powershell 中依次输入: sc.exestartTrustedInstallerSet-NtTokenPrivilegeSeDebugPrivilege$p=Get-NtProcess-NameTrustedInstaller.exe

    7.1K50

    进攻性横向移动

    当用户登录时,系统通过将其与存储在安全数据库中的信息进行比较来验证用户的密码。当用户的凭据通过身份验证时,系统会生成访问令牌。代表此用户执行的每个进程都有此访问令牌的副本。...以另一种方式,它包含您的身份并说明您可以在系统上使用和不能使用的内容。在不深入研究 Windows 身份验证的情况下,访问令牌引用登录会话,这是用户登录 Windows 时创建的。...因此,当用户通过网络登录登录到远程系统时,用户的凭据将不会出现在远程系统上以执行进一步的身份验证。...执行程序 PsExec来自微软的 Sysinternals套件,允许用户使用命名管道通过端口 445 (SMB) 在远程主机上执行 PowerShell。...hta 文件是 Microsoft HTML 应用程序文件,允许在 HTML 应用程序中执行 Visual Basic 脚本。

    2.2K10

    无需登录域控服务器也能抓 HASH 的方法

    所以我们现在可以使用 Invoke-Mimikatz PowerShell 脚本执行 OverPass-The-Hash 攻击,并使用 storagesvc 用户的权限启动一个新的 PowerShell...控制台: 在 New PowerShell 控制台中,我们可以加载 Invoke-Mimikatz PowerShell 脚本并执行 DCSync 攻击: 正如我们在上面的屏幕截图中看到的,我们能够成功执行...现在,我们将加载 Invoke-Mimikatz PowerShell 脚本并执行 DCSync 攻击: 正如我们在上面的屏幕截图中看到的,我们能够成功执行 DCSync 攻击并检索 KRBTGT 账户哈希...检测 OverPass-The-Hash 现在让我们运行以下查询来检测在执行 OverPass-The-Hash 攻击时生成的登录事件。...当我们执行 OverPass-The-Hash 攻击时,一个名为“seclogo”的登录进程。 在执行 OverPass-The-Hash 攻击时,Mimikatz 尝试访问 LSASS 进程。

    2.8K10

    技术分享-持久性-WMI事件订阅

    WMI-Persistence是另一个 PowerShell 脚本,它可以创建事件过滤器,在每次重新启动后 5 分钟内从远程位置执行基于 PowerShell 的有效负载。...有一个 PowerShell 模块可以通过在特定时间执行基于 64 编码的有效负载,在目标主机上部署 WMI 事件订阅的持久性技术。...新植入物将在设置时连接回 C2 服务器。 Metasploit Metasploit 框架包含一个通过 WMI 在目标系统上执行持久性的模块。...该模块支持不同的选项,可用于触发要在系统上执行的任意有效负载。默认情况下,配置为在系统上创建特定事件 ID (4625) 时执行有效负载。...以下模块可以在特定的每日时间、登录失败期间和启动时 5 分钟内执行有效负载。

    2.8K10

    实用powershell命令

    /download/6/F/5/6F5FF66C-6775-42B0-86C4-47D41F2DA187/Win7AndW2K8R2-KB3191566-x64.zip image.png 解压后在Install-WMF5.1....ps1上右击“使用PowerShell运行”,安装完成后重启生效,重启后原本PowerShell的图标会变,执行Install-WMF5.1.ps1前首先要运行powershell开启下“允许执行脚本...”,命令是set-ExecutionPolicy RemoteSigned具体情况如下图,执行完这个命令后再执行Install-WMF5.1.ps1 image.png image.png image.png...LogName='Security';Id=4624} //已成功登录账户 Get-WinEvent -FilterHashtable @{LogName='Security';Id=4634} //已注销账户...//检测到系统错误 【获取登录信息】 gwmi Win32_LoggedOnUser //成功登录的记录 gwmi Win32_LoggedOnUser | ft Antecedent //成功登录的用户

    2.7K30
    领券