Как установить модуль SharePoint PowerShell внутри C # для приложения-функции Azure - PullRequest
0 голосов
/ 25 января 2019

Просто чтобы управлять ожиданиями, я новичок в PowerShell и функциях Azure.

Поскольку Azure Functions 2.x больше не поддерживает PowerShell, поэтому я пытаюсь запустить свои скрипты PowerShell, для которых требуются модули SPO из C # (код ниже). У меня возникают проблемы с запуском приложения-функции Azure, поскольку для скриптов PowerShell нужны модули SPO. Кто-нибудь, кто знает, как установить необходимые модули в C # PowerShell Instance, например Runspace или что-то подобное? Я даже на правильном пути здесь? Любые комментарии высоко ценятся. Спасибо всем.

Пример кода:

 [FunctionName("TestFunction")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
        {
            using (PowerShell PowerShellInstance = PowerShell.Create())
            {
                var script = @"
Install-Module Microsoft.Online.SharePoint.PowerShell
Install-Module SharePointPnPPowerShellOnline

$url = '<SharePoint Url>'

$ListName = '<List Name>'

Connect-PnPOnline -Url $url -UseWebLogin 

$Fields = Get-PnPField -List $ListName  
$Items= Get-PnPListItem -List $ListName -PageSize 5000

$RowCtr = 1;

foreach($item in $items.FieldValues)
{
    #do something
    $RowCtr++;
}
";

                PowerShellInstance.AddScript(script);

                var results = PowerShellInstance.Invoke();
                //some other codes
        }
    }

Ответы [ 2 ]

0 голосов
/ 30 января 2019

После того, как вы загрузите свои модули через полезную нагрузку или Kudo, ваш скрипт должен работать с несколькими модификациями.Модули можно напрямую загрузить из https://www.powershellgallery.com/ с помощью Save-Module.После этого ваш скрипт должен работать с несколькими модификациями.Согласно https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/connect-pnponline?view=sharepoint-ps, -UseWebLogin основан на браузере.В качестве альтернативы вы можете использовать параметр -Credentials.Вот как вы строите объект PSCredential:

$secPassword = ConvertTo-SecureString "StringPassword" -AsPlainText -Force
$credential = [System.Management.Automation.PSCredential]::new("userName", $secPasswd)

У нас есть предварительный просмотр PowerShell в функциях Azure 2.x. Пожалуйста, дайте мне знать, если вы хотите попробовать его.Вы можете связаться со мной по адресу francisco.gamino@microsoft.com.

Cheers,

Francisco

0 голосов
/ 30 января 2019

Вы можете использовать Runspace в функции Azure, как показано в в этом примере , строки 93-98.Для модулей вы можете включить их как часть полезной нагрузки, которую вы развертываете в своем функциональном приложении (рекомендуется), или установить их, используя Kudu .

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