[CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$SiteUrl, [Parameter(Mandatory = $true)] [string]$ListTitle, [Parameter(Mandatory = $true)] [string]$ExpiryFieldInternalName ) $isapiPath = Join-Path ([Environment]::GetFolderPath('CommonProgramFiles')) 'microsoft shared\Web Server Extensions\16\ISAPI' Add-Type -Path (Join-Path $isapiPath 'Microsoft.SharePoint.Client.Runtime.dll') Add-Type -Path (Join-Path $isapiPath 'Microsoft.SharePoint.Client.dll') $context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl) $context.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials try { $list = $context.Web.Lists.GetByTitle($ListTitle) $field = $list.Fields.GetByInternalNameOrTitle($ExpiryFieldInternalName) $customActions = $list.UserCustomActions $context.Load($list) $context.Load($field) $context.Load($customActions) $context.ExecuteQuery() Write-Host "Liste: $($list.Title)" Write-Host "Feld: $($field.InternalName)" Write-Host "Field Customizer: $($field.ClientSideComponentId)" Write-Host '' Write-Host 'List User Custom Actions:' $actions = @($customActions | Where-Object { $_.Location -like 'ClientSideExtension.ListViewCommandSet*' -or $_.Name -like 'ExpiryIndicator*' }) if ($actions.Count -eq 0) { Write-Warning 'Kein ExpiryIndicator Command Set an der Liste registriert.' } else { $actions | Select-Object Name, Title, Location, ClientSideComponentId, ClientSideComponentProperties | Format-List } } finally { $context.Dispose() }