J'ai cette applet de commande: (dépouillée)Piping à une applet de commande avec plusieurs paramètres
[CmdletBinding()]
Function Add-DatabaseUser()
{
Param([string]$LogonName, [string]$UserName, [switch]$FullAccess)
Write-Output($LogonName)
Write-Output($UserName)
Write-Output($FullAccess)
}
Est-il possible de tuyau quelque chose comme un tableau de tableaux à cette applet de commande comme ceci:
$users = @(
@('user1', 'user1', $true),
@('user2', 'user2', $false),
@('user3', 'user4', $true),
@('user4', 'user4', $true)
)
$users | Add-DatabaseUser
Plutôt que de faire 4 appels individuels à l'applet de commande?
Add-DatabaseUser 'user1' 'user1' $true
Add-DatabaseUser 'user2' 'user2' $false
# etc.
Mise à jour:
J'ai suivi des conseils Richards et a créé quelque chose pour tester l'entrée redirigée, mais quelque chose ne va pas. Code ci-dessous: (je l'ai ajouté ValueFromPipelineByPropertyName = true
à tous les paramètres de l'applet de commande)
$users = @(
@{LogonName='user1'; UserName='user1'; FullAccess=$false},
@{LogonName='user2'; UserName='user2'; FullAccess=$false}
)
$users | Add-DatabaseUser
Cela donne le résultat suivant:
System.Collections.HashTable
System.Collections.HashTable
True
System.Collections.HashTable
System.Collections.HashTable
False
Alors devrais-je utiliser un tableau de hachages plutôt qu'un tableau de tableaux dans ce cas? – Jake
@Jake: Oui, vous auriez besoin de faire cela. Vous pouvez configurer un paramètre pour accepter un tableau, mais cela sera moins clair pour l'appelant ou l'appelé. – Richard
Je vais essayer. Je vais mettre à jour dans environ 10 minutes. – Jake