Svrooij.BetterGraph.xml

<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Svrooij.BetterGraph</name>
    </assembly>
    <members>
        <member name="T:Svrooij.BetterGraph.Commands.ConnectBgGraph">
            <summary>
            <para type="synopsis">Connect to Microsoft Graph</para>
            <para type="description">As with the regular module, you'll need to connect to Graph.</para>
            </summary>
            <psOrder>2</psOrder>
            <parameterSet>
            <para type="name">Interactive</para>
            <para type="description">Interactive browser login. This will integrate with the native broker based login screen on Windows and with the default browser on other platforms.</para>
            </parameterSet>
            <parameterSet>
            <para type="name">UseDefaultCredentials</para>
            <para type="description">A more extended version of the Managed Identity is the Default Credentials, this will use the [DefaultAzureCredential](https://learn.microsoft.com/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet&amp;wt.mc_id=SEC-MVP-5004985), from the `Azure.Identity` package. This will try several methods to authenticate, Environment Variables, Managed Identity, Azure CLI and more.</para>
            </parameterSet>
            <parameterSet>
            <para type="name">Token</para>
            <para type="description">Let's say you have a token from another source, just hand us to token and we'll use it to connect to Intune. This token has a limited lifetime, so you'll be responsible for refreshing it.</para>
            </parameterSet>
            <parameterSet>
            <para type="name">ClientCredentials</para>
            <para type="description">:::warning Last resort\r\nUsing client credentials is not recommended because you'll have to keep the secret, **secret**!\r\n\r\nPlease let us know if you have to use this method, we might be able to help you with a better solution.\r\n:::</para>
            </parameterSet>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.ConnectBgGraph.Username">
            <summary>
            
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.ConnectBgGraph.TenantId">
            <summary>
            
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.ConnectBgGraph.NoBroker">
            <summary>
            
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.ConnectBgGraph.ClientId">
            <summary>
            Alternative client ID for interactive / client credentials login
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.ConnectBgGraph.ClientSecret">
            <summary>
            Client secret for client credentials flow
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.ConnectBgGraph.Scopes">
            <summary>
            One or more scopes to request
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.ConnectBgGraph.Token">
            <summary>
            Use a token from another source to connect to Intune
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.ConnectBgGraph.UseDefaultCredentials">
            <summary>
            Use default Azure Credentials from Azure.Identity to connect to Graph
            </summary>
        </member>
        <member name="M:Svrooij.BetterGraph.Commands.ConnectBgGraph.ProcessRecordAsync(System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Svrooij.BetterGraph.Commands.DisconnectBgGraph">
            <summary>
            Remove the authentication provider from the current session.
            </summary>
        </member>
        <member name="M:Svrooij.BetterGraph.Commands.DisconnectBgGraph.BeginProcessing">
            <inheritdoc />
        </member>
        <member name="T:Svrooij.BetterGraph.Commands.GetBgToken">
            <summary>
            Get a Bearer token from the authentication provider.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.GetBgToken.OutputProperty">
            <summary>
            Gets or sets the property to which the token is written, instead of writing to the output.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.GetBgToken.AsSecureString">
            <summary>
            Should the token be returned as a secure string?
            </summary>
            <remarks>This makes the <see cref="P:Svrooij.BetterGraph.Commands.GetBgToken.OutputProperty"/> mandatory</remarks>
        </member>
        <member name="M:Svrooij.BetterGraph.Commands.GetBgToken.ProcessRecordAsync(System.Threading.CancellationToken)">
            <inheritdoc/>
        </member>
        <member name="M:Svrooij.BetterGraph.Commands.GetBgToken.GetTokenAsync(Microsoft.Kiota.Abstractions.Authentication.IAuthenticationProvider,System.Threading.CancellationToken)">
            <summary>
            Asynchronously retrieves a token from the authentication provider.
            </summary>
            <param name="authenticationProvider"></param>
            <param name="cancellationToken">A token to monitor for cancellation requests.</param>
            <returns>A task that represents the asynchronous operation. The task result contains the token string if successful; otherwise, null.</returns>
            <exception cref="T:System.InvalidOperationException">Thrown when the authentication provider is not set.</exception>
        </member>
        <member name="T:Svrooij.BetterGraph.Commands.Users.GetBgUser">
             <summary>
             <para type="synopsis">List users or get single user</para>
             <para type="description">\r\n\r\nThis is an [**authenticated command**](./authentication), so call [Connect-BgGraph](./Connect-BgGraph) before calling this command.</para>
             </summary>
             <psOrder>10</psOrder>
             <example>
             <para type="name">Get top 10 users and select few parameters</para>
             <para type="description">Get a list of first 10 users in this tenant, and format the result as a table.</para>
             <code>Get-BgUser -Top 10 -Select Id, DisplayName, UserPrincipalName | Format-table -Property Id, DisplayName, UserPrincipalName</code>
             </example>
             <example>
             <para type="name">Get user by id</para>
             <para type="description">Get a single user by id (or user principal name)</para>
             <code>Get-BgUser -UserId &quot;8195b446-e1dd-4064-a410-a1494d1ffe1b&quot; | Format-List</code>
             </example>
             <example>
             <para type="name">Auto paging</para>
             <para type="description">Let the module auto page over all results in pages of 10, you'll get the Users async as long as you use them in a pipe</para>
             <code>Get-BgUser -Top 10 -All -Select Id, DisplayName, UserPrincipalName | Format-Table -Property Id, DisplayName, UserPrincipalName</code>
             </example>
             <example>
             <para type="name">Manual paging</para>
             <para type="description">If you get users and do not set the `-All` parameter, it will set the `$GetBgUserNextLink` if there are more pages. Use this code to get the next page.</para>
             <code>Get-BgUser -NextLink $GetBgUserNextLink | Format-Table -Property Id, DisplayName, UserPrincipalName</code>
             </example>
             <parameterSet>
             <para type="name">ById</para>
             <para type="description">Get a single user by specifying the UserId.</para>
             </parameterSet>
            
             <parameterSet>
             <para type="name">Users</para>
             <para type="description">Get a list of users, optionally filtered, selected, or paged.</para>
             </parameterSet>
            
             <parameterSet>
             <para type="name">UsersPaging</para>
             <para type="description">Get the next page of users using a NextLink from a previous response.</para>
             </parameterSet>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.GetBgUser.UserId">
            <summary>
            Gets or sets the unique identifier or user principal name of the user to retrieve.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.GetBgUser.Filter">
            <summary>
            Gets or sets the OData filter to apply when retrieving users.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.GetBgUser.Select">
            <summary>
            Gets or sets the properties to select for each user.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.GetBgUser.Top">
            <summary>
            Gets or sets the maximum number of users to return.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.GetBgUser.All">
            <summary>
            Gets or sets a value indicating whether to retrieve all users using auto-paging.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.GetBgUser.NextLink">
            <summary>
            Gets or sets the next link for paging through users.
            </summary>
        </member>
        <member name="M:Svrooij.BetterGraph.Commands.Users.GetBgUser.ProcessRecordAsync(System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Svrooij.BetterGraph.Commands.Users.NewBgUser">
             <summary>
             <para type="synopsis">Create a new user in Microsoft Graph.</para>
             <para type="description">
             This is an <b>authenticated command</b>, so call <c>Connect-BgGraph</c> before using this command.
             </para>
             </summary>
             <psOrder>20</psOrder>
             <example>
             <para type="name">Create a simple user</para>
             <para type="description">Create a user with a display name, user principal name, and password.</para>
             <code>New-BgUser -UserPrincipalName "john.doe@contoso.com" -DisplayName "John Doe" -Password "P@ssw0rd!"</code>
             </example>
             <example>
             <para type="name">Create a user from a user object</para>
             <para type="description">Create a user by passing a pre-configured <c>User</c> object.</para>
             <code>$user = [Microsoft.Graph.Beta.Models.User]::new()
             $user.UserPrincipalName = "jane.doe@contoso.com"
             $user.DisplayName = "Jane Doe"
             New-BgUser -User $user -Password "AnotherP@ssw0rd!"</code>
             </example>
            
             <parameterSet>
             <para type="name">Simple</para>
             <para type="description">Create a user by specifying <c>UserPrincipalName</c>, <c>DisplayName</c>, and <c>Password</c> directly.</para>
             </parameterSet>
            
             <parameterSet>
             <para type="name">Object</para>
             <para type="description">Create a user by passing a <c>User</c> object, optionally with a <c>Password</c>.</para>
             </parameterSet>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.NewBgUser.UserPrincipalName">
            <summary>
            Gets or sets the user principal name for the new user.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.NewBgUser.DisplayName">
            <summary>
            Gets or sets the display name for the new user.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.NewBgUser.Password">
            <summary>
            Gets or sets the password for the new user.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.NewBgUser.User">
            <summary>
            Gets or sets the user object to create.
            </summary>
        </member>
        <member name="M:Svrooij.BetterGraph.Commands.Users.NewBgUser.ProcessRecordAsync(System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Svrooij.BetterGraph.Commands.Users.RemoveBgUser">
            <summary>
            <para type="synopsis">Remove a user from Microsoft Graph.</para>
            <para type="description">
            This is an <b>authenticated command</b>, so call <c>Connect-BgGraph</c> before using this command.
            </para>
            </summary>
            <psOrder>30</psOrder>
            <example>
            <para type="name">Remove a user by ID</para>
            <para type="description">Delete a user by specifying their unique ID.</para>
            <code>Remove-BgUser -UserId "8195b446-e1dd-4064-a410-a1494d1ffe1b"</code>
            </example>
            <parameterSet>
            <para type="name">Default</para>
            <para type="description">Remove a user by specifying the <c>UserId</c>.</para>
            </parameterSet>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.RemoveBgUser.UserId">
            <summary>
            Gets or sets the unique identifier of the user to remove.
            </summary>
        </member>
        <member name="M:Svrooij.BetterGraph.Commands.Users.RemoveBgUser.ProcessRecordAsync(System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Svrooij.BetterGraph.Commands.Users.SetBgUser">
            <summary>
            <para type="synopsis">Update an existing user in Microsoft Graph.</para>
            <para type="description">
            This is an <b>authenticated command</b>, so call <c>Connect-BgGraph</c> before using this command.
            Use this command to modify properties of an existing user by specifying their <c>UserId</c> and a <c>User</c> object with updated values.
            </para>
            </summary>
            <psOrder>40</psOrder>
            <example>
            <para type="name">Update a user's display name</para>
            <para type="description">Change the display name of a user by specifying their ID and a user object with the new display name.</para>
            <code>
            $user = [Microsoft.Graph.Beta.Models.User]::new()
            # Or get the user from Get-BgUser and modify it
            $user.DisplayName = "New Display Name"
            Set-BgUser -UserId "8195b446-e1dd-4064-a410-a1494d1ffe1b" -User $user</code>
            </example>
            <parameterSet>
            <para type="name">Default</para>
            <para type="description">Update a user by specifying the <c>UserId</c> and a <c>User</c> object containing the properties to update.</para>
            </parameterSet>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.SetBgUser.UserId">
            <summary>
            Gets or sets the unique identifier of the user to update.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Commands.Users.SetBgUser.User">
            <summary>
            Gets or sets the user object containing updated properties.
            </summary>
        </member>
        <member name="M:Svrooij.BetterGraph.Commands.Users.SetBgUser.ProcessRecordAsync(System.Threading.CancellationToken)">
            <inheritdoc />
        </member>
        <member name="T:Svrooij.BetterGraph.Plumbing.GraphClientFactory">
            <summary>
            Helper class to create authenticated instances of GraphServiceClient.
            </summary>
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.GraphClientFactory.#ctor(System.Net.Http.HttpClient,Microsoft.Kiota.Abstractions.Authentication.IAuthenticationProvider)">
            <summary>
            
            </summary>
            <param name="httpClient"></param>
            <param name="authenticationProvider"></param>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.GraphClientFactory.GetClient">
            <summary>
            Creates and returns a new instance of <see cref="T:Microsoft.Graph.Beta.GraphServiceClient"/> configured with the specified
            authentication provider and HTTP client.
            </summary>
            <remarks>The returned <see cref="T:Microsoft.Graph.Beta.GraphServiceClient"/> is initialized with an <see
            cref="T:Microsoft.Kiota.Http.HttpClientLibrary.HttpClientRequestAdapter"/> that uses the provided authentication provider and HTTP client. Ensure that
            the authentication provider is properly configured to handle authentication for requests made by the
            client.</remarks>
            <returns>A <see cref="T:Microsoft.Graph.Beta.GraphServiceClient"/> instance configured for making requests to the Microsoft Graph API.</returns>
        </member>
        <member name="T:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProvider">
            <summary>
            Provides an authentication provider that supports interactive user authentication using the Microsoft Authentication
            Library (MSAL).
            </summary>
            <remarks>This provider is designed to acquire tokens interactively or silently for accessing resources.
            It supports caching of authentication tokens and can be configured to use a broker for
            authentication on supported platforms.</remarks>
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProvider.#ctor(Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProviderOptions)">
            <summary>
            Initializes a new instance of the <see cref="T:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProvider"/> class with the specified
            options for interactive authentication.
            </summary>
            <remarks>This constructor sets up the authentication provider using the provided options. If the
            client ID is not specified, a default client ID is used. The authentication flow can be customized with tenant
            ID and broker options.</remarks>
            <param name="options">The options used to configure the interactive authentication provider. Must include at least one scope and a
            valid client ID.</param>
            <exception cref="T:System.ArgumentException">Thrown if <paramref name="options"/> does not specify any scopes.</exception>
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProvider.AccuireTokenAsync(System.Collections.Generic.IEnumerable{System.String},System.String,System.String,System.Threading.CancellationToken)">
            <summary>
            Gets an access token for the specified scopes, tenant ID, and user ID.
            </summary>
            <param name="scopes"></param>
            <param name="tenantId"></param>
            <param name="userId"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProvider.AcquireTokenInteractiveAsync(System.Collections.Generic.IEnumerable{System.String},System.String,System.String,System.Threading.CancellationToken)">
            <summary>
            
            </summary>
            <param name="scopes"></param>
            <param name="tenantId"></param>
            <param name="userId"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProvider.AuthenticateRequestAsync(Microsoft.Kiota.Abstractions.RequestInformation,System.Collections.Generic.Dictionary{System.String,System.Object},System.Threading.CancellationToken)">
            <summary>
            
            </summary>
            <param name="request"></param>
            <param name="additionalAuthenticationContext"></param>
            <param name="cancellationToken"></param>
            <returns></returns>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="T:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProviderOptions">
            <summary>
            Represents the options for configuring an interactive authentication provider.
            </summary>
            <remarks>This class is used to specify the settings required for interactive authentication, including the
            scopes for which access is requested, and optional parameters such as the client ID, tenant ID, and username. The
            <see cref="P:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProviderOptions.UseBroker"/> property defaults to <see langword="true"/> on Windows platforms.</remarks>
        </member>
        <member name="P:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProviderOptions.Scopes">
            <summary>
            One or more scopes for which the access token is requested.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProviderOptions.UseBroker">
            <summary>
            Should the authentication provider use a broker for authentication?
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProviderOptions.Username">
            <summary>
            Username to use for authentication, if applicable. Used for auto filling the login
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProviderOptions.ClientId">
            <summary>
            Gets or sets the client identifier.
            </summary>
        </member>
        <member name="P:Svrooij.BetterGraph.Plumbing.InteractiveAuthenticationProviderOptions.TenantId">
            <summary>
            The tenant ID to use for authentication. If not specified, the default tenant is used.
            </summary>
        </member>
        <member name="F:Svrooij.BetterGraph.Plumbing.BrokerHandle.GetAncestorFlags.GetRootOwner">
            <summary>
            Retrieves the owned root window by walking the chain of parent and owner windows returned by GetParent.
            </summary>
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.BrokerHandle.GetAncestor(System.IntPtr,Svrooij.BetterGraph.Plumbing.BrokerHandle.GetAncestorFlags)">
            <summary>
            Retrieves the handle to the ancestor of the specified window.
            </summary>
            <param name="hwnd">A handle to the window whose ancestor will be retrieved.
            If this parameter is the desktop window, the function returns NULL. </param>
            <param name="flags">The ancestor to be retrieved.</param>
            <returns>The return value is the handle to the ancestor window.</returns>
        </member>
        <member name="T:Svrooij.BetterGraph.Plumbing.ModuleInitializer">
            <summary>
            Custom module initializer for importing required assemblies at runtime.
            </summary>
            <remarks>This is to fix the mess with powershell assembly loading. This class will be called automatically when this module is imported</remarks>
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.ModuleInitializer.OnImport">
            <inheritdoc />
        </member>
        <member name="M:Svrooij.BetterGraph.Plumbing.ModuleInitializer.OnRemove(System.Management.Automation.PSModuleInfo)">
            <inheritdoc />
        </member>
        <member name="T:Svrooij.BetterGraph.Plumbing.StaticAuthenticationProvider">
            <summary>
            Provides a static authentication mechanism using a pre-defined token.
            </summary>
            <remarks>This authentication provider adds a bearer token to the request headers for authorization. It is
            suitable for scenarios where a fixed token is used for authentication.</remarks>
        </member>
        <member name="T:Svrooij.BetterGraph.GraphStartup">
            <summary>
            Provides startup configuration for a Graph-based application, extending the <see cref="T:Svrooij.PowerShell.DI.PsStartup"/> class.
            </summary>
            <remarks>This class is responsible for configuring services and logging specific to applications that interact
            with Microsoft Graph. It sets up the necessary authentication providers, HTTP clients, and logging configurations
            tailored for Graph API interactions.</remarks>
        </member>
        <member name="M:Svrooij.BetterGraph.GraphStartup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <inhertdoc />
        </member>
        <member name="M:Svrooij.BetterGraph.GraphStartup.ConfigurePowerShellLogging">
            <inhertdoc />
        </member>
        <member name="T:Svrooij.BetterGraph.Startup">
            <inheritdoc />
        </member>
        <member name="M:Svrooij.BetterGraph.Startup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <inheritdoc />
        </member>
        <member name="T:Svrooij.PowerShell.DI.GenerateBindingsAttribute">
            <summary>
            Tell the source generator to generate code to bind the dependencies instead of using reflection.
            </summary>
            <remarks>Your class has to be a partial class and extend <see cref="T:Svrooij.PowerShell.DI.DependencyCmdlet`1"/>.</remarks>
        </member>
        <member name="T:Svrooij.PowerShell.DI.ServiceDependencyAttribute">
            <summary>
            Mark a field or property as a dependency that has to be resolved by the <see cref="T:System.IServiceProvider"/>.
            </summary>
        </member>
        <member name="P:Svrooij.PowerShell.DI.ServiceDependencyAttribute.Required">
            <summary>
            Should the dependency be required, if it is not found an exception will be thrown.
            </summary>
        </member>
        <member name="T:Svrooij.PowerShell.DI.Logging.PowerShellLogger">
            <summary>
            <see cref="T:Microsoft.Extensions.Logging.ILogger"/> that outputs to the PowerShell <see cref="T:System.Management.Automation.PSCmdlet"/>
            </summary>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PowerShellLogger.#ctor(System.String,System.Func{Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration},System.Management.Automation.PSCmdlet)">
            <summary>
            Constructor for <see cref="T:Svrooij.PowerShell.DI.Logging.PowerShellLogger"/>
            </summary>
            <remarks>Called automatically by the <see cref="T:Svrooij.PowerShell.DI.Logging.PowerShellLoggerProvider"/></remarks>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PowerShellLogger.Log``1(Microsoft.Extensions.Logging.LogLevel,Microsoft.Extensions.Logging.EventId,``0,System.Exception,System.Func{``0,System.Exception,System.String})">
            <inheritdoc/>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PowerShellLogger.IsEnabled(Microsoft.Extensions.Logging.LogLevel)">
            <inheritdoc/>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PowerShellLogger.BeginScope``1(``0)">
            <inheritdoc/>
        </member>
        <member name="T:Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration">
            <summary>
            Configuration for the <see cref="T:Svrooij.PowerShell.DI.Logging.PowerShellLoggerProvider"/>
            </summary>
        </member>
        <member name="P:Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration.DefaultLevel">
            <summary>
            Minimum level of log messages to output
            </summary>
        </member>
        <member name="P:Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration.LogLevel">
            <summary>
            Override the minimum level for specific categories (Type Names)
            </summary>
        </member>
        <member name="P:Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration.IncludeCategory">
            <summary>
            Specify if the log message should be prefixed with the category name
            </summary>
        </member>
        <member name="P:Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration.StripNamespace">
            <summary>
            Strip the namespace from the category name
            </summary>
        </member>
        <member name="T:Svrooij.PowerShell.DI.Logging.PowerShellLoggerProvider">
            <summary>
            <see cref="T:Microsoft.Extensions.Logging.ILoggerProvider"/> that outputs to the PowerShell <see cref="T:System.Management.Automation.PSCmdlet"/>
            </summary>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PowerShellLoggerProvider.#ctor(Microsoft.Extensions.Options.IOptionsMonitor{Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration},Svrooij.PowerShell.DI.Logging.PowerShellLoggerContainer)">
            <summary>
            Creates a new instance of <see cref="T:Svrooij.PowerShell.DI.Logging.PowerShellLoggerProvider"/>
            </summary>
            <param name="config">Auto loaded configuration</param>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PowerShellLoggerProvider.CreateLogger(System.String)">
            <summary>
            Creates a new <see cref="T:Microsoft.Extensions.Logging.ILogger"/> instance.
            </summary>
            <param name="categoryName">Category name to use</param>
            <returns><see cref="T:Microsoft.Extensions.Logging.ILogger"/></returns>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PowerShellLoggerProvider.Dispose">
            <summary>
            Dispose the provider
            </summary>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PsCmdletExtensions.WriteLog(System.Management.Automation.PSCmdlet,Microsoft.Extensions.Logging.LogLevel,System.Int32,System.String,System.Exception)">
            <summary>
            Write a log message to the provider PowerShell <see cref="T:System.Management.Automation.PSCmdlet"/>
            </summary>
            <param name="cmdlet"><see cref="T:System.Management.Automation.PSCmdlet"/> that is used for the log message</param>
            <param name="logLevel"><see cref="T:Microsoft.Extensions.Logging.LogLevel"/> for the message, will be put in from the message</param>
            <param name="eventId">The ID for this specific event</param>
            <param name="message">Log message</param>
            <param name="e">(optional) <see cref="T:System.Exception"/></param>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.PowershellLoggingBuilderExtensions.AddPowerShellLogging(Microsoft.Extensions.Logging.ILoggingBuilder)">
            <summary>
            Adds a PowerShell logger named 'PowerShell' to the logger factory.
            </summary>
            <param name="builder"><see cref="T:Microsoft.Extensions.Logging.ILoggingBuilder"/> that you get when you call serviceCollection.AddLogging(builder =>)</param>
            <returns><see cref="T:Microsoft.Extensions.Logging.ILoggingBuilder"/> to support chaining</returns>
        </member>
        <member name="M:Svrooij.PowerShell.DI.Logging.ServiceProviderLoggerExtensions.AddPowerShellLogging(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration})">
            <summary>
            Adds a PowerShell logger named 'PowerShell' to the service collection.
            </summary>
            <param name="services"><see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> you want to add logging to</param>
            <param name="configure">(optional) action to configure the <see cref="T:Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration"/></param>
            <returns><see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> to support chaining</returns>
            <exception cref="T:System.ArgumentNullException">When one of the required arguments are not set</exception>
        </member>
        <member name="T:Svrooij.PowerShell.DI.ThreadAffinitiveSynchronizationContext">
            <summary>
            A synchronisation context that runs all calls scheduled on it (via <see cref="M:System.Threading.SynchronizationContext.Post(System.Threading.SendOrPostCallback,System.Object)"/>) on a single thread.
            </summary>
            <remarks>This part is taken from <see href="https://github.com/NTTLimitedRD/OctopusDeploy.Powershell/blob/7653993ffbf3ddfc7381e1196dbaa6fdf43cd982/OctopusDeploy.Powershell/ThreadAffinitiveSynchronizationContext.cs">OctopusDeploy.Powershell</see> licensed under <see href="https://github.com/NTTLimitedRD/OctopusDeploy.Powershell/blob/7653993ffbf3ddfc7381e1196dbaa6fdf43cd982/LICENSE">MIT</see>. And was then optimized using Github Copilot.</remarks>
        </member>
        <member name="F:Svrooij.PowerShell.DI.ServiceProviderCache.ProviderCache">
            <summary>
            Cache for service providers, keyed by the startup type.
            </summary>
        </member>
        <member name="T:Svrooij.PowerShell.DI.PsStartup">
            <summary>
            Base class for startup classes for PowerShell cmdlets.
            Create a class that extends this class and override <see cref="M:Svrooij.PowerShell.DI.PsStartup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)"/>.
            </summary>
            <remarks>
            This class is called automatically by the <see cref="T:Svrooij.PowerShell.DI.DependencyCmdlet`1"/> constructor.
            Logging is automatically added to the <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>, please don't mess with the logging part.
            </remarks>
        </member>
        <member name="M:Svrooij.PowerShell.DI.PsStartup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Override this method to configure the <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> needed by your application.
            </summary>
            <param name="services"><see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/> that you can add services to.</param>
            <remarks>Logging is setup for you, overriding it breaks stuff!</remarks>
        </member>
        <member name="M:Svrooij.PowerShell.DI.PsStartup.ConfigurePowerShellLogging">
            <summary>
            Override this method to configure the <see cref="T:Svrooij.PowerShell.DI.Logging.PowerShellLoggerConfiguration"/> needed by your application.
            </summary>
            <code>
            return builder =>
            {
               builder.MinimumLevel = LogLevel.Information;
            };
            </code>
        </member>
        <member name="T:Svrooij.PowerShell.DI.DependencyCmdlet`1">
            <summary>
            Base class for cmdlets that use dependency injection.
            <para>Use the <see cref="T:Svrooij.PowerShell.DI.GenerateBindingsAttribute"/> to tell the compiler to generate binding code instead of using reflection</para>
            </summary>
            <typeparam name="T">Your startup class that has to extend <see cref="T:Svrooij.PowerShell.DI.PsStartup"/> and extend <see cref="M:Svrooij.PowerShell.DI.PsStartup.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)"/>.</typeparam>
            <remarks>You should override <see cref="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.ProcessRecordAsync(System.Threading.CancellationToken)"/>. A lot of other methods are blocked from overriding.</remarks>
        </member>
        <member name="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.#ctor">
            <summary>
            <see cref="T:Svrooij.PowerShell.DI.DependencyCmdlet`1"/> constructor, called by PowerShell.
            </summary>
        </member>
        <member name="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.ProcessRecordAsync(System.Threading.CancellationToken)">
            <summary>
            Override this method to process each record.
            </summary>
            <param name="cancellationToken">The cancellation token will be called when the user presses CTRL+C during execution</param>
            <remarks>Your overridden method will be called automatically!</remarks>
            <exception cref="T:System.NotImplementedException">When not overridden</exception>
            <exception cref="T:System.InvalidOperationException">When one or more dependencies marked as required are not found</exception>
        </member>
        <member name="P:Svrooij.PowerShell.DI.DependencyCmdlet`1.BindDependencies">
            <summary>
            Override this property to bind dependencies manually, the service provider is provided by the base library.
            </summary>
        </member>
        <member name="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.ProcessRecord">
            <summary>
            You can call ProcessRecord, but you cannot override it!
            </summary>
            <remarks>Override the <see cref="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.ProcessRecordAsync(System.Threading.CancellationToken)"/> method, which is called automatically.</remarks>
        </member>
        <member name="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.BeginProcessing">
            <summary>
            You can call BeginProcessing, but you cannot override it!
            </summary>
            <remarks>This is called by PowerShell automatically. And is used to bind dependencies.</remarks>
        </member>
        <member name="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.StopProcessing">
            <summary>
            You can call StopProcessing, but you cannot override it!
            </summary>
            <remarks>This is called by PowerShell if the user cancels the request. If is used to trigger the cancellationToken on <see cref="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.ProcessRecordAsync(System.Threading.CancellationToken)"/>.</remarks>
        </member>
        <member name="M:Svrooij.PowerShell.DI.DependencyCmdlet`1.EndProcessing">
            <summary>
            You can call EndProcessing, but you cannot override it!
            </summary>
            <remarks>This is called by PowerShell automatically.</remarks>
        </member>
        <member name="M:Svrooij.PowerShell.DI.ServiceProviderExtensions.BindDependencies(System.IServiceProvider,System.Object)">
            <summary>
            Use reflection to find all properties and fields with the <see cref="T:Svrooij.PowerShell.DI.ServiceDependencyAttribute"/> and set the value of the property or field using the service provider.
            </summary>
            <param name="serviceProvider"><see cref="T:System.IServiceProvider"/> to use to resolve dependencies</param>
            <param name="obj">The object where the dependencies have to be set</param>
            <exception cref="T:System.ArgumentNullException">if required arguments are not set</exception>
            <exception cref="T:System.InvalidOperationException">if a required dependency is not found</exception>"
        </member>
    </members>
</doc>