Дайте параметру $ACL
значение по умолчанию, и вы можете избежать передачи начальной пустой хеш-таблицы:
function Set-HashTable {
Param(
[String]$Identity,
[String]$Access,
[Hashtable]$ACL = @{}
)
$ACL.Add($Identity, $Access)
return $ACL
}
$acl = Set-HashTable -Identity 'Domain\jdoe' -Access 'Change, Submit, GetPassword'
$acl = Set-HashTable -Identity 'Domain\ssmith' -Access 'Change, Submit, GetPassword' -ACL $acl
$acl = Set-HashTable -Identity 'Domain\msmith' -Access 'Submit' -ACL $acl
С учетом вышесказанного я не вижу преимущества инкапсуляции такой операции, как добавление ключа /пары значений для хеш-таблицы в функции.Делать это напрямую гораздо проще, например:
$acl = @{}
$acl.Add('Domain\jdoe', 'Change, Submit, GetPassword')
$acl.Add('Domain\ssmith', 'Change, Submit, GetPassword')
$acl.Add('Domain\msmith', 'Submit')
или вот так:
$acl = @{}
$acl['Domain\jdoe'] = 'Change, Submit, GetPassword'
$acl['Domain\ssmith'] = 'Change, Submit, GetPassword'
$acl['Domain\msmith'] = 'Submit'