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.
Moduł Crescendo zawiera zestaw poleceń cmdlet, które tworzą różne typy obiektów Crescendo. Za pomocą tych poleceń cmdlet można utworzyć konfigurację Crescendo bez konieczności ręcznego edytowania pliku JSON.
Podczas projektowania Crescendo utworzyliśmy te polecenia cmdlet przed podjęciem decyzji, że tworzenie modułów i poleceń cmdlet może być lepiej obsługiwane przez podejście deklaratywne. Ich użyteczność była nadal doceniana, więc zdecydowaliśmy się wspierać oba podejścia.
Ważne
Ponieważ narzędzia deweloperskie, takie jak Visual Studio Code (VS Code), udostępniają funkcję IntelliSense na podstawie schematu JSON, tworzenie konfiguracji przez edytowanie pliku JSON jest preferowaną metodą tworzenia konfiguracji. Ten artykuł zawiera przykład użycia poleceń cmdlet.
Tworzenie konfiguracji dla dwóch poleceń cmdlet
W tym przykładzie pokazano, jak utworzyć konfigurację dla dwóch poleceń cmdlet, które zawijają narzędzie VSSAdmin.exewiersza polecenia systemu Windows. W szczególności skrypt tworzy polecenia cmdlet dla vssadmin list providersvssadmin list shadows i poleceń.
Sprawdzając pomoc dla tych dwóch poleceń, można zobaczyć, że vssadmin list providers nie przyjmuje żadnych dodatkowych parametrów, ale vssadmin list shadows ma kombinację parametrów opcjonalnych tworzących wiele zestawów parametrów.
vssadmin list providers /?
vssadmin list shadows /?
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
List Providers
- List registered volume shadow copy providers.
Example Usage: vssadmin List Providers
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
List Shadows [/For=ForVolumeSpec] [/Shadow=ShadowId|/Set=ShadowSetId]
- Displays existing shadow copies on the system. Without any options,
all shadow copies on the system are displayed ordered by shadow copy set.
Combinations of options can be used to refine the list operation.
- The Shadow Copy ID can be obtained by using the List Shadows command.
When entering a Shadow ID, it must be in
the following format:
{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
where the X's are hexadecimal characters.
Example Usage: vssadmin List Shadows
/Shadow={c5946237-af12-3f23-af80-51aadb3b20d5}
vssadmin list shadows W przypadku polecenia widać, że /For parametr jest opcjonalny i może być używany samodzielnie lub z dowolnym /Shadow z parametrów or/ShadowSetId. Daje to trzy możliwe zestawy parametrów.
Kod skryptu
Poniższy skrypt definiuje konfigurację dwóch nowych poleceń cmdlet. Komentarze w skrypcie zawierają następujący konspekt zadań:
- Tworzenie pustego obiektu konfiguracji
- Utwórz pierwsze polecenie Crescendo i ustaw jego właściwości
- Dodawanie przykładu do polecenia
- Dodawanie programu obsługi danych wyjściowych do polecenia
- Dodaj polecenie do kolekcji Commands konfiguracji
- Utwórz drugie polecenie Crescendo i ustaw jego właściwości
- Dodawanie wielu przykładów do polecenia
- Definiowanie parametrów i zestawów parametrów
- Dodawanie programu obsługi danych wyjściowych do polecenia
- Dodaj polecenie do kolekcji Commands konfiguracji
- Utwórz pierwsze polecenie Crescendo i ustaw jego właściwości
- Eksportuj konfigurację do pliku JSON i utwórz moduł
Konfiguracja zawiera odwołania do funkcji obsługi danych wyjściowych. Te funkcje znajdują się w oddzielnym pliku skryptu, który musi zostać załadowany do sesji z kropką, zanim będzie można wyeksportować konfigurację w celu utworzenia nowego modułu programu PowerShell. Aby uzyskać szczegółowe wyjaśnienie tych procedur obsługi danych wyjściowych, zobacz tę serię wpisów na blogu społeczności programu PowerShell .
# Create an empty array for Command object
$CrescendoCommands = @()
## Create first Crescendo command and set its properties
$cmdlet = @{
Verb = 'Get'
Noun = 'VssProvider'
OriginalName = '$env:Windir/system32/vssadmin.exe'
}
$newCommand = New-CrescendoCommand @cmdlet
$newCommand.OriginalCommandElements = @('list','providers')
$newCommand.Description = 'List registered volume shadow copy providers'
$newCommand.Usage = New-UsageInfo -usage $newCommand.Description
$newCommand.Platform = @('Windows')
### Add an example to the command
$example = @{
Command = 'Get-VssProvider'
Description = 'Get a list of VSS Providers'
OriginalCommand = 'vssadmin list providers'
}
$newCommand.Examples += New-ExampleInfo @example
### Add an Output Handler to the command
$handler = New-OutputHandler
$handler.ParameterSetName = 'Default'
$handler.HandlerType = 'Function'
$handler.Handler = 'ParseProvider'
$newCommand.OutputHandlers += $handler
## Add the command to the Commands collection of the configuration
$CrescendoCommands += $newCommand
## Create second Crescendo command and set its properties
$cmdlet = @{
Verb = 'Get'
Noun = 'VssShadow'
OriginalName = '$env:Windir/system32/vssadmin.exe'
}
$newCommand = New-CrescendoCommand @cmdlet
$newCommand.OriginalCommandElements = @('list','shadows')
$newCommand.Description = 'List existing volume shadow copies. Without any options, ' +
'all shadow copies on the system are displayed ordered by shadow copy set. ' +
'Combinations of options can be used to refine the output.'
$newCommand.Usage = New-UsageInfo -usage 'List existing volume shadow copies.'
$newCommand.Platform = ,'Windows'
### Add multiple examples to the command
$example = @{
Command = 'Get-VssShadow'
Description = 'Get a list of VSS shadow copies'
OriginalCommand = 'vssadmin list shadows'
}
$newCommand.Examples += New-ExampleInfo @example
$example = @{
Command = 'Get-VssShadow -For C:'
Description = 'Get a list of VSS shadow copies for volume C:'
OriginalCommand = 'vssadmin list shadows /For=C:'
}
$newCommand.Examples += New-ExampleInfo @example
$example = @{
Command = "Get-VssShadow -Shadow '{c17ebda1-5da3-4f4a-a3dc-f5920c30ed0f}"
Description = 'Get a specific shadow copy'
OriginalCommand = 'vssadmin list shadows /Shadow={3872a791-51b6-4d10-813f-64b4beb9f935}'
}
$newCommand.Examples += New-ExampleInfo @example
### Define the parameters and parameter sets
$newCommand.DefaultParameterSetName = 'Default'
#### Add a new parameter to the command
$parameter = New-ParameterInfo -OriginalName '/For=' -Name 'For'
$parameter.ParameterType = 'string'
$parameter.ParameterSetName = @('Default','ByShadowId','BySetId')
$parameter.NoGap = $true
$parameter.Description = "List the shadow copies for volume name like 'C:'"
$newCommand.Parameters += $parameter
#### Add a new parameter to the command
$parameter = New-ParameterInfo -OriginalName '/Shadow=' -Name 'Shadow'
$parameter.ParameterType = 'string'
$parameter.ParameterSetName = @('ByShadowId')
$parameter.NoGap = $true
$parameter.Mandatory = $true
$parameter.Description = "List shadow copies matching the Id in GUID format: " +
"'{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}'"
$newCommand.Parameters += $parameter
#### Add a new parameter to the command
$parameter = New-ParameterInfo -OriginalName '/Set=' -Name 'Set'
$parameter.ParameterType = 'string'
$parameter.ParameterSetName = @('BySetId')
$parameter.NoGap = $true
$parameter.Mandatory = $true
$parameter.Description = "List shadow copies matching the shadow set Id in GUID format: " +
"'{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}'"
$newCommand.Parameters += $parameter
### Add an Output Handler to the command
$handler = New-OutputHandler
$handler.ParameterSetName = 'Default'
$handler.HandlerType = 'Function'
$handler.Handler = 'ParseShadow'
$newCommand.OutputHandlers += $handler
## Add the command to the Commands collection of the configuration
$CrescendoCommands += $newCommand
# Export the configuration to a JSON file and create the module
Export-CrescendoCommand -command $CrescendoCommands -fileName .\vssadmin.json
Export-CrescendoModule -ConfigurationFile vssadmin.json -ModuleName .\vssadmin.psm1 -Force
Zaawansowane przypadki użycia
Polecenia cmdlet Crescendo to zaawansowane narzędzia, których można używać w zaawansowanych scenariuszach do tworzenia konfiguracji i kompilowania modułów. W folderze modułu Microsoft.PowerShell.Crescendo znajduje się Experimental\HelpParsers kilka zaawansowanych przykładów. Te eksperymentalne przykłady pokazują, jak można przeanalizować dane wyjściowe pomocy narzędzia wiersza polecenia i użyć tych informacji do utworzenia konfiguracji Crescendo dla modułu, który opakowuje narzędzie. Plik README.md zawiera szczegółowe wyjaśnienie konstrukcji tych analizatorów składni pomocy.
Możesz użyć tych analizatorów pomocy w potoku ciągłej integracji/ciągłego wdrażania, aby utworzyć nowe wersje modułu, gdy zmieni się narzędzie wiersza polecenia.