2017-10-19 3 views
0

Alle,Powershell-Funktion als Parameter in der Funktion

ich auf eine Funktion arbeite, und in der Funktion würde Ich mag eine andere Funktion verwenden, die ich als Parameter erstellt haben. Für unten möchte ich eine Kalenderauswahl, die ich erstellt habe (Select-Date) als eine Eingabeaufforderung aufrufen, nachdem Sie die Funktion Add-TempLocalAdmin ausgeführt haben. Gibt es einen besseren Weg, dies zu tun? Sollte ich einfach die Datumsauswahl aus den Parametern herausnehmen und sie unten im Begin-Block (nicht gezeigt) aufrufen? Wenn dies der richtige Weg ist, wie kann ich den Select-Date-Parameter verfügbar machen?

function Add-TempLocalAdmin { 
[CmdletBinding()] 
param(
    [Parameter(Position=0, ValueFromPipeline=$true, Mandatory=$true)] 
    [string[]]$ComputerName, 
    [Parameter(Position=1, Mandatory=$true)] 
    [string]$Trustee, 
    [Parameter(Mandatory=$true)] 
    [string]$Requester, 
    [Parameter(Mandatory=$true)] 
    [string]$ServiceNowCR, 
    [Parameter(Mandatory=$true)] 
    [datetime]$StartDate = Select-Date, 
    [Parameter(Mandatory=$true)] 
    [datetime]$EndDate = Select-Date, 
    [Parameter(Mandatory=$true)] 
    [string]$Grantor = $env:USERNAME 
    ) 
Write-Host $ComputerName $Trustee $Requester $ServiceNowCR $StartDate $EndDate $grantor 
} 

Antwort

1

Wenn Sie sagen, dass der Parameter zwingend vorgeschrieben ist, dann wird Powershell den Benutzer auf, den Wert des Parameters veranlassen, wenn der Benutzer es unterlässt.

Sie können eine Funktion als Standardwert für einen Parameter aufrufen. Wenn der Benutzer einen Wert für den Parameter auslässt, können Sie die Funktion ausführen. Sie können das tun dies wie:

[DateTime] $MyDate=$(Select-Date) 

(?. Welchen Wert zurückgegeben wird, wenn der Benutzer die Auswahl abgebrochen Sie werden mit dieser Eventualität in Ihrem Code zu tun haben) nicht erklären, es als zwingend in diesem Fall.

Benötigen Sie wirklich eine Select-Date Funktion? Wenn Sie ein Datum für einen Parameter benötigen, deklarieren Sie als obligatorisch [DateTime] - der Benutzer muss ein Datum für den Parameter angeben oder die Funktion wird nicht ausgeführt.

+0

Die Select-Date-Funktion ist ein kleines GUI, das ich erstellt habe, um einen Kalender zu öffnen. Ich habe gerade versucht mit [DateTime] und das scheint gut zu funktionieren. Ich war mir nicht sicher, wie dieser Parameter das Datum bestätigt hätte, aber es sieht so aus, als könnte ich einfach "11/7" eingeben und es wird zu einem Datum von Mitternacht am 11/7 gerendert. Danke für Ihre Hilfe! Das ist eine viel einfachere Implementierung. – Acerbity