Как я могу передать разделенный запятыми список значений в PowerShell в качестве параметра в CmdLet с использованием сплаттинга с хэш-таблицами?

Я хотел бы использовать "splatting" с хеш-таблицами для передачи переменных параметров в CmdLet. Я хочу изменить следующую команду:

New-SmbShare -Name Share$ -Path C:\Folder -ChangeAccess MACHINE\User1

Если я делаю это только для ChangeAccess Параметр, я получаю следующий результат:

$Args = @{ChangeAccess = 'MACHINE\User1'}
New-SmbShare -Name Share$ -Path C:\Folder @Args

Это работает очень хорошо.

Параметр ChangeAcces принимает список пользователей, разделенных запятыми, поэтому, если я хочу дать двум пользователям разрешение на изменение общего ресурса, я бы использовал следующую команду:

New-SmbShare -Name Share$ -Path C:\Folder -ChangeAccess MACHINE\User1,MACHINE\User2

Если я заменю эту команду таким же образом, как и сплаттинг, я получу следующее:

$Args = @{ChangeAccess = 'MACHINE\User1,MACHINE\User2'}
New-SmbShare -Name Share$ -Path C:\Folder @Args

Теперь команда завершается с "CimException". Любые идеи, как я могу решить это?

1 ответ

Решение

Параметр -ChangeAccess <string[]> принимает строку или массив строк. Вот почему это терпит неудачу с ChangeAccess = 'MACHINE\User1,MACHINE\User2' Он видит всю строку как одного пользователя, вам нужно использовать параметр массива для нескольких пользователей:

$Args = @{ChangeAccess = 'MACHINE\User1','MACHINE\User2'}
Другие вопросы по тегам