Dependencies/Assemblies/Microsoft365DSC.Relations.xml
|
<?xml version="1.0"?>
<doc> <assembly> <name>Microsoft365DSC.Relations</name> </assembly> <members> <member name="T:Microsoft365DSC.Relations.StubBlockOptions"> <summary> Inputs needed to render stub blocks for dependency targets that were not exported. </summary> <remarks> Both values are supplied by PowerShell rather than looked up here, so this assembly never has to call back into the module while it is rewriting the document. </remarks> </member> <member name="P:Microsoft365DSC.Relations.StubBlockOptions.MandatoryPropertiesByResource"> <summary> Mandatory property names per resource type, as a hashtable of resource name to a collection of property names. </summary> </member> <member name="P:Microsoft365DSC.Relations.StubBlockOptions.AuthenticationProperties"> <summary> The authentication property names to emit on each stub, for the connection mode the export is running under. </summary> </member> <member name="T:Microsoft365DSC.Relations.DependsOnInjector"> <summary> Injects DependsOn declarations into exported DSC content and appends stub blocks for unresolved targets. </summary> <remarks> The document is scanned once to locate every resource block, then rebuilt once. The previous implementation searched the whole document from the start and reallocated it in full for every single source block, which on a large export dominated the entire dependency phase. </remarks> </member> <member name="F:Microsoft365DSC.Relations.DependsOnInjector.KeyPropertyPrecedence"> <summary> The order Get-M365DSCExportContentForResource uses to pick an instance's primary key, minus IsSingleInstance, which is driven by its allowed values instead. </summary> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.Inject(System.String,System.Collections.Generic.IReadOnlyList{Microsoft365DSC.Relations.DependencyRecord},System.Collections.Generic.IReadOnlyCollection{Microsoft365DSC.Relations.ExportedInstance},Microsoft365DSC.Relations.StubBlockOptions)"> <summary> Rewrites exported content with DependsOn declarations and dependency stubs. </summary> <param name="content">The concatenated resource blocks.</param> <param name="dependencies">The dependencies discovered during export.</param> <param name="instances">The instances that were actually exported.</param> <param name="stubOptions">Inputs for rendering stub blocks.</param> <returns>The rewritten content.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.InjectDependsOnLines(System.String,System.Collections.Generic.Dictionary{System.String,System.Collections.Generic.List{System.String}})"> <summary> Locates every source block in one pass and rebuilds the document once. </summary> <param name="content">The content to rewrite.</param> <param name="targetsBySource">DependsOn targets keyed by source reference.</param> <returns>The content with DependsOn lines inserted.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.RenderDependsOnLine(System.Collections.Generic.List{System.String})"> <summary> Renders one DependsOn assignment line. </summary> <param name="targets">The target references.</param> <returns>The rendered line, without a trailing newline.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.GetStubInstanceName(System.String,System.String)"> <summary> Builds the instance name a stub block is declared under. </summary> <param name="resourceType">The stubbed resource type.</param> <param name="targetKey">The value identifying the target.</param> <returns>The instance name.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.EscapeValue(System.String)"> <summary> Escapes a value for a double quoted PowerShell string. </summary> <param name="value">The raw value.</param> <returns>The escaped value.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.TrySplitReference(System.String,System.String@,System.String@)"> <summary> Splits a <c>[ResourceName]InstanceName</c> reference. </summary> <param name="reference">The reference to split.</param> <param name="resourceName">Receives the resource type.</param> <param name="instanceName">Receives the instance name.</param> <returns>True when the reference is well formed.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.RenderStubs(System.Collections.IEnumerable,Microsoft365DSC.Relations.StubBlockOptions)"> <summary> Renders minimal resource blocks for targets described by loose objects. </summary> <param name="targets"> Items exposing <c>ResourceType</c> and <c>TargetKey</c> members, such as hashtables. </param> <param name="stubOptions">Inputs for rendering.</param> <returns>The stub block text, or an empty string when there is nothing to render.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.RenderStubBlocks(System.Collections.Generic.IEnumerable{Microsoft365DSC.Relations.DependsOnInjector.UnresolvedTarget},Microsoft365DSC.Relations.StubBlockOptions)"> <summary> Renders minimal resource blocks so unresolved references still compile. </summary> <param name="targets">The unresolved targets.</param> <param name="options">Inputs for rendering.</param> <returns>The stub block text.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.ChooseKeyProperty(System.Collections.Generic.List{Microsoft365DSC.Relations.DependsOnInjector.StubProperty},System.String)"> <summary> Decides which mandatory property should carry the referenced key. </summary> <param name="properties">The resource's mandatory properties.</param> <param name="declaredKeyProperty">The property named by the relation, if any.</param> <returns>The property name to assign the key to, or null when none fits.</returns> <remarks> The relation's own <c>targetKeyProperty</c> wins. Without one, this falls back to the same precedence Get-M365DSCExportContentForResource uses to pick a primary key, so a stub is keyed the same way the real instance would have been. </remarks> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.IsHandledSeparately(System.String,System.String[])"> <summary> Reports whether a property is already emitted elsewhere in the stub block. </summary> <param name="name">The property name.</param> <param name="authenticationProperties">The authentication properties being emitted.</param> <returns>True when the property must be skipped in the mandatory loop.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.GetMandatoryProperties(System.Object,System.String)"> <summary> Reads the mandatory properties for a resource type out of the supplied map. </summary> <param name="source">The map of resource name to property descriptors.</param> <param name="resourceType">The resource type to look up.</param> <returns>The mandatory properties, empty when the resource type is unknown.</returns> <remarks> Entries may be plain names or objects carrying Name, PropertyType and Values, so a caller that only knows the names still gets a usable, if less precise, stub. </remarks> </member> <member name="T:Microsoft365DSC.Relations.DependsOnInjector.StubProperty"> <summary> A mandatory property of a resource, and enough type information to synthesize a placeholder value for it. </summary> </member> <member name="P:Microsoft365DSC.Relations.DependsOnInjector.StubProperty.CanHoldKey"> <summary> True when the property could carry the referenced key: it has to be textual, and it must not be restricted to a fixed set of values the key would violate. </summary> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.StubProperty.RenderValue(System.String)"> <summary> Produces a value for this property in a stub block. </summary> <param name="key">The referenced key when this property carries it, otherwise null.</param> <returns>The rendered right-hand side of the assignment.</returns> </member> <member name="T:Microsoft365DSC.Relations.DependsOnInjector.UnresolvedTarget"> <summary> A dependency target that was referenced but never exported. </summary> </member> <member name="P:Microsoft365DSC.Relations.DependsOnInjector.UnresolvedTarget.TargetKeyProperty"> <summary>The property the key belongs in, when the relation declared one.</summary> </member> <member name="T:Microsoft365DSC.Relations.DependsOnInjector.TargetLookup"> <summary> Resolves dependency records to exported instance references. </summary> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.TargetLookup.Claim(System.Collections.Generic.Dictionary{System.String,System.String},System.String,System.String)"> <summary> Records a reference for a key, keeping the ordinally first reference when two instances claim the same key. </summary> <param name="map">The map to write to.</param> <param name="key">The composite lookup key.</param> <param name="reference">The candidate instance reference.</param> <remarks> Last-write-wins would make the result depend on the order instances were registered, which a parallel export does not fix. </remarks> </member> <member name="M:Microsoft365DSC.Relations.DependsOnInjector.TargetLookup.Resolve(Microsoft365DSC.Relations.DependencyRecord)"> <summary> Finds the exported instance a dependency points at. </summary> <param name="dependency">The dependency to resolve.</param> <returns>The instance reference, or null when the target was not exported.</returns> <remarks> The relation's declared target key property is preferred. Falling back to the primary key keeps every match the previous implementation made, so honouring the declared property can only resolve more references, never fewer. </remarks> </member> <member name="T:Microsoft365DSC.Relations.ExportInstanceNames"> <summary> Hands out unique DSC instance names for the duration of an export. </summary> <remarks> <para> Two resources can produce the same natural instance name, so the second and later ones get a numeric suffix. This used to live in PowerShell global variables, which are per-runspace: during a parallel export each runspace kept its own set of claimed names and could not see the others'. Static state on the assembly is shared across the whole process, so every runspace draws from one registry. </para> <para> Reservation is a single locked operation rather than a separate "is it taken" test followed by a claim, because the two-step form lets two callers agree that a name is free and then both take it. </para> <para> This is not relation-specific, but it is export-scoped shared state used from the same code path as the relation session, and it did not warrant an assembly of its own. </para> </remarks> </member> <member name="F:Microsoft365DSC.Relations.ExportInstanceNames.NextSuffix"> <summary> The next suffix to try for a base name, so a name claimed many times does not re-probe from the start on every occurrence. </summary> </member> <member name="M:Microsoft365DSC.Relations.ExportInstanceNames.Reserve(System.String)"> <summary> Claims a unique instance name, appending a numeric suffix when the name is taken. </summary> <param name="baseName">The natural instance name.</param> <returns> <paramref name="baseName"/> when it was still free, otherwise the name with the lowest free suffix appended. </returns> </member> <member name="M:Microsoft365DSC.Relations.ExportInstanceNames.Reset"> <summary> Forgets every claimed name, so a new export starts from a clean registry. </summary> </member> <member name="P:Microsoft365DSC.Relations.ExportInstanceNames.Count"> <summary>The number of names claimed so far. Intended for diagnostics and tests.</summary> </member> <member name="T:Microsoft365DSC.Relations.DependencyRecord"> <summary> One discovered reference from an exported instance to a target resource. </summary> </member> <member name="P:Microsoft365DSC.Relations.DependencyRecord.SourceInstanceName"> <summary>The instance name of the resource that holds the reference.</summary> </member> <member name="P:Microsoft365DSC.Relations.DependencyRecord.SourceResourceName"> <summary>The resource type that holds the reference.</summary> </member> <member name="P:Microsoft365DSC.Relations.DependencyRecord.TargetResourceType"> <summary>The resource type being referenced.</summary> </member> <member name="P:Microsoft365DSC.Relations.DependencyRecord.TargetKeyProperty"> <summary>The property on the target that <see cref="P:Microsoft365DSC.Relations.DependencyRecord.TargetKey"/> should match, or null.</summary> </member> <member name="P:Microsoft365DSC.Relations.DependencyRecord.TargetKey"> <summary>The value identifying the target instance.</summary> </member> <member name="P:Microsoft365DSC.Relations.DependencyRecord.SourceReference"> <summary>The DSC reference for the source, in <c>[ResourceName]InstanceName</c> form.</summary> </member> <member name="T:Microsoft365DSC.Relations.ExportedInstance"> <summary> A resource instance that was actually exported, recorded so references to it can be resolved to a real DependsOn entry instead of a generated stub. </summary> <remarks> Only the fields needed for dependency resolution are kept. The full property bag used to be retained for every instance for the lifetime of the export, which cost a great deal of memory on large tenants and was never read. </remarks> </member> <member name="P:Microsoft365DSC.Relations.ExportedInstance.ResourceName"> <summary>The resource type.</summary> </member> <member name="P:Microsoft365DSC.Relations.ExportedInstance.InstanceName"> <summary>The generated, unique instance name.</summary> </member> <member name="P:Microsoft365DSC.Relations.ExportedInstance.PrimaryKey"> <summary>The instance's primary key value.</summary> </member> <member name="P:Microsoft365DSC.Relations.ExportedInstance.KeyValues"> <summary> Values of the properties that other resources reference this one by, captured at registration so the property bag itself need not be retained. </summary> <remarks> Null when no relation targets this resource type by a named property. Populated from <see cref="M:Microsoft365DSC.Relations.RelationIndex.GetTargetKeyProperties(System.String)"/>, so it holds at most a couple of entries rather than the whole export result. </remarks> </member> <member name="P:Microsoft365DSC.Relations.ExportedInstance.Reference"> <summary>The DSC reference for this instance, in <c>[ResourceName]InstanceName</c> form.</summary> </member> <member name="T:Microsoft365DSC.Relations.DependencyCollector"> <summary> Accumulates dependency records, discarding duplicates as they arrive. </summary> <remarks> Deduplicating at registration matters as much as the storage change: a value such as a shared role scope tag is referenced by nearly every policy, so the same record was previously appended thousands of times and only collapsed much later. </remarks> </member> <member name="F:Microsoft365DSC.Relations.DependencyCollector.KeySeparator"> <summary> Joins the parts of a composite key. A control character is used so that values containing the more obvious delimiters cannot collide, for example a display name that itself contains a pipe. </summary> </member> <member name="P:Microsoft365DSC.Relations.DependencyCollector.Count"> <summary>The number of distinct dependencies recorded.</summary> </member> <member name="M:Microsoft365DSC.Relations.DependencyCollector.GetRecordsSnapshot"> <summary> Takes a copy of the recorded dependencies. </summary> <returns>A snapshot, safe to enumerate while other threads keep recording.</returns> </member> <member name="M:Microsoft365DSC.Relations.DependencyCollector.Add(System.String,System.String,System.String,System.String,System.String)"> <summary> Records a dependency unless an identical one was already recorded. </summary> <param name="sourceInstanceName">The referencing instance name.</param> <param name="sourceResourceName">The referencing resource type.</param> <param name="targetResourceType">The referenced resource type.</param> <param name="targetKeyProperty">The property the key matches on the target, or null.</param> <param name="targetKey">The value identifying the target.</param> </member> <member name="T:Microsoft365DSC.Relations.ExportRelationSession"> <summary> Holds the relation state for a single export: which instances were produced, which references they made, and the rewrite of the finished document. </summary> <remarks> <para> One session replaces the two global collections the export used to accumulate into. Both grew by array reallocation, so every registration cost more than the one before it and the dependency phase degraded superlinearly as an export progressed. </para> <para> The session is reached through the static <see cref="P:Microsoft365DSC.Relations.ExportRelationSession.Current"/> rather than a PowerShell variable, because a parallel export runs its resources in a pool of runspaces and PowerShell variables do not cross runspace boundaries. The assemblies are loaded once per process, so static state here is visible to every runspace and to the main thread that later rewrites the document. That makes the runspaces concurrent writers, so every mutable collection below is guarded. </para> </remarks> </member> <member name="M:Microsoft365DSC.Relations.ExportRelationSession.#ctor(Microsoft365DSC.Relations.RelationIndex)"> <summary> Starts a session over a prebuilt relation index. </summary> <param name="index">The index built at module load.</param> <exception cref="T:System.ArgumentNullException">The index is null.</exception> </member> <member name="P:Microsoft365DSC.Relations.ExportRelationSession.Current"> <summary> The session the current export is accumulating into, or null when no export asked for dependency tracking. </summary> </member> <member name="M:Microsoft365DSC.Relations.ExportRelationSession.Start(Microsoft365DSC.Relations.RelationIndex)"> <summary> Begins a new export session and publishes it to every runspace in the process. </summary> <param name="index">The relation index to resolve against.</param> <returns>The new session.</returns> <remarks> Any previous session is discarded unconditionally, so an export that failed part way through cannot leak its state into the next one. </remarks> </member> <member name="M:Microsoft365DSC.Relations.ExportRelationSession.Reset"> <summary> Ends the current session and releases the state it accumulated. </summary> </member> <member name="P:Microsoft365DSC.Relations.ExportRelationSession.DependencyCount"> <summary>The number of distinct dependencies discovered so far.</summary> </member> <member name="P:Microsoft365DSC.Relations.ExportRelationSession.InstanceCount"> <summary>The number of exported instances registered so far.</summary> </member> <member name="P:Microsoft365DSC.Relations.ExportRelationSession.Warnings"> <summary>Diagnostics gathered while resolving, surfaced as verbose output.</summary> </member> <member name="M:Microsoft365DSC.Relations.ExportRelationSession.RegisterInstance(System.String,System.String,System.String,System.Object)"> <summary> Records an instance that was exported, so references to it resolve to a real DependsOn entry rather than a generated stub. </summary> <param name="resourceName">The resource type.</param> <param name="instanceName">The unique instance name.</param> <param name="primaryKey">The instance's primary key value.</param> <param name="results"> The exported property bag. It is read here and not retained: only the values of properties that some relation actually references are kept. </param> </member> <member name="M:Microsoft365DSC.Relations.ExportRelationSession.ResolveRelations(System.String,System.String,System.Object)"> <summary> Resolves the relations declared for a resource type against one exported instance. </summary> <param name="resourceName">The resource type being exported.</param> <param name="instanceName">The unique instance name.</param> <param name="results">The exported property bag to read references from.</param> </member> <member name="M:Microsoft365DSC.Relations.ExportRelationSession.RegisterDependency(System.String,System.String,System.String,System.String)"> <summary> Registers a dependency directly, bypassing the relation templates. </summary> <param name="sourceInstanceName">The referencing instance name.</param> <param name="sourceResourceName">The referencing resource type.</param> <param name="targetResourceType">The referenced resource type.</param> <param name="targetKey">The value identifying the target.</param> </member> <member name="M:Microsoft365DSC.Relations.ExportRelationSession.InjectDependsOn(System.String,Microsoft365DSC.Relations.StubBlockOptions)"> <summary> Rewrites the exported content with DependsOn declarations and dependency stubs. </summary> <param name="content">The concatenated resource blocks.</param> <param name="stubOptions">Inputs for rendering stub blocks.</param> <returns>The rewritten content.</returns> </member> <member name="T:Microsoft365DSC.Relations.IRelationCondition"> <summary> A predicate applied to a single item before it is treated as a relation target. Conditions are parsed once, when the index is built, rather than re-parsed per item. </summary> </member> <member name="M:Microsoft365DSC.Relations.IRelationCondition.Evaluate(System.Object)"> <summary> Evaluates the condition against one item. </summary> <param name="item">The item to test. May be a hashtable, PSObject or CimInstance.</param> <returns>True when the item satisfies the condition.</returns> </member> <member name="T:Microsoft365DSC.Relations.SubjectCondition"> <summary> Base for conditions that test a single value drawn from the item. </summary> <remarks> The subject is either a property name or <c>$_</c>, which means the item itself. The latter is what lets a condition discriminate between the entries of a plain string array, where there is no property to read. </remarks> </member> <member name="F:Microsoft365DSC.Relations.SubjectCondition.SelfSubject"> <summary>The token that refers to the item itself rather than one of its properties.</summary> </member> <member name="M:Microsoft365DSC.Relations.SubjectCondition.Evaluate(System.Object)"> <inheritdoc /> </member> <member name="M:Microsoft365DSC.Relations.SubjectCondition.Test(System.String)"> <summary> Tests the resolved subject value. </summary> <param name="value">The value read from the item.</param> <returns>True when the condition holds.</returns> </member> <member name="M:Microsoft365DSC.Relations.SubjectCondition.ResolveSubject(System.Object)"> <summary> Reads the value this condition applies to. </summary> <param name="item">The item under test.</param> <returns>The value, or null when it is absent or empty.</returns> </member> <member name="T:Microsoft365DSC.Relations.InCondition"> <summary> Matches when the subject equals one of a set of values, case-insensitively. Source syntax: <c>propertyName in ['value1', 'value2']</c>. </summary> </member> <member name="T:Microsoft365DSC.Relations.EqualsCondition"> <summary> Matches when the subject equals a single value, case-insensitively. Source syntax: <c>propertyName eq 'value'</c>. </summary> </member> <member name="T:Microsoft365DSC.Relations.LikeCondition"> <summary> Matches the subject against a wildcard pattern, case-insensitively. Source syntax: <c>$_ like '*@*'</c> or <c>$_ notlike '*@*'</c>. </summary> <remarks> Wildcards follow PowerShell's own rules, so a template can be written the way the rest of the module would express the same test. </remarks> </member> <member name="T:Microsoft365DSC.Relations.ConditionParser"> <summary> Parses the small condition grammar used by the relation templates. </summary> <remarks> Unrecognized syntax throws. The previous PowerShell implementation defaulted to "matches everything" on a syntax it did not understand, which silently turned every <c>eq</c> condition into a no-op and registered administrative unit members against every candidate target type at once. </remarks> </member> <member name="M:Microsoft365DSC.Relations.ConditionParser.Parse(System.String)"> <summary> Parses a condition expression. </summary> <param name="condition">The expression, or null/empty for no condition.</param> <returns>The parsed condition, or null when there is nothing to apply.</returns> <exception cref="T:System.FormatException">The expression uses an unsupported syntax.</exception> </member> <member name="M:Microsoft365DSC.Relations.ConditionParser.SplitValueList(System.String)"> <summary> Splits the comma-separated body of an <c>in</c> list into its individual values. </summary> <param name="values">The text between the brackets.</param> <returns>The unquoted values, empty entries removed.</returns> </member> <member name="M:Microsoft365DSC.Relations.ConditionParser.TrimQuotes(System.String)"> <summary> Removes surrounding whitespace and a single layer of single or double quotes. </summary> <param name="value">The raw token.</param> <returns>The bare value.</returns> </member> <member name="T:Microsoft365DSC.Relations.RelationDefinition"> <summary> One relation from the relation templates, pre-processed for repeated evaluation: the dotted property path is already split and the condition is already parsed. </summary> </member> <member name="P:Microsoft365DSC.Relations.RelationDefinition.PropertyPath"> <summary>The property path, already split on '.'.</summary> </member> <member name="P:Microsoft365DSC.Relations.RelationDefinition.ChildProperty"> <summary>The property read off each resolved item to obtain the target key, or null.</summary> </member> <member name="P:Microsoft365DSC.Relations.RelationDefinition.TargetResource"> <summary>The resource type this relation points at.</summary> </member> <member name="P:Microsoft365DSC.Relations.RelationDefinition.TargetKeyProperty"> <summary> The property on the target resource that the key matches against, or null to fall back to the target instance's primary key. </summary> </member> <member name="P:Microsoft365DSC.Relations.RelationDefinition.Condition"> <summary>The parsed condition an item must satisfy, or null when unconditional.</summary> </member> <member name="M:Microsoft365DSC.Relations.RelationDefinition.#ctor(System.String,System.String,System.String,System.String,System.String)"> <summary> Creates a relation definition. </summary> <param name="propertyPath">The dotted property path, for example <c>Assignments.Assignment</c>.</param> <param name="childProperty">The property read off each resolved item to obtain the target key, if any.</param> <param name="targetResource">The resource type this relation points at.</param> <param name="targetKeyProperty">The property on the target resource that the key matches against.</param> <param name="condition">An expression that an item must satisfy, or null.</param> <exception cref="T:System.ArgumentException">The property path or target resource is missing.</exception> <exception cref="T:System.FormatException">The condition uses an unsupported syntax.</exception> </member> <member name="T:Microsoft365DSC.Relations.RelationIndex"> <summary> Relations keyed by the resource type they apply to. </summary> <remarks> The templates are authored the other way round - each template lists the resources it covers - so resolving a resource previously meant scanning every template and doing a linear search of its resource list, once per exported instance. Inverting that once at module load turns the per-instance cost into a single dictionary lookup. </remarks> </member> <member name="P:Microsoft365DSC.Relations.RelationIndex.ResourceCount"> <summary>The number of resource types that have at least one relation.</summary> </member> <member name="M:Microsoft365DSC.Relations.RelationIndex.GetRelations(System.String)"> <summary> Returns the relations declared for a resource type. </summary> <param name="resourceName">The resource type name.</param> <returns>The relations, or an empty array when the resource has none.</returns> </member> <member name="M:Microsoft365DSC.Relations.RelationIndex.GetTargetKeyProperties(System.String)"> <summary> Returns the property names that other resources use to reference this one. </summary> <remarks> Used to keep the instance registry small: instead of retaining every exported property bag so a target can be matched later, only the handful of properties that some relation actually points at are captured. </remarks> <param name="resourceName">The resource type name.</param> <returns>The referenced key property names, or an empty array.</returns> </member> <member name="T:Microsoft365DSC.Relations.RelationIndexBuilder"> <summary> Accumulates relations and produces a <see cref="T:Microsoft365DSC.Relations.RelationIndex"/>. </summary> <remarks> The ingestion surface is deliberately flat strings rather than a parsed document. PowerShell owns parsing of M365DSCRelationTemplates.json and drives this builder, which keeps this assembly free of any JSON dependency and therefore free of assembly version conflicts with other modules loaded in the same session. </remarks> </member> <member name="M:Microsoft365DSC.Relations.RelationIndexBuilder.AddRelation(System.String,System.String,System.String,System.String,System.String,System.String)"> <summary> Registers one relation for one resource type. </summary> <param name="resourceName">The resource type the relation applies to.</param> <param name="propertyPath">The dotted property path to read.</param> <param name="childProperty">The property holding the target key on each item, if any.</param> <param name="targetResource">The resource type being referenced.</param> <param name="targetKeyProperty">The property on the target that the key matches.</param> <param name="condition">An expression each item must satisfy, or null.</param> <exception cref="T:System.ArgumentException">The resource name is missing, or the relation is malformed.</exception> <exception cref="T:System.FormatException">The condition uses an unsupported syntax.</exception> </member> <member name="M:Microsoft365DSC.Relations.RelationIndexBuilder.Build"> <summary> Freezes the accumulated relations into an index. </summary> <returns>The built index.</returns> </member> <member name="T:Microsoft365DSC.Relations.RelationResolver"> <summary> Walks an exported resource's property bag along each relation's property path and records the references it finds. </summary> </member> <member name="M:Microsoft365DSC.Relations.RelationResolver.Resolve(System.String,System.String,System.Object)"> <summary> Resolves every relation declared for a resource type against one exported instance. </summary> <param name="resourceName">The resource type being exported.</param> <param name="instanceName">The unique instance name assigned to it.</param> <param name="results">The exported property bag.</param> </member> <member name="M:Microsoft365DSC.Relations.RelationResolver.TryResolvePath(System.Object,System.String[],System.Object@)"> <summary> Follows a dotted property path, fanning out across collections along the way. </summary> <param name="root">The property bag to start from.</param> <param name="path">The path segments.</param> <param name="value">Receives the resolved value.</param> <returns>False when any segment is missing or resolves to nothing.</returns> </member> <member name="M:Microsoft365DSC.Relations.RelationResolver.RegisterValue(System.String,System.String,Microsoft365DSC.Relations.RelationDefinition,System.Object)"> <summary> Records dependencies for a resolved property value, dispatching on its shape. </summary> <param name="resourceName">The source resource type.</param> <param name="instanceName">The source instance name.</param> <param name="relation">The relation being applied.</param> <param name="value">The resolved value.</param> </member> <member name="M:Microsoft365DSC.Relations.RelationResolver.RegisterScalar(System.String,System.String,Microsoft365DSC.Relations.RelationDefinition,System.Object)"> <summary> Records a scalar value as a target key, subject to the relation's condition. </summary> <param name="resourceName">The source resource type.</param> <param name="instanceName">The source instance name.</param> <param name="relation">The relation being applied.</param> <param name="value">The scalar value.</param> <remarks> A condition written against <c>$_</c> tests the value itself, which is how a plain string array is split between target types, for example owners that are user principal names versus owners that are application ids. </remarks> </member> <member name="M:Microsoft365DSC.Relations.RelationResolver.RegisterComplexItem(System.String,System.String,Microsoft365DSC.Relations.RelationDefinition,System.Object)"> <summary> Applies the relation's condition and child property to a single complex item. </summary> <param name="resourceName">The source resource type.</param> <param name="instanceName">The source instance name.</param> <param name="relation">The relation being applied.</param> <param name="item">The item to read the target key from.</param> </member> <member name="M:Microsoft365DSC.Relations.RelationResolver.Register(System.String,System.String,Microsoft365DSC.Relations.RelationDefinition,System.String)"> <summary> Hands one resolved reference to the collector. </summary> <param name="resourceName">The source resource type.</param> <param name="instanceName">The source instance name.</param> <param name="relation">The relation being applied.</param> <param name="targetKey">The value identifying the target instance.</param> </member> </members> </doc> |