Как я могу передать разделенный запятыми список значений в 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'}