【发布时间】:2020-12-25 10:56:35
【问题描述】:
我设置了一个自解压 WinRar 存档,以便在完成后运行一个 powershell 脚本。脚本将启动,但特定命令未给出预期结果。
特别是,我有以下命令来查找已安装游戏的安装路径(下雨的风险2)。
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | % { Get-ItemProperty $_.PsPath } | Where-Object {$_.DisplayName -like 'Risk of Rain 2'} | Select InstallLocation -ExpandProperty InstallLocation
当自己运行脚本时,我得到了预期的安装路径。
F:\SteamLibrary\steamapps\common\Risk of Rain 2
当脚本启动时(无论是在提取之前还是之后),命令似乎都在运行,但什么也不输出。
在测试中,我删除了除以下内容之外的所有内容:
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | % { Get-ItemProperty $_.PsPath }
这仍然有效,输出已安装应用程序的列表。当我将管道添加到“Where-Object”部分时,它开始失败。
我唯一的猜测是 WinRar 启动脚本时设置了一些其他参数。
我尝试让 Winrar 启动一个 .bat,然后运行 .ps1 文件,但结果相同。以管理员身份运行存档也是如此。
我的 powershell 脚本有什么奇怪的地方,还是我只是缺少 Winrar 处理事情的方式?
谢谢!
【问题讨论】:
-
好的,所以只要检查一下我是否正确。如果将“Where-object”存储在 WinRar 中,会出现错误?也许问题可能是由于 WinRar 的命名如何工作?也许出于归档原因,它在单词之间放置了 - 而不是空格?这会导致你的“Where-object”失败。我只是在这里推测,但尝试摆弄单词之间的空格。
-
@TheGrandJ 谢谢,我检查了文件名/路径,它们都使用下划线代替空格。脚本开始没问题,所以我认为路径没问题。该命令不应该关心它在哪里运行,但也许它确实......这很奇怪,哈哈。
标签: powershell archive winrar self-extracting