Connect-PnPOnline - не найден позиционный параметр, который принимает аргумент 'System.Management.Automation.PSCredential - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь подключиться к сайту sharepoint из задания PowerShell, запущенного в Azure Службе приложений, при каждом подключении оно выдает следующую ошибку:

Authentication failed: A positional parameter cannot be found that accepts argument 'System.Management.Automation.PSCredential'.

При просмотре в Исходный код для метода Connect-PnPOnline для позиционного параметра -Credentials ожидает CredentialPipeBind, который является классом publi c запечатанным классом CredentialPipeBind

Класс выглядит так, как будто он предназначен для переключения между учетными данными из windows диспетчера учетных данных или объектом учетных данных powershell. Задание Azure может хотеть получить литеральный тип из позиционного параметра? Я попытался дать ему

Function Set-SpsConnection ($url, $creds) {
    $crpb = [SharePointPnP.PowerShell.Commands.Base.PipeBinds.CredentialPipeBind]::new($creds)
    Connect-PnPOnline –Url $sharepointurl –Credentials $crpb
}

Но безрезультатно, теперь он думает, что я использую SharePointPnP.PowerShell.Commands.Base.PipeBinds.CredentialPipeBind вместо CredentialPipeBind, может быть, я могу как-то ссылаться на сборку, чтобы мне не пришлось указать?

Кажется, проблема возникает только тогда, когда она запускается заданием или я запускаю сценарий в консоли Kudu с помощью. \ scriptname.ps1, когда я выполняю код в консоли Kudu. Скопируйте и вставьте его кажется, работает нормально ...

По моему мнению, это просто неотъемлемый недостаток в azure системе заданий, что она будет интерпретировать только литеральные типы, а не работать так же, как на клиенте.

1 Ответ

0 голосов
/ 02 марта 2020

Согласно моим исследованиям, если вы хотите подключиться к сайту sharepoint с помощью учетных данных в PowerShell, параметр Credentials должен быть объектом PSCredential или строкой (учетные данные имени сертификата из Windows Диспетчер учетных данных). Для получения более подробной информации, пожалуйста, обратитесь к статье , выпуску и документу enter image description here

Например

$name = "username"
$password = "password"
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ($name, $secpasswd)
Connect-PnPOnline -Url https://hanxia.sharepoint.com/ -Credentials $mycreds
Get-PnPList

enter image description here


обновление

Согласно моему тесту, мы можем запустить скрипт в Azure веб-задании

  1. Обновите модуль до Azure vai kuduo enter image description here enter image description here

  2. Создать веб-работу. Мой сценарий, как показано ниже

$ProgressPreference="SilentlyContinue"
Import-Module '<the path of your module>\SharePointPnPPowerShellOnline' -DisableNameChecking
$name = "username"
$password = "password"
$secpasswd = ConvertTo-SecureString $password -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ($name, $secpasswd)
Connect-PnPOnline -Url https://<>.sharepoint.com/ -Credentials $mycreds

Get-PnPList

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...