生成的变量与硬编码字符串不同.两者都是相同的值,但是在比较时返回错误



我正在将Carbon Black的CLI密码在端点上拉。我有一个摘要,可以从服务器中摘下密码并将其放入变量。

我需要将包含密码的变量传递给命令,但是该变量未正确传递(命令无关(。

我硬编码一个具有实际值的变量,并将其运行到我的命令中,并且效果很好。

因此,在简而言之

有关如何将拉密码转换为正确格式的任何提示?

我检查了getType((。全名和它们都相同的格式。

 $resource = "SEOMRESORUCE" + $Computer
 $url = "SOMEEML SOURCE"
 $configlist = "C:Tempconfiglistwithdeleteditems.xml"
 [System.Net.ServicePointManager]::ServerCertificateValidationCallback =      {$true}
 # download the CL file
 Write-Host "Finding CLI Password"
 $wc = New-Object System.Net.WebClient
 $wc.DownloadFile($url, $configlist)
 $webResponsey = [System.Net.WebRequest]::Create($resource)
 $webResponsey.Method = "GET"
 $webResponsey.ContentType='application/json; charset=utf-8'
 $webResponsey.Headers.Add("X-Auth-Token", "SOMETOKEN")
 $Response= $webResponsey.GetResponse()
 $ResponseStream = $Response.GetResponseStream()
 $ReadStream = New-Object System.IO.StreamReader $ResponseStream
 $jsonresult = $ReadStream.ReadToEnd()
 $saveme = $jsonresult | Out-String
 $cliPassword = $saveme -replace '.*CLIPassword":"([^"]*)".*', '$1' 
 Write-Host "CLI password is " $cliPassword #this provides the same  value as $clipassword2
 $cliPassword2 = 'TAWR-SOWR-POYS-YAEZ'

 $cliPassword -eq $cliPassword2 #this equals False for whatever reason
$cliPassword = $saveme -replace '(?s).*CLIPassword":"([^"]*)".*', '$1'

您需要单线修改器((?s)(,因为您的JSON转换将包括LineFeed和/或Carriagare返回。默认情况下,REGEX .字符与Newline字符不匹配。没有单线修改器,只有-Replace操作员将匹配带有Clipassword文本的行。非匹配线仍将输出。

最新更新