powershell 如何将双引号字符串传递给sc.exe以获取binPath

tcbh2hod  于 2023-05-07  发布在  Shell
关注(0)|答案(3)|浏览(220)

我正在尝试提出一个PowerShell进程来引用包含空格的服务路径。这是因为Qualys 105484
我知道解析引擎很复杂,运行带有嵌入引号的cmd命令至少可以说是很困难的。我希望我离得很近,另一双眼睛会有所帮助。
我尝试从PowerShell运行的cmd命令是

sc create OcaLogSvc binpath= "\"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""

下面是一些尝试和注解,每个尝试和注解显示了binPath的结果

$serviceName = "OcaLogSvc"
& sc.exe config $serviceName binPath= '""\""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""

& sc.exe config $serviceName binPath= '""\""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""\""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""

& sc.exe config $serviceName binPath= '"""\"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\""""'
# ""C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc""

& sc.exe config $serviceName binPath= "\C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc\"
# \C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"

我通过运行

sc.exe qc $serviceName | sls "BINARY"

尝试了其他几种组合,但上面的那些是唯一成功的。
很可能我会给予,而是将一些字符串传输到.bat文件中,我可以调用这些文件。或者直接编辑注册表。我只是觉得这是有可能的。
我不能使用stop parsing参数,因为我打算在发现路径名时使用变量。我也只是大规模的目标命令,没有参数。我将手动解决这些问题,或者至少以另一种方式解决,而不是我在这里试图做的事情。
我还尝试通过Split-CommandLine检查CommandLineToArgvW的cmd字符串,但这些知识并没有很好地转化为上面的示例。

hfwmuf9z

hfwmuf9z1#

你似乎在寻找:
'"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"'-这将导致字符串"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"
由于命令中的空格,您尝试修复的问题仅存在。另一个选择可能是使用旧的DOS名称c:\progra~1\或将应用程序安装到不包含空间的文件夹中,如C:\AppRecovery\Agent\R3LogService\OcaLogSvc

9jyewag0

9jyewag02#

感谢您指出此document
我尝试使用sc.exe命令修改机器中的服务,但未能更新它,尽管命令成功运行!然后我想我们可以使用注册表项更新exe路径
正如您现在所看到的,服务详细信息存在于注册表中的以下位置:

HKLM:\SYSTEM\CurrentControlSet\Services\$service

因此,为了使用报价更新您的服务,您只需使用命令Set-Itemproperty在注册表中更新它,如下所示:

$service = "OcaLogSvc"
Set-Itemproperty -path "HKLM:\SYSTEM\CurrentControlSet\Services\$service" -Name 'ImagePath' -value '"C:\Program Files\AppRecovery\Agent\R3LogService\OcaLogSvc"'
guykilcj

guykilcj3#

C:\Windows\system32〉sc config Pr_Ince1 binPath="“D:\IY In OUSS\test.exe”-XNInsce1 -K
[SC]ChangeServiceConfig成功
例如:“slash“D:\ path here”

相关问题