Ich bin kein großer Scripter, und ich bin in der Übersetzung verloren ... vielleicht ist dies völlig falsch ... ich tuePowershell - Benutzerwahl aus der Liste der von Januar bis Dezember
Ich bin Erstellen eines Skripts und ich möchte, dass der Benutzer aus einer Liste von Auswahlmöglichkeiten auswählt, insbesondere den Monat des Jahres. Dieses Ergebnis wird später im Skript verwendet.
Hier ist der Code-Schnipsel:
$optionQuit = New-Object System.Management.Automation.Host.ChoiceDescription "Quit", "Quit"
$option1 = New-Object System.Management.Automation.Host.ChoiceDescription "01-January", "01-January OU"
$option2 = New-Object System.Management.Automation.Host.ChoiceDescription "02-February", "02-February OU"
$option3 = New-Object System.Management.Automation.Host.ChoiceDescription "03-March", "03-March OU"
$option4 = New-Object System.Management.Automation.Host.ChoiceDescription "04-April", "04-April OU"
$option5 = New-Object System.Management.Automation.Host.ChoiceDescription "05-May", "05-May OU"
$option6 = New-Object System.Management.Automation.Host.ChoiceDescription "06-June", "06-June OU"
$option7 = New-Object System.Management.Automation.Host.ChoiceDescription "07-July", "07-July OU"
$option8 = New-Object System.Management.Automation.Host.ChoiceDescription "08-August", "08-August OU"
$option9 = New-Object System.Management.Automation.Host.ChoiceDescription "09-September", "09-September OU"
$option10 = New-Object System.Management.Automation.Host.ChoiceDescription "10-October", "10-October OU"
$option11 = New-Object System.Management.Automation.Host.ChoiceDescription "11-November", "11-November OU"
$option12 = New-Object System.Management.Automation.Host.ChoiceDescription "12-December", "12-December OU"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($optionQuit, $option1, $option2, $option3, $option4. $option5, $option6, $option7, $option8, $option9, $option10, $option11, $option12)
$result = $host.ui.PromptForChoice($title, $message, $options, [int[]](0))
Allerdings halte ich erhalte eine Fehlermeldung:
ERROR: Exception calling "PromptForChoice" with "4" argument(s): "Object reference not set to an instance of an object." TestingMenu.ps1 (31, 1): ERROR: At Line: 31 char: 1 ERROR: + $result = $host.ui.PromptForChoice($title, $message, $options, [int[] ... ERROR: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ERROR: + CategoryInfo : NotSpecified: (:) [], MethodInvocationException ERROR: + FullyQualifiedErrorId : NullReferenceException ERROR:
Ich bin mir nicht sicher, was ich vermisse ... und ich dies wahrscheinlich machen komplizierter als nötig sein ... aber die Endvariable $ result sollte etwa so aussehen wie "04-April".
Irgendeine Idee, was ich hier vermisse?
Hat Sie sollten eine 'Collection', kein Array senden. Ihre 'ChoiceDescription []' ist ein Array. Werfen Sie einen Blick auf das Beispiel auf MSDN [hier] (https://msdn.microsoft.com/en-us/library/system.management.automation.host.pshostuserinterface.promptforchoice (v = vs.85) .aspx) – gravity
Bei so vielen Auswahlen könnten Sie Ihren Code so umgestalten, dass etwas wie folgt aussieht: $ result = $ options | Out-GridView -Title "Wählen Sie ein Element" -OutputMode Single gibt Ihnen das gewünschte Verhalten. –
@gravity Array kann implizit in 'Collection' konvertiert werden, weil' Collection' [dieses Konstruktor] (https://msdn.microsoft.com/en-us/library/ms132401.aspx) und ein Zero-basiertes Array mit einer Dimension enthält Implementieren der generischen Version von 'IList'. – PetSerAl