0
我有此cmdlet:(剝離下來)管道具有多個參數的小命令
[CmdletBinding()]
Function Add-DatabaseUser()
{
Param([string]$LogonName, [string]$UserName, [switch]$FullAccess)
Write-Output($LogonName)
Write-Output($UserName)
Write-Output($FullAccess)
}
是否有可能管像一個數組的數組給此cmdlet這樣的:
$users = @(
@('user1', 'user1', $true),
@('user2', 'user2', $false),
@('user3', 'user4', $true),
@('user4', 'user4', $true)
)
$users | Add-DatabaseUser
而不是對cmdlet進行4次單獨調用?
Add-DatabaseUser 'user1' 'user1' $true
Add-DatabaseUser 'user2' 'user2' $false
# etc.
更新:
我已經按照理查茲的建議創建了一些測試管道輸入,但事情是不對的。下面的代碼:(我已經添加ValueFromPipelineByPropertyName = true
所有參數在cmdlet)
$users = @(
@{LogonName='user1'; UserName='user1'; FullAccess=$false},
@{LogonName='user2'; UserName='user2'; FullAccess=$false}
)
$users | Add-DatabaseUser
這給出了以下的輸出:
System.Collections.HashTable
System.Collections.HashTable
True
System.Collections.HashTable
System.Collections.HashTable
False
因此,在這種情況下,我必須使用散列數組而不是數組數組嗎? – Jake
@Jake:是的,你需要這樣做。你可以設置一個參數來接受一個數組,但是對於調用者或者被調用者來說這個不太清楚。 – Richard
我會試試看。我會在10分鐘內更新它。 – Jake