powershell 스크립트를 실행하고 asp.net 사이트로 출력하려고합니다. 나는 내가 asp.net 사이트에서 powershell 스크립트 실행
을 예상하지만 스크립트를 사용할 때 실제로 정보를 원하는 내 사이트 모두에 스크립트의 유일한 명령은Get-Service | Out-String
이었다 매우 간단한 스크립트와이 출력 작업을 만들었습니다 그것으로부터 아무것도 출력하지 않는다 내 사이트가 스크립트를 호출하는 코드에 부딪 힐 때 약 10 초가 걸리기 때문에 실행 (또는 실행을 시도) 할 수 있다고 말할 수 있습니다.
내가 실행하려고 스크립트는
$user = "user"
$token = "token"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$result = Invoke-WebRequest -Method Get -Uri 'https://site.vsrm.visualstudio.com/defaultcollection/product/_apis/release/releases?definitionId=1&api-version=3.0-preview.2&$expand=environments' -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$releaseArr = $result.Content | ConvertFrom-Json
[System.Collections.ArrayList]$enviromentName = @()
[System.Collections.ArrayList]$latestRelease = @()
foreach($env in $releaseArr.value[0].environments)
{
$enviromentName.Add($env.name) | Out-Null
}
foreach($releaseValue in $releaseArr.value)
{
For($i = 0; $i -lt $enviromentName.Count; $i++)
{
if($latestRelease[$i] -eq $null)
{
foreach($release in $releaseValue.environments)
{
if($release.name -eq $enviromentName[$i] -and $release.status -eq "succeeded")
{
$latestRelease.Add($releaseValue.name) | Out-Null
}
}
}
}
}
For($i = 0; $i -lt $enviromentName.Count; $i++)
{
Write-Host $enviromentName[$i] " : " $latestRelease[$i]
}
나는이 스크립트를 실행하고 출력을 알고,하지만 거기는 제대로가 출력되지 야기이 스크립트의 일부 코드이다.
나는 스크립트를 호출하기 위해 사용하고 내 asp.net 사이트의 코드는
ResultBox.Text = string.Empty;
// Initialize PowerShell engine
var shell = PowerShell.Create();
// Add the script to the PowerShell object
shell.Commands.AddScript(@"C:\Users\user\Desktop\script.ps1");
// Execute the script
var results = shell.Invoke();
// display results, with BaseObject converted to string
// Note : use |out-string for console-like output
if (results.Count > 0)
{
// We use a string builder ton create our result text
var builder = new StringBuilder();
foreach (var psObject in results)
{
// Convert the Base Object to a string and append it to the string builder.
// Add \r\n for line breaks
builder.Append(psObject.BaseObject.ToString() + "\r\n");
}
// Encode the string in HTML (prevent security issue with 'dangerous' caracters like < >
ResultBox.Text = Server.HtmlEncode(builder.ToString());
}
PowerShell을 사용하여 웹 사이트에서 API를 호출하는 이유는 무엇입니까? 응용 프로그램에서 직접 REST 메서드를 호출 할 수 있습니다. –
이미이 스크립트를 만들었으므로 기존 스크립트를 다시 만들지 않고 기존 스크립트를 사용할 수있는 방법을 찾고있었습니다 – Nick
이 패키지를 고려해 볼 것을 권장합니다 https://www.nuget.org/packages/Microsoft.VisualStudio.Services 클라이언트./쉽지. –