2017-10-19 3 views
0

Tous,fonction PowerShell en tant que paramètre dans la fonction

Je travaille sur une fonction, et dans la fonction que je voudrais utiliser une autre fonction que j'ai créé en tant que paramètre. Pour ci-dessous, je voudrais afficher un sélecteur de calendrier que j'ai créé (Select-Date) comme une invite après avoir exécuté la fonction Add-TempLocalAdmin. Y a-t-il une meilleure manière de faire cela? Devrais-je prendre la sélection de la date hors des paramètres et l'appeler ci-dessous dans le bloc Begin (non montré)? Si c'est la bonne façon, comment rendre le paramètre Select-Date disponible?

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 
} 

Répondre

1

Si vous dites que le paramètre est obligatoire, PowerShell demandera à l'utilisateur pour la valeur du paramètre si l'utilisateur l'omet.

Vous pouvez appeler une fonction comme valeur par défaut pour un paramètre. Si l'utilisateur omet une valeur pour le paramètre, vous pouvez exécuter la fonction. Vous pouvez le faire comme ceci:

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

(?. Quelle valeur est renvoyée si l'utilisateur annule la sélection Vous devrez faire face à cette éventualité dans votre code) Ne pas déclarer comme obligatoire dans ce cas.

Avez-vous vraiment besoin d'une fonction Select-Date? Si vous avez besoin d'une date pour un paramètre, déclarez-le comme [DateTime] obligatoire - l'utilisateur devra fournir une date pour le paramètre, sinon la fonction ne sera pas exécutée.

+0

La fonction Select-Date est une petite interface que j'ai créée pour faire apparaître un calendrier. J'ai juste essayé d'utiliser [DateTime] et cela semble fonctionner correctement. Je ne savais pas comment ce paramètre aurait validé la date, mais il me semble que je peux juste taper "11/7" et il le rend à une heure de minuit le 11/7. Merci de votre aide! C'est une implémentation beaucoup plus simple. – Acerbity