@x2sp

Почему PS при экспорте из Sharepoint неправильно формирует первую строку?

Добрый день.

Имеем следующий результат при выгрузке в CSV 4 значений из SP :
"RegData","podrazdelenieisp","ID","DataSozdani9"
"12/10/2018 12:00:00 AM","1;#????????","970","1/1/2018 12:00:00 AM"
"12/10/2018 12:00:00 AM","1;#Department","971","1/1/2018 12:00:00 AM"
...


Сам скрипт:

Add-PSSnapin microsoft.sharepoint.powershell
$weburl = "http://#####"
$site=(Get-SPSite -Identity $weburl)
$web=$site.RootWeb 
$listName = "####"
$Department = 1
    $list = $web.Lists[$listName]
    $items = $list.Items      
       ForEach ($item in $items)    
       {                                    
            $a = $($item["Подразделение"])
            $a = $a -replace ";.*"
           
             If ($a -eq $Department)
                {
                
                  $Output =New-Object -TypeName PSObject -Property @{
                            ID = $item.Id
                            podrazdelenieisp = $item["Подразделение Исполнителя"]
                            RegData = $item["Дата регистрации"]
                            DataSozdani9 = $item["Дата создания"]                            
                         }
                           $Output | export-csv C:\organization.csv -Append
                         }
             }                                         
Remove-PSSnapIn Microsoft.SharePoint.PowerShell


Провел следующие тесты:

1) Переменная c первой строкой внутри PS отображается корректно
2) При изменении места выгрузки csv результат не меняется
3) Пробовал исключать первый объект (If ($a -eq $Department -and $item.id -ne 970), но получал ту же ошибку уже с другим объектом на первой строчке

Если файл csv заранее подготовить (создать и разметить столбцы), то ошибки первой строки не будет. Но меня беспокоит такое поведение и хотелось бы выяснить причину.

Всем спасибо.
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MaxKozlov Куратор тега PowerShell
Надо вынести Export-Csv из цикла, исключить -Append и дописать -Encoding
$output = foreach ($item in $items)    
{ 
    #...
    New-Object -TypeName PSObject -Property @{
        #...
    }
}
$output | Export-Csv -Encoding utf-8 -Path  C:\organization.csv
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы