Я пытаюсь запустить скрипт PowerShell из командного файла Windows. Это связанный с SharePoint сценарий, который использует Import-SPData .

Это работает без каких-либо проблем при использовании имени пользователя USERA . Однако, если я пытаюсь запустить тот же пакетный файл из имени пользователя USERB , я получаю ошибку ниже:

c:\PS>ExecMyPowershellScript.bat

c:\PS>C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -psconsolefile "
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\CONFIG\P
OWERSHELL\Registration\psconsole.psc1" -command "c:\ps\MyPSScript.ps1"

The local farm is not accessible. Cmdlets with FeatureDependencyId are not regis
tered.
Import-SPData : Cannot access the local farm. Verify that the local farm is pro
perly configured, currently available, and that you have the appropriate permis
sions to access the database before trying again.
At C:\ps\Run_MyPSScript.ps1:5 char:18

...

Я удостоверился, что у USERB есть разрешения на bat и файлы ps1 .

Я использую PowerShell версии 2 и SharePoint Server 2010

2 ответа2

1

Sharepoint - зверь, с которым приходится иметь дело. Я бы сказал, что UserB не имеет надлежащих разрешений sharepoint и / или доступа к базе данных контента.

Я бы сравнил разрешение для UserA и UserB на уровне Windows, Sharepoint и DB, чтобы найти различия.

0

Хорошо, мне удалось заставить это работать.

По словам Microsoft:

Чтобы использовать Windows PowerShell для продуктов SharePoint 2010, пользователь должен быть членом роли SharePoint_Shell_Access в базе данных конфигурации и членом локальной группы WSS_ADMIN_WPG на компьютере, на котором установлены продукты SharePoint 2010.

http://technet.microsoft.com/en-us/library/ff607596%28v=office.14%29.aspx

Сделать это:

  • Откройте оболочку управления SharePoint (запускайте от имени администратора, если у вас активирован контроль учетных записей)
  • Добавьте роль SharePoint_Shell_Access в USERB для базы данных конфигурации SharePoint.

Для этого можно использовать следующий код PowerShell:

$dbs = Get-SPDatabase; foreach($d in $dbs) {If($d.name.contains("SharePoint_Config")){Add-SPShellAdmin "domain\USERB" -database $d}}
  • Убедитесь, что семейство сайтов SharePoint и библиотека / список документов (если есть) также имеют соответствующие разрешения для USERB

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .