gpt4 book ai didi

docker - 如何在带有很多引号的Windows Docker容器中执行WMI查询?

转载 作者:行者123 更新时间:2023-12-02 19:14:22 24 4
gpt4 key购买 nike

我很难在Docker容器中执行WMI查询。在我的主机中,我可以毫无问题地执行下面的查询。

Get-WmiObject -Namespace "root\cimv2" -query "select HotfixID from Win32_QuickFixEngineering where HotFixID = `"KB4571756`"" 
但是,当我尝试在Docker容器中执行相同的查询时,不断出现诸如以下错误:
docker exec my_container powershell "Get-WmiObject -Namespace `"root\cimv2`" -query `"select HotfixID from Win32_QuickFixEngineering where HotFixID = `"KB4571756`"`""
请注意,我尝试对命令内的所有引号进行转义。上面命令的错误是:
The string is missing the terminator: ".
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordEx
ception
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
我尝试使用不同的引号,例如 "',但其中任何一个都没有成功。我知道我可以使用Docker交互模式执行相同的查询而不会出现问题,但是需要以一种这样的方式集成该查询,即可以使用Stdin执行它们,并从我编写的另一个代码中读取Stdout的输出。

最佳答案

两种可能的方式:
A)对命令中的字符串使用单引号

docker exec my_container powershell "Get-WmiObject -Namespace 'root\cimv2' -Query 'select HotfixID from Win32_QuickFixEngineering where HotFixID = ''KB4571756'''"
B)使用 EncodedCommand
$command = { Get-WmiObject -Namespace "root\cimv2" -Query "select HotfixID from Win32_QuickFixEngineering where HotFixID = 'KB4571756'" }
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command.ToString())
$encodedCommand = [Convert]::ToBase64String($bytes)

docker exec powershell -EncodedCommand $encodedCommand

关于docker - 如何在带有很多引号的Windows Docker容器中执行WMI查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64314424/

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