0

Мне нужно установить права доступа удаленного доступа из сценария Powershell 4. Я просмотрел this page, в частности команду Grant-SmbShareAccess, но этот командлет устанавливает разрешения для локальных общих ресурсов, мне бы хотелось увидеть параметр -ComputerName, но, увы, его нет.Как установить права доступа на удаленную папку с помощью Powershell?

Я хочу сделать что-то вроде: Grant-SmbShareAccess -ComputerName MYREMOTESERVER -Name <share_name> -AccountName <domain_account> -AccessRight Full

Любые идеи о том, как это сделать? Мой удаленный сервер может быть Windows Server или NetApp vFiler.

EDIT

Я попытался предложение Мэтта Invoke-Command в комментариях против NetApp vFiler и получил эту ошибку:

Connecting to remote server MYREMOTESERVER failed with the following error message : The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".

Изменение безопасности доли в Windows Explorer, работает отлично.

+0

Возможно 'Invoke-command' является то, что вы ищете. Дополнительная информация [здесь] (http://technet.microsoft.com/en-us/library/hh849719.aspx) – Matt

+0

@Matt Если бы я имел дело только с удаленными серверами Windows, я бы посмотрел на это, но если удаленный общий ресурс размещен на NetApp vFiler, я не думаю, что это сработает, потому что это зависит от удаленности. –

+0

Вы пытались просто передать имя сервера вместе с общим именем? Что-то вроде: 'Grant-SmbShareAccess -Name \\ MYREMOTESERVER \ SHARENAME -AccountName USERACCOUNT -AccessRight Full' – CitizenRon

ответ

0

Grant-SmbShareAccess - это команда CDXML, что означает, что она использует CIM. Как вы уже заметили, он должен работать только в системе Windows, работающей как минимум на PSv3 (в этом случае класс WMI используется только в Windows 8 и Server 2012 или выше).

Там могут быть и другие способы сделать это на сервере, не Windows, но я хотел бы попробовать PowerShell Access Control Module:

$SharePath = "\\ServerName\ShareName" 
$Principal = <account name here> 

# Add permission to $Principal (-Force will suppress the prompt) 
Get-SecurityDescriptor -Path $SharePath -ObjectType LMShare | 
    Add-AccessControlEntry -Principal $Principal -LogicalShareRights FullControl -Apply #-Force 

# Verify: 
Get-SecurityDescriptor -Path $SharePath -ObjectType LMShare | 
    Get-AccessControlEntry 

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

+0

Спасибо, есть ли какой-либо способ без использования этого модуля? Я пытаюсь сделать это, используя набор инструментов по умолчанию на Windows Server. –

+0

Может быть, но я не знаю ни одного. Работает ли модуль? Если это так, я могу изменить ответ, чтобы включить гораздо более короткий скрипт PowerShell, который включает в себя только подписи P/Invoke и PS /.NET код, необходимый для его работы (не требуется модуль). –

0

Для общих ресурсов ОС Windows Server используйте параметр -CimSession.

Для общих ресурсов SMB для Windows я не ожидал, что командлеты администрирования SMB Windows будут работать с ними.

0

Инструментарий Netapp Powershell поможет в этом. После установки вы можете импортировать модуль в свой скрипт и управлять своими акциями. Вот грубый пример, который подключается к файлер, запрашивает имя_общего_ресурс, затем настраивает эту долю с правами некоторых по умолчанию:

# Import the Netapp Powershell Module 
import-module dataontap 

# Connect to the filer 
connect-nacontroller *filername* 

# Get the sharename 
$sharename = Read-Host -Prompt 'Enter the share you want to configure' 

# Configure the CIFS Permissions 
Set-NaCifsShareAcl $sharename "Authenticated users" -AccessRights "Change" 
Set-NaCifsShareAcl $sharename filername\administrators -AccessRights "Full Control" 
Set-NaCifsShareAcl $sharename domain\somegroup -AccessRights "Full Control" 
Remove-NaCifsShareAcl $sharename everyone 
Смежные вопросы