Обновить поле состояния в CSV и снова экспортировать - PullRequest
0 голосов
/ 15 апреля 2020

Я разрабатываю скрипт для создания навигации в SharePoint с помощью PnP. Для этого я создал CSV со своими URL-адресами и дополнительной информацией.

Мой CSV выглядит следующим образом:

Name,ParentName,Level,URL,Status,Order
Tools,Consulting,1,http://linkless.header/,Existing,3
Tool Wiki,Tools,2,http://linkless.header/,Existing,3
Tool Box,Tools,2,http://linkless.header/,add,2
Tool Development,Tools,2,https://linkless.header/,Remove,1

Я импортирую CSV с помощью следующей команды

$CURRENT_DIRECTORY=Get-Location
$CSV_Navigation = Import-Csv $CURRENT_DIRECTORY\UrlsNavigation.csv 

Затем я хочу внести несколько изменений и снова экспортировать их.

$STATUS_ADD="Add"
$STATUS_REMOVE="Remove"
$STATUS_EXISTING="Existing"

function setStatusInCSV {
    ForEach($Item in $CSV_Navigation) {
        If ($Item.Status -eq $STATUS_ADD) {
            $Item.Status = $STATUS_EXISTING
        }   
    }
    Export-Csv $CSV_Navigation -Path $CURRENT_DIRECTORY\UrlsNavigation.csv -NoTypeInformation 
}

Для этого я получаю следующую ошибку

Export-Csv : Cannot convert 'System.Object[]' to the type 'System.Char' required by parameter 'Delimiter'. Specified method is not supported.
At Path\Navigation\UpdateNavigation.ps1:95 char:16
+     Export-Csv $CSV_Navigation -Path $CURRENT_DIRECTORY\UrlsNavigatio ...
+                ~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Export-Csv], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.ExportCsvCommand

Если я запускаю команду с разделителем, она выглядит так:

Export-Csv : A positional parameter cannot be found that accepts argument 'System.Object[]'.
At Path\Navigation\UpdateNavigation.ps1:95 char:5
+     Export-Csv $CSV_Navigation -Path $CURRENT_DIRECTORY\UrlsNavigatio ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Export-Csv], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.ExportCsvCommand

My $ CSV_Navigation выглядит так

Write-Host $CSV_Navigation 
@{Name=Tools; ParentName=Consulting; Level=1; URL=http://linkless.header/; Status=Ex
isting; Order=3} @{Name=Tool Wiki; ParentName=Tools; Level=2; URL=http://linkless.header/; Status=Existing; Order=3} @{Name=Tool Box; ParentName=Tools; Level=2; URL=http://linkless.header/; Status=Existing; Order=2} @{Name=Tool Development; ParentName=Tools; Leve
l=2; URL=https://linkless.header/; Status=Remove; Order=1} 

1 Ответ

2 голосов
/ 15 апреля 2020

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

, вам нужно определить, каков ваш входной объект c. Например:

Export-Csv -InputObject $CSV_Navigation -Path $CURRENT_DIRECTORY\UrlsNavigation.csv -NoTypeInformation 

Редактировать: Вам нужно использовать Select-Object -Property YourPropeerties, чтобы получить правильный вывод или передать ваш массив в команду:

$CSV_Navigation | Export-Csv -Path $CURRENT_DIRECTORY\UrlsNavigation.csv -NoTypeInformation 
...