Я пытаюсь параметризовать сценарий powershell. Единственная проблема заключается в том, что по какой-то причине, когда я вызываю метод invoke-restmode с -uri $ url, он, кажется, задыхается. На самом деле везде я пытаюсь использовать это, это задыхается. Я считаю, что, возможно, я попытаюсь сделать это неправильно. Есть ли лучший или более прямой способ выполнить параметризацию этого скрипта.String Building Issue in Powershell
#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. Path '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 $ HeaderW ... + ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest: HttpWebRequest) [Invoke-RestMethod], WebException + FullyQualifiedErrorId: WebCmdletWebResponseException, Microsoft.PowerShell.Commands.InvokeRestMethodCommand
Возможно, методы REST слишком длинные для выполнения, поэтому ваш клиент Powershell ждет возврата REST API. – Vesper
@Vesper Ошибка, с которой я получаю звуки, больше похоже на то, что мне не нравится то, что я положил в uri. – DeadlyChambers
Отлаживаем скрипт и прерываем его. Дамп параметра '$ url' и посмотрите, что такое строка * на самом деле *. –