Nano Hash - криптовалюты, майнинг, программирование

Вы не можете вызвать метод для выражения с нулевым значением при использовании параметров в коде.

Я новичок в PowerShell и в настоящее время пишу сценарий, который выполняет резервное копирование элементов списка SharePoint. Формат вывода - файл excel. В моем модуле есть один метод, который принимает 3 параметра: URL-адрес сайта SharePoint, имя списка и путь, по которому должен быть сохранен файл Excel.

Поэтому я вызываю этот метод из тестового скрипта и передаю параметры. Но я получаю сообщение об ошибке, когда пытаюсь создать экземпляр объектов Site и List.

Вот мой модуль:

Function Export-SPListToExcel($siteURL, $listname, $FolderToSaveTo)
{     
    Import-Modules

    $site = new-object Microsoft.SharePoint.SPSite($siteURL)

    $web = $site.OpenWeb()

    $list = $web.Lists[$listname.ToString()]

    $table = $list.Items.GetDataTable()

    $Path = $FolderToSaveTo + (Get-Date).ToString().Replace(" ", "_").Replace(":","").Replace(".","") + ".xlsx"

    $table | Export-XLSX -Path $Path -ClearSheet    
}

Function Import-Modules
{
    if(-Not (Get-Module -ListAvailable -Name "PSExcel"))
    {        
        $psd = (Split-Path -Parent $PSCommandPath) + "\PSExcel\PSExcel.psd1"
        $psm = (Split-Path -Parent $PSCommandPath) + "\PSExcel\PSExcel.psm1"
        Import-Module $psd
        Import-Module $psm
    }

    if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) 
    {
        Add-PSSnapin "Microsoft.SharePoint.PowerShell"
    }
}

И вот мой тестовый скрипт:

if(-Not (Get-Module -ListAvailable -Name "SaveAsExcel"))
{
    Import-Module C:\Temp\PSExcel-master\PSExcel-master\SaveAsExcel.psm1 
}

$path = "C:\Temp\"
$url = "http://sp2013dev3:85/sites/wtpersonal"
$list = "Activities"

Export-SPListToExcel($url, $list, $path)

Ошибка возникает в этой строке:

$site = new-object Microsoft.SharePoint.SPSite($siteURL)

и эта линия

$list = $web.Lists[$listname.ToString()]

Что я здесь делаю неправильно?

РЕДАКТИРОВАТЬ: если я жестко запрограммирую свои параметры в модуль, это сработает.


  • Попробуйте Export-SPListToExcel $url $list $path. В PoweShell вы не используете запятые и скобки для параметров. 30.06.2015
  • Благодарность! что сделал это! знаете, почему мой метод не сработал? если хотите, можете добавить ответ, я его приму. 30.06.2015
  • Просто примите ответ Ансгара. Это даже объясняет почему :) 30.06.2015

Ответы:


1

В PowerShell списки параметров, разделенные запятыми, в круглых скобках используются только в вызовах методов:

$object.SomeMethod('foo', 'bar')

В вызовах функций вы передаете аргументы в виде списка, разделенного пробелами:

Invoke-Function 'foo' 'bar'
                     ^
                no comma here

Это потому, что в PowerShell запятая и круглые скобки имеют особое значение. Запятая разделяет элементы массива, поэтому

Invoke-Function 'foo', 'bar'

передаст массив с двумя элементами 'foo' и 'bar' в первый параметр функции.

Скобки используются для вычисления выражений внутри других выражений:

$i = 1
Invoke-Function ('{0:d2}' -f $i)

Приведенное выше создает двузначную строку "01" из целочисленного значения $i и передает ее первому параметру функции.

30.06.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..