3

Я пытаюсь выяснить изменения, внесенные в список задач в sharepoint онлайн с помощью CSOM. (Microsoft.SharePoint.Client.dll) Я смог запросить изменения с помощью метода GetChanges класса List, но не уверен, что делать дальше. Я специально ищу, как получить информацию, связанную с изменениями списков в конкретных столбцах, старыми значениями, новыми значениями, пользователем, внесшим изменения и т. Д. Возможно ли это? Я знаю свойство Change.ChangeToken, но я не уверен, как его реализовать в PowerShell. Вот мой неполный код:Получите изменения в списке задач в Sharepoint Online через PowerShell

[Reflection.Assembly]::LoadFrom("$scriptdir\Microsoft.SharePoint.Client.dll") 
$context = New-Object Microsoft.SharePoint.Client.ClientContext($siteURL) 
$context.RequestTimeOut = 1000 * 60 * 10; 
$context.AuthenticationMode = [Microsoft.SharePoint.Client.ClientAuthenticationMode]::Default 
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force 
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePassword) 
$context.Credentials = $credentials 
$web = $context.Web 
$site = $context.Site 
$context.Load($web) 
$context.Load($site) 
$context.ExecuteQuery() 
Set-Variable -Name "clientContext" -Value $context -Scope Global 
Set-Variable -Name "rootSiteUrl" -Value $siteURL -Scope Global 
Function Get-ListChanges { 
    $listName = "Tasks" 
    $list = $clientContext.Web.Lists.GetByTitle($listName) 
    $cq = new-object Microsoft.Sharepoint.Client.ChangeQuery($true,$true) 
    $changes = $list.GetChanges($cq) 
    $clientContext.Load($changes) 
    $clientContext.ExecuteQuery() 
    $changes.count 
    foreach ($item in $changes) { 
     # get data here from specific column name/old values/newvalues 
    } 
} 

Спасибо, что посмотрели на это!

UPDATE: В соответствии с просьбой, результатом $ item.GetType() для одного элемента Change ...

Module      : System.Management.Automation.dll 
Assembly     : System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 
TypeHandle     : System.RuntimeTypeHandle 
DeclaringMethod   : 
BaseType     : System.Object 
UnderlyingSystemType  : System.Management.Automation.PSCustomObject 
FullName     : System.Management.Automation.PSCustomObject 
AssemblyQualifiedName  : System.Management.Automation.PSCustomObject, System.Management.Automation, Version=3.0.0.0, Culture=neutral 
          PublicKeyToken=31bf3856ad364e35 
Namespace     : System.Management.Automation 
GUID      : 5f6aa156-8585-35c9-a6ae-2aefd06aaa4a 
IsEnum      : False 
GenericParameterAttributes : 
IsSecurityCritical   : True 
IsSecuritySafeCritical  : False 
IsSecurityTransparent  : False 
IsGenericTypeDefinition : False 
IsGenericParameter   : False 
GenericParameterPosition : 
IsGenericType    : False 
IsConstructedGenericType : False 
ContainsGenericParameters : False 
StructLayoutAttribute  : System.Runtime.InteropServices.StructLayoutAttribute 
Name      : PSCustomObject 
MemberType     : TypeInfo 
DeclaringType    : 
ReflectedType    : 
MetadataToken    : 33554762 
GenericTypeParameters  : {} 
DeclaredConstructors  : {Void .cctor(), Void .ctor()} 
DeclaredEvents    : {} 
DeclaredFields    : {SelfInstance} 
DeclaredMembers   : {System.String ToString(), Void .cctor(), Void .ctor(), SelfInstance} 
DeclaredMethods   : {System.String ToString()} 
DeclaredNestedTypes  : {} 
DeclaredProperties   : {} 
ImplementedInterfaces  : {} 
TypeInitializer   : Void .cctor() 
IsNested     : False 
Attributes     : AutoLayout, AnsiClass, Class, Public, BeforeFieldInit 
IsVisible     : True 
IsNotPublic    : False 
IsPublic     : True 
IsNestedPublic    : False 
IsNestedPrivate   : False 
IsNestedFamily    : False 
IsNestedAssembly   : False 
IsNestedFamANDAssem  : False 
IsNestedFamORAssem   : False 
IsAutoLayout    : True 
IsLayoutSequential   : False 
IsExplicitLayout   : False 
IsClass     : True 
IsInterface    : False 
IsValueType    : False 
IsAbstract     : False 
IsSealed     : False 
IsSpecialName    : False 
IsImport     : False 
IsSerializable    : False 
IsAnsiClass    : True 
IsUnicodeClass    : False 
IsAutoClass    : False 
IsArray     : False 
IsByRef     : False 
IsPointer     : False 
IsPrimitive    : False 
IsCOMObject    : False 
HasElementType    : False 
IsContextful    : False 
IsMarshalByRef    : False 
GenericTypeArguments  : {} 
CustomAttributes   : {} 
+0

могли бы вы опубликовать тип ('$ item.getType()') такого пункта изменения, чтобы мы могли взглянуть на свойства? – Paul

+0

@Paul см. Изменение выше –

ответ

1

Tank, можно получить тип изменения и время изменения:

$item | Select ChangeType,Time 

Возможно, я ношу удар в темноте, но вы можете изучить класс ChangeLogItemQuery. Возможно, он сможет предоставить вам больше информации о самом фактическом изменении (Old/New и т. Д.). Пожалуйста, поправьте меня, если я ошибаюсь.

Более подробную информацию о ChangeLogItemQuery классе здесь: https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.client.changelogitemquery_members(v=office.15).aspx

Смежные вопросы