Я использую модуль PnP PowerShell для взаимодействия со списками/библиотеками SharePoint. Я запускаю следующий командлет, чтобы получить список всех файлов в библиотеке. Это работает отлично, за исключением того, что он также возвращает все папки в библиотеке. Есть ли способ пропустить элементы папки? Я все еще хочу, чтобы файлы в папках возвращались, но не папки.
$files = (Get-PnPListItem -List $docLib.Title -Fields FileLeafRef","FileRef","Title").FieldValues
Я подозреваю, что могу добавить предложение Where, однако я не уверен, какое свойство будет идентифицировать элемент как папку. Любое руководство будет оценено. Спасибо!
Большое спасибо
ОБНОВЛЕНО: $files[0] | гм возвращает:
Add Method void Add(string key, System.Object value), void IDictionary[string,Object].Add(string key, System.Object value), void ICollection[KeyValuePair[stri...
Clear Method void Clear(), void ICollection[KeyValuePair[string,Object]].Clear(), void IDictionary.Clear()
Contains Method bool ICollection[KeyValuePair[string,Object]].Contains(System.Collections.Generic.KeyValuePair[string,System.Object] item), bool IDictionary.Contai...
ContainsKey Method bool ContainsKey(string key), bool IDictionary[string,Object].ContainsKey(string key), bool IReadOnlyDictionary[string,Object].ContainsKey(string key)
ContainsValue Method bool ContainsValue(System.Object value)
CopyTo Method void ICollection[KeyValuePair[string,Object]].CopyTo(System.Collections.Generic.KeyValuePair[string,System.Object][] array, int arrayIndex), void I...
Equals Method bool Equals(System.Object obj)
GetEnumerator Method System.Collections.Generic.Dictionary`2+Enumerator[string,System.Object] GetEnumerator(), System.Collections.Generic.IEnumerator[System.Collections...
GetHashCode Method int GetHashCode()
GetObjectData Method void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context), void ISerializable....
GetType Method type GetType()
OnDeserialization Method void OnDeserialization(System.Object sender), void IDeserializationCallback.OnDeserialization(System.Object sender)
Remove Method bool Remove(string key), bool IDictionary[string,Object].Remove(string key), bool ICollection[KeyValuePair[string,Object]].Remove(System.Collection...
ToString Method string ToString()
TryGetValue Method bool TryGetValue(string key, [ref] System.Object value), bool IDictionary[string,Object].TryGetValue(string key, [ref] System.Object value), bool I...
Item ParameterizedProperty System.Object Item(string key) {get;set;}, System.Object IDictionary.Item(System.Object key) {get;set;}
Comparer Property System.Collections.Generic.IEqualityComparer[string] Comparer {get;}
Count Property int Count {get;}
IsFixedSize Property bool IsFixedSize {get;}
IsReadOnly Property bool IsReadOnly {get;}
IsSynchronized Property bool IsSynchronized {get;}
Keys Property System.Collections.Generic.Dictionary`2+KeyCollection[string,System.Object] Keys {get;}
SyncRoot Property System.Object SyncRoot {get;}
Values Property System.Collections.Generic.Dictionary`2+ValueCollection[string,System.Object] Values {get;}
ОБНОВЛЕНО: $files[0] возвращает следующее (вы можете видеть, что он возвращает папку с именем «Общие»):
FileLeafRef General
FileRef /sites/Finance/Shared Documents/General
Title General
HTML_x0020_File_x0020_Type Team.Channel
MetaInfo vti_isexecutable:BW|false...
_ModerationStatus 0
_Level 1
Last_x0020_Modified 2022-04-03T19:52:10Z
ID 1
UniqueId 10d788d1-0308-4768-b47b-33f79723386e
owshiddenversion 2
FSObjType 1
Created_x0020_Date 2022-01-26T10:35:55Z
ProgId Team.Channel
Modified 1/26/2022 10:35:56 AM
CheckoutUser
ScopeId {3E95DFBF-DEF4-4FC8-AE50-C84D4E2F4483}
Editor Microsoft.SharePoint.Client.FieldUserValue
ОБНОВЛЕНО: Вот свойства файла, FSObjType отличается, выглядит как 1 для папок и 0 для файлов:
FileLeafRef Document.docx
FileRef /sites/Finance/Shared Documents/General/Document.docx
Title test
HTML_x0020_File_x0020_Type
MetaInfo vti_mediaservicemetadata:SW|{"ctag":"\\"c:{7799CB41-34F1-40F5-A701-BFF6AAC846D0},5\\"","generationTime":"2022-01-26T12:13:38.1337171Z","buildVersion":"Media_PRO...
_ModerationStatus 0
_Level 1
Last_x0020_Modified 2022-01-27T09:04:07Z
ID 2
UniqueId 7799cb41-34f1-40f5-a701-bff6aac846d0
owshiddenversion 6
FSObjType 0
Created_x0020_Date 2022-01-26T12:12:31Z
ProgId
Modified 1/27/2022 9:04:06 AM
CheckoutUser
ScopeId {3E95DFBF-DEF4-4FC8-AE50-C84D4E2F4483}
Editor Microsoft.SharePoint.Client.FieldUserValue
Итак, я обновил свой вызов до следующего, который теперь работает отлично, спасибо, Тони!
$files = (Get-PnPListItem -List $docLib.Title -Fields "FileLeafRef","Title").FieldValues | Where {$_.FSObjType -eq "0"}
Привет Тони, я обновил описание с результатами
Я предполагаю, что FSObjType
сообщает вам, какой это тип объекта, и вы, вероятно, могли бы отфильтровать их, указав параметр -query
или на уровне оболочки с помощью where-object
@Toni - FSObjType - это то, что нужно! спасибо, вы хотите добавить ответ, чтобы я мог пометить его как исправление - так что вы получите кредит :)
спасибо за предложение ... но все в порядке, как есть ... я дал вам немного информации, и вы справились и задокументировали это самостоятельно, у.е. в следующий раз ;-)
Пожалуйста, смотрите обновленное описание, FSObjType позволит вам вытащить файлы или папки (0 для файлов, 1 для папок)
пожалуйста, сообщите нам, какие объекты содержит переменная $files, чтобы увидеть доступные свойства.
$files[0] | gm
достаточно