【问题标题】:Running powershell scripts in Kotlin without creating a file在 Kotlin 中运行 powershell 脚本而不创建文件
【发布时间】:2018-10-17 21:15:43
【问题描述】:

所以我学会了如何从 kotlin here 运行 ps1 文件,但我对该文件的唯一目的是运行命令,然后删除自身。有没有什么办法可以消除创建稍后将被删除的文件的麻烦?

我有一行命令,每个命令用分号分隔。

编辑

有人要powershell代码,这里是:
(我把它分成几行,但实际上它只是一行)

前面不带反斜杠的美元符号是对 kotlin 中变量的引用。

"\$ComObj = New-Object -ComObject WScript.Shell; " +
"\$ShortCut = \$ComObj.CreateShortcut(\"\$Env:${shortcut.absolutePath}\"); " +
"\$ShortCut.TargetPath = \"%windir%\\system32\\cmd.exe\"; " +
"\$ShortCut.Description = \"${f.nameWithoutExtension}\"; " +
"\$ShortCut.Arguments = \"/c \"\"start $url\"\"\"; " +
"\$ShortCut.FullName; \$ShortCut.WindowStyle = 7; " +
"\$ShortCut.IconLocation = \"$iconpath\"; " +
"\$ShortCut.Save(); " +
"Remove-Item \"${createPs.absolutePath}\"; "

(代码在运行之前被写入文件,这是我不想要的)

【问题讨论】:

  • 为了提供一些帮助,您可以分享您编写的脚本吗?
  • @thomschumacher 我刚刚添加了powershell代码
  • 您要阻止的文件是什么? sn-p?
  • @thomschumacher 代码写入文件
  • Runtime.getRuntime().exec("powershell.exe -File d:\\scriptSnippetAbove.ps1") 这就是你运行它的方式... ScriptSnippetAbove.ps1 是上面的代码吗?

标签: powershell kotlin runtime.exec


【解决方案1】:

如果您可以将脚本放入变量中,并且该变量会在调用 PowerShell 时扩展,您可以这样做

Runtime.getRuntime().exec("powershell.exe -command '\$yourvariable'")

当然,您需要尝试使用正确的转义字符来获取要运行的命令的引号。

通过首先在 CMD.exe 中运行它并找出正确的语法,我在这类事情上取得了最大的成功。然后把它带到你的程序中。这样你就会知道你首先正确地理解了 PowerShell 语法。据我了解,PowerShell 的解析都是在引擎启动后完成的。因此,当您以这种方式调用 PowerShell 时,您必须获得正确的语法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    相关资源
    最近更新 更多