gpt4 book ai didi

powershell 脚本无法从批处理文件中正确运行

转载 作者:行者123 更新时间:2023-12-03 00:03:23 25 4
gpt4 key购买 nike

我有一个正常运行的 PowerShell 脚本,它注册一个计时器对象并每隔几分钟发送一个 key 。

$wshell = New-Object -ComObject Wscript.Shell    

...

function fctName {
param([ScriptBlock] $action)

...

Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceIdentifier Timer.Elapsed -Action $action
}

fctName {

...

$wshell.sendkeys("{ESC}")
}

在 Windows PowerShell ISE 中,脚本运行良好,没有任何错误。
但是,我很想从一个批处理文件中运行它,我在其中只写了这一行:
Powershell.exe -noexit C:\...\ScriptName.ps1

没有抛出错误,但它没有做我想要的,这是为了防止 Windows 空闲。

因为我'-noexit' cmd 窗口,我可以很容易地停止事件
Unregister-Event -SourceIdentifier Timer.Elapsed

它似乎正在工作,因为只输入两次就会引发错误。
  • 难道是我的批处理文件需要不同的代码?
    也许是“回声”等。我不是很熟悉
  • 难道是我必须在 Powershell 中导入一个模块?
  • 最佳答案

    我对 PowerShell 不太满意,但在 JScript 中你可以使用以下代码:

    var osh = new ActiveXObject("WScript.Shell")
    WSH.Echo(
    /cscript/i.test(WSH.FullName)
    ? 'Anti-idle running. Hit Ctrl-C to exit'
    : "Anti-idle running.\nTo stop, use task manager to kill wscript.exe"
    );
    while (1) {
    WSH.Sleep(120 * 1000);
    osh.SendKeys("{SCROLLLOCK}{SCROLLLOCK}");
    }

    .js 保存它扩展,您可以双击它来启动它,或者从 cmd 启动它控制台通过 cscript /nologo scriptfile.js .

    我认为切换 Scroll Lock 比发送 Esc 更温和,因为 Esc 可能会产生不良后果,具体取决于 SendKeys 时哪个应用程序恰好具有焦点。线火。

    PowerShell 是否可以访问 Windows 脚本宿主方法,例如 Sleep ? Start-Sleep 显然如此.这可能比生成计时器更可取。希望如果我的 JScript 代码本身不适合您的邪恶目的,它至少适合作为您的 PowerShell 脚本的伪代码。

    关于powershell 脚本无法从批处理文件中正确运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928115/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com