Powershell, используя результаты Invoke-SQLcmd как переменной в пути к файлу [duplicate]

У нас та же проблема .... но случайно я проверил свойства папки и установил что-то ...

Вы должны проверить свойства каждой папки, к которой вы обращаетесь.

  1. правая кнопка мыши
  2. вкладка «Разрешения»
  3. устанавливает доступ к папке: OWNER: создание и удаление файлов GROUP: файлы доступа ДРУГИЕ: файлы доступа
  4. ]

Надеюсь, что это решение ......

4
задан Matt 13 April 2016 в 02:10
поделиться

1 ответ

Проблема с Format-cmdlets

Проблема здесь заключается в использовании вами FT, который является псевдонимом для Format-Table. Эти командлеты Format- предназначены только для вывода на консоль / экран . Есть много вещей, которые вы можете сделать, чтобы настроить этот вывод, но в каждом случае PowerShell необходимо массировать данные, чтобы это было возможно. Это включает разбиение на переданные объекты на группы разных объектов ...

Microsoft.PowerShell.Commands.Internal.Format.FormatEndData
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData
Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
Microsoft.PowerShell.Commands.Internal.Format.GroupEndData
Microsoft.PowerShell.Commands.Internal.Format.GroupStartData

Вышеупомянутые типы данных были извлечены из запуска этого кода.

Get-ChildItem c:\temp | Format-Table | Get-Member

Таким образом, у вас больше нет объектов System.IO.FileInfo и System.IO.DirectoryInfo, которые вы обычно получали из Get-ChildItem

. Другая большая проблема связана с природой Format-cmdlets усеченные данные, такие как массивы с большим количеством элементов или длинными строками, чтобы сделать так, чтобы они соответствовали размеру экрана. В случае массивов это происходит из-за переменной предпочтения $FormatEnumerationLimit , которая обычно по умолчанию равна 4.

Ten Numbers                                                                                                                                                  
-----------                                                                                                                                                  
{1, 2, 3, 4...}  

Эти и другие ограничения могут быть смягчены с переключателями команд, такими как -AutoSize и -HideTableHeaders, out-string -width и т. д. Это не имеет значения, потому что ...


Решение

Хорошая новость - это решение очень просто. Прекратите использовать их для чего-либо, кроме консольного вывода. Используя мой предыдущий пример:

  • Сохранение результатов в переменной ?: $result = Get-ChildItem C:\temp
  • Экспорт данных: Get-ChildItem C:\temp | Export-CSV $path -NoTypeInformation. Другие командлеты Export- могут быть предпочтительны здесь, например Export-CLIXml для сложных объектов, если вы хотите их хранить для использования в другом месте. Если вы просто ищете что-то красивое для включения в свой вывод, тогда рассмотрите ConvertTo-HTML.
  • Извлечение отдельных свойств ?: Просто используйте Select-Object. $result | Select prop1, prop2. Вы также можете расширить свой выбор свойств, чтобы просто получить строки или строковый массив с помощью -ExpandProperty: $result | Select -ExpandProperty prop1
  • Выполнение встроенных вычислений с указанными свойствами ?: Использовать рассчитанное выражение так же, как вы должны использовать командлеты Format-Cdlets. $result | Select prop1, @{Name="prop2";Expression={$_.prop2 * 3}

Потенциально допустимое использование

Некоторые предпочитают вывод для использования в электронных письмах и для записи статистики. Хотя он является неотъемлемой частью хранения данных в более удобном для использования формате для последующего использования. Однако, если вам действительно нужны эти данные, имейте в виду, что вы не работаете с объектом, который изначально был у вас.

Итак, если вам нужны ваши данные в формате таблицы, но они сохранены в виде строки, рассмотрите Out-String

$body = Get-ChildItem c:\temp | Format-Table | Out-String

, но помните, что Format-Table будет воспроизводить с выходом объекта в порядке чтобы он отображался на экране (усеченные свойства массива и длинные строки). На самом деле .. если вы хотите, чтобы это было красиво и отформатировано, вы должны просто использовать ConvertTo-HTML.

Точка, вам почти никогда не нужно сохранять данные из Format-Table. Существует почти всегда лучший способ.

9
ответ дан Matt 28 August 2018 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: