Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Istnieje wiele scenariuszy, w których wartości wejściowe przekazane do zawiniętego polecenia Crescendo muszą zostać przetłumaczone na inny format dla bazowego polecenia natywnego. Crescendo 1.1 dodał dwa nowe elementy członkowskie do klasy parametrów Handler i HandlerType.
Wartość ArgumentTransformType określa, w jaki sposób wartość ArgumentTransform jest interpretowana.
Musi to być jedna z następujących wartości:
-
Inline— wartośćArgumentTransformjest ciągiem, który ma zostać oceniony jako blok skryptu. Jest to wartość domyślna, gdy nie określono żadnej wartości. -
Function— wartośćArgumentTransformjest nazwą funkcji załadowanej w bieżącej sesji. -
Script— wartośćArgumentTransformto nazwa pliku skryptu znalezionego na dysku.
W tym przykładzie polecenie natywne oczekuje rozdzielanej przecinkami listy wartości parametru --p2. Parametr polecenia cmdlet, ValueList, jest tablicą ciągów. Crescendo przekazuje $ValueList do blokady skryptu w ArgumentTransform jako tablicy ciągów. Scriptblock łączy wartości w tablicy z przecinkiem i zwraca wynik.
"Parameters": [
{
"Name": "ValueList",
"OriginalName": "--p2",
"ParameterType": "string[]",
"OriginalPosition": 1,
"ArgumentTransform": "param([string[]]$v) $v -join ','"
}
]
Przykład — dodawanie zmiennych środowiskowych do obrazu platformy Docker
Poniższa konfiguracja crescendo definiuje polecenie cmdlet Start-DockerRun, które opakowuje polecenie docker run. Parametr Environment to tabela skrótu zawierająca pary klucz-wartość, które należy przekształcić w argumenty dla parametru --env polecenia docker run. Podczas definiowania wielu zmiennych środowiskowych polecenia docker run oczekuje wystąpienia --env key=value dla każdej zmiennej. Nie jest to możliwe bez używania przekształcenia argumentu.
{
"$schema": "https://aka.ms/PowerShell/Crescendo/Schemas/2022-06",
"Commands": [
{
"Verb": "Start",
"Noun": "DockerRun",
"OriginalName": "docker",
"OriginalCommandElements": [
"run",
"--rm",
"-it"
],
"Parameters": [
{
"Name": "Environment",
"OriginalName": "",
"ParameterType": "Hashtable",
"OriginalPosition": 0,
"ArgumentTransform": "param([Hashtable]$v) $v.Keys|Foreach-Object {''--env''; ''{0}={1}'' -f $_, $v[$_]}"
},
{
"Name": "Image",
"OriginalName": "",
"ParameterType": "string",
"DefaultValue": "ubuntu:latest",
"OriginalPosition": 10
}
],
"OutputHandlers": [
{
"ParameterSetName": "Default",
"HandlerType": "ByPass"
}
]
}
]
}
Transformator argumentów zwraca --env key=value dla każdej pary klucz-wartość w tabeli skrótu.
Przykład — konwertowanie obiektu PSCredential na nazwę użytkownika i hasło
W tym przykładzie konfiguracja crescendo definiuje polecenie cmdlet Connect-WindowsShare, które opakowuje polecenie net use. Parametr Credential jest obiektem PSCredential, który musi zostać przekonwertowany na nazwę użytkownika i hasło dla polecenia net use.
{
"$schema": "https://aka.ms/PowerShell/Crescendo/Schemas/2022-06",
"Commands": [
{
"Verb": "Connect",
"Noun": "WindowsShare",
"OriginalName": "NET.exe",
"Platform": [
"Windows"
],
"OriginalCommandElements": [ "USE" ],
"Parameters": [
{
"Name": "DriveName",
"OriginalName": "",
"DefaultValue": "*",
"ParameterType": "string",
"OriginalPosition": 0
},
{
"Name": "Share",
"OriginalName": "",
"Mandatory": true,
"OriginalPosition": 1,
"ParameterType": "string"
},
{
"Name": "Credential",
"OriginalName": "",
"ParameterType": "PSCredential",
"Mandatory": true,
"OriginalPosition": 10,
"ArgumentTransform": "\"/USER:$($Credential.UserName)\";$Credential.GetNetworkCredential().Password",
"ArgumentTransformType": "Inline"
}
]
}
]
}
Transformator argumentu konwertuje obiekt PSCredential na /USER:username password dla polecenia net use.