检查脚本是否至少运行过一次

时间:2020-05-14 13:30:04

标签: windows powershell

是否有一种方法可以查看是否至少有一次PowerShell脚本曾经执行过一次,而脚本本身并未创建任何日志?即是否有某种本机记录保存机制用于已执行的脚本(例如,一个事件生成并因此创建一个事件日志),这意味着实际执行的脚本的日志是在运行时创建的,但在外部进行?

例如:如果脚本A今天执行一次,请在第二次执行脚本(例如2天后)期间检查脚本A是否已经执行过。

这可以通过任何事件日志或环境变量来完成吗?

编辑:请注意,对于此特定脚本,无法创建文本文件或日志。有没有一种方法可以执行此操作,而不必实际“物理地”保留痕迹,而是依靠脚本执行时设置的任何参数?

EDIT2:此脚本将以最少的特权执行,因此,不仅该帐户没有管理员权限,而且也没有创建文本或日志文件的批准权限。

1 个答案:

答案 0 :(得分:1)

如何修改代码?从技术上讲这是作弊,因为更改是在脚本文件本身中完成的。但是,没有完成外部日志记录。

Private Sub txtPesJmlPesan_TextChanged(sender As Object, e As EventArgs) Handles txtPesJmlPesan.TextChanged
    Dim hasil As Integer

    Try
        If (cbxPesMenu.Text = "Silver") Then
            hasil = 15000 * Integer.Parse(txtPesJmlPesan.Text)
            lblPesTotal.Text = hasil
        ElseIf (cbxPesMenu.Text = "Gold") Then
            hasil = 20000 * Integer.Parse(txtPesJmlPesan.Text)
            lblPesTotal.Text = hasil
        ElseIf (cbxPesMenu.Text = "Diamond") Then
            hasil = 25000 * Integer.Parse(txtPesJmlPesan.Text)
            lblPesTotal.Text = hasil
        End If
    Catch ex As Exception
        hasil = 0
        lblPesTotal.Text = hasil ' the best code to suppress that error in a legal way
    End Try
End Sub

该脚本读取自己的内容。如果第一行不是以散列开头,则为第一行。然后,脚本将创建一组新的源代码。第一行是哈希,其后是原始源。然后原始脚本将被覆盖。

作为旁注,就像@Mathias R. Jessen指出的那样,登录但不登录的要求是自相矛盾的。但是,Windows中提供了process tracking audit。另外,还有script block logging。从理论上(并具有适当的权限),可以在Windows的事件日志中搜索以前的运行尝试。

我宁愿弹出为什么堆栈并找出根本原因,因为吃饭和保持零食的要求听起来很像XY问题。

相关问题