当前位置: 首页 > 知识库问答 >
问题:

Powershell中的字符串构建问题

柳英资
2023-03-14
 #Variables that will probably need to change depeneding on environment
$server = "c3po:140"
$applicationName = "/webiznet_dev"
$applicationPath = "webiz_serviceapi"
$protocol = "http:"

#Variables that probably won't need to change
$userName = "PowerShellUser"
$auth = "token "
$rootUrl = '{0}//{1}{2}' -f $protocol, $server, $applicationName
$userId = 0

#Decrypting PWord 
#Might need to change $PSScriptRoot to where you have the txt file 
$securePassword = Get-Content "$PSScriptRoot\password.txt" | ConvertTo-SecureString
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($securePassword)
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
$login = @{"Username"=$userName; "Password"=$password; }

#Login and Get Token 
$fullApplicationPath = "{0}//{1}/{2}" -f $protocol, $server, $applicationPath
$url = "{0}/job/login" -f $fullApplicationPath
$jsonHeaders = "{'UserId':$userId,'ApplicationName':$applicationName,'RootUrl':$rootUrl,'ApplicationInsightsGUID':'8773f299-9fed-4431-ab34-888888888888','DisableEmail':'true'}";
$HeaderWrap = @{"Authorization"=$auth};
$HeaderWrap.Add("x-webiz-app-info",$jsonHeaders);
$token = Invoke-RestMethod -Uri $url -Method Post -Body $login -Headers $HeaderWrap;


#Write out url which works fine
 Write-Host $url

#Load values for api calls as the token is now populated so the appInfo can get properly populated
$encryptedString = $token.EncryptedString
$userId = $token.UserId
$auth = "token $encryptedString"
$jsonHeaders = "{'UserId':$userId,'ApplicationName':$applicationName,'RootUrl':$rootUrl,'ApplicationInsightsGUID':'8773f299-9fed-4431-ab34-888888888888','DisableEmail':'true'}";
$HeaderWrap = @{"Authorization"=$auth};
$HeaderWrap.Add("x-webiz-app-info",$jsonHeaders);

#Scripts to call scheduled notification jobs in 
$url = '{0}/Job/RunNotificationReminders' -f $fullApplicationPath
Invoke-RestMethod  $url -Method Post -Headers $HeaderWrap
$url = '{0}/Job/RunAddressChanges' -f $fullApplicationPath
Invoke-RestMethod $url -Method Post -Headers $HeaderWrap;
$url = '{0}/Job/RunStorageUnitTemperatureReadingDueAlerts' -f $fullApplicationPath
Invoke-RestMethod $url -Method Post -Headers $HeaderWrap;
$url = '{0}/Job/RunThermometerCalibrationDueAlerts' -f $fullApplicationPath
Invoke-RestMethod $url -Method Post -Headers $HeaderWrap;

Invoke-RestMethod:分析注释时出错。应为:*,得到W。路径'ApplicationName',行1,位置31。(错误代码:c2d09f7a-f31a-4db1-a448-8214b6ab65ed)在C:\inetpub\wwwroot\webiz_shane\customersqlscripts\powershell\20150522_scheduled_jobs_api_calls.ps1:25 char:10+$token=invoke-restmethod-uri$url-method post-body$login-headers~~~~+CategoryInfo:invalidoperation:(system.net.httpwebrequest:httpwebrequest)[Invoke-RestMethod],WebException+FullyQualifiedErrorId:WebCmdletWebResponseException,microsoft.powershell.commands.invokerestmethodCommand

共有1个答案

壤驷宏才
2023-03-14

您是否尝试过将JSON值封装在单个qoutes和键中?

例如,在构建$JSONHeader时,在$ApplicationName和$rooturl周围放置单引号?

 类似资料:
  • 在此avro模式中 当我试着给名字分配多个值,比如多个记录... 它总是为模式中的NAME字段指定Null...除了我放入的第一条记录...有没有方法可以将default用作字符串...如果没有字符串,那么它只使用模式中提到的Null 如上所述,联合是使用JSON数组表示的。例如,[“string”,“null”]声明一个模式,该模式既可以是字符串,也可以是null。 联合不能包含多个具有相同类型

  • 我正在尝试使用PowerShell进度条,但-status参数未按公布的方式工作(或者我错误地阅读了文档)。 为了简单起见,假设我有一个集合: ...我有另一种方法可以迭代这个集合。但是当它迭代时,处理需要很长时间。所以我想通过在循环中调用来给用户状态。 这是进步的代码。 这与: https://blogs.technet.microsoft.com/heyscriptingguy/2011/01

  • 我有两个字符串 node1/node2/node3/node4“和”node1/node2/node5/node6“。...我怎样才能从这个字符串中构建一个摇摆的?这是我构建一个字符串的代码....

  • 问题内容: 有时,我不得不在VBA中构建一个SQL字符串并使用来执行它。我一直通过将变量串联到字符串中来构建这些字符串,例如: VBA似乎没有一元串联运算符(例如+ =),虽然看起来不太理想,但至少我可以注释每个参数并独立更改它们。它比一个怪物级联的字符串更易于阅读和更改。但这似乎仍然是构建SQL字符串的一种糟糕方法。我有一个带有约50个参数的参数,因此有50行。不可爱。 顺便说一句,这排除了使用

  • 问题内容: 我有一个字符串,其内容是XML。我想将标签分开,并使其成为Java中的字符串列表。以下是我正在尝试的东西: 我想将其分为以下列表: 我试图通过JAXB处理器执行此操作,但效果不佳。还使用split尝试了一些愚蠢的逻辑,但这也无济于事。还有其他方法可以做到这一点吗? 问题答案:

  • 问题内容: 我需要按插入顺序设置键/值对,因此我选择使用over 。但是我需要将转换为JSON字符串,其中的顺序将保留在字符串中。 但目前,我正在通过以下方式实现这一目标: 首先将LinkedHashMap转换为JSON。 然后将JSON转换为字符串。 输出为: 但我想要按键插入的顺序来进行操作,如下所示: 一旦我将转换为JSON,它就会失去顺序(很明显JSON没有顺序的概念),因此字符串也是乱序