meine Ignoranz Vergib - Ich versuche, ein Powershell-Cmdlets zu schreiben, die Eingabe Benutzer nimmt und erstellt eine Abfrage uri an eine API (eine obligatorische, 3 entscheidet sich) - Ich habe bekam Art die allgemeine Idee dass ich Hash-Tabellen für das Wörterbuch von Abfragezeichenfolgen und Parametern verwenden muss.Powershell URI-Builder für ein Sys-Admin
Ich versuche $baseurl + $querystring + '=' + $parameter + '&' + $querystring + '=' $value (if not null)
zu bauen z.B. https://example.com/api?param1=value¶m2=value
bisher - und das ist sehr rau, und die Arbeit nicht vollständig:
Function Get-commonURI{ #takes 4 params from user
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String[]]$value1
[Parameter(Mandatory=$false,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[String[]]$value2,
[String[]]$value3,
[String[]]$value4
) #end param
}
#put the input into a paramter hash table with the query strings
$Parameters = @{
query = 'querysting1', 'querystring2', 'querystring3', 'querystring4'
values = $value1,$value2.$value2, $value4
}
uri = https://example.com/api?
$HttpValueCollection = [System.Web.HttpUtility]::ParseQueryString([String]::Empty)
foreach ($Item in $Parameters.GetEnumerator()) {
#I want to append each query passed in on the cli
foreach ($Value in $Item.Value) {
$ParameterName = $Item.value
$HttpValueCollection.Add($ParameterName, $Value)}
$Request = [System.UriBuilder]($Uri)
$Request.Query = $HttpValueCollection.ToString()
invoke-webrequest $Request.Uri
}
Ich habe so etwas geschrieben, aber es funktioniert nicht - bin ich noch auf dem richtigen Weg hier? - Ich bin mir sicher, dass dies schon eine Million Mal gemacht wurde, aber ich weiß nicht einmal, was ich googlen soll - etwas sagt mir, dass ich die Hash-Tabelle nicht mit Variablen einrichten sollte. danke fürs schauen.
Hallo, Ihr Code läuft nicht als as_is_, und ist nicht gut eingerückt, so dass es schwer zu lesen und zu verstehen ist. Können Sie bitte versuchen, es ein wenig zu beheben? Zum Beispiel denke ich, dass die erste schließende geschweifte Klammer fehlplatziert ist, weil sie den Funktionsdeklarationsblock beendet. Ich fürchte, ich werde deine Logik brechen, wenn ich versuche, Dinge zu ändern. Wenn Sie Benutzereingaben machen wollen, können Sie auch versuchen mit: '$ userValue1 = Read-Host" geben Sie den ersten Wert ein "' zum Beispiel. – sodawillow
danke sodawillow, ich versuche nur, eine Idee zu bekommen, wie man den Abfrage-String mit Hash-Tabelle erstellen - nicht wirklich nach Code per se suchen, ich möchte es als ein Cmdlet erstellen, so dass Benutzer die Parameter Tabs anstatt sein können aufgefordert, so 'Get-commonURI -param1 value' und 'get-commonURI -param1 value param2 value' das cmdlet sollte die richtige uri bauen – Sum1sAdmin