From 9751d47060bb57e6c00ba9223957f03706819273 Mon Sep 17 00:00:00 2001 From: Gautam Sheth Date: Sun, 26 Feb 2023 21:20:07 +0530 Subject: [PATCH 1/2] Feature/fix: the Get-PnPField will always return the typed object --- CHANGELOG.md | 2 +- MIGRATE-1.0-to-2.0.md | 1 + documentation/Get-PnPField.md | 26 +----- src/Commands/Fields/GetField.cs | 155 +++++++++++++++----------------- 4 files changed, 76 insertions(+), 108 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71f37e8b8..ae938fccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,7 +65,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). - Removed support for PowerShell 5, only PowerShell 7.2 and later will be supported from here onwards [#2764](https://github.com/pnp/powershell/pull/2764) - Removed `Get-PnPSubscribeSharePointNewsDigest` and `Set-PnPSubscribeSharePointNewsDigest` as the implementation behind these features has been changed in SharePoint Online causing them no longer to work. At present, there's no alternative for this that we can call into thus we will have to remove these in a future version. There is a Design Change Request open with the Program Group to add back APIs for doing this. If that will be accepted and implemented, we will add these back again. [#2720](https://github.com/pnp/powershell/pull/2720) -- +- Removed `-ReturnTyped` parameter from the `Get-PnPField` cmdlet. The retrieved fields will always be returned by their `TypeKind`. ### Fixed - Fixed issue with -CreateDrive on `Connect-PnPOnline` throwing exception on non-existing context diff --git a/MIGRATE-1.0-to-2.0.md b/MIGRATE-1.0-to-2.0.md index 55666d184..6ccf1217f 100644 --- a/MIGRATE-1.0-to-2.0.md +++ b/MIGRATE-1.0-to-2.0.md @@ -73,6 +73,7 @@ Using PnP PowerShell in Azure functions ? You might be required to change the Pn | Add-PnPTeamsChannel | Private | ChannelType | The parameter was obsolete and hence removed. Use `-ChannelType` instead | | New-PnPTeamsTeam | Owner | Owners | The parameter was obsolete and hence removed. Use `-Owners` instead which supports setting multiple owner of a Teams team | | Export-PnPTaxonomy | - | - | The cmdlet does not support export of taxonomy using `UTF-7` encoding. If `UTF-7` is specified, it will switch to `UTF-8` encoding | +| Get-PnPField | ReturnTyped | - | The cmdlet will always return the typed object of the field. | ## Other notable changes diff --git a/documentation/Get-PnPField.md b/documentation/Get-PnPField.md index 75cbff739..7d556c08f 100644 --- a/documentation/Get-PnPField.md +++ b/documentation/Get-PnPField.md @@ -16,7 +16,7 @@ Returns a field from a list or site ## SYNTAX ```powershell -Get-PnPField [-List ] [[-Identity] ] [-Group ] [-InSiteHierarchy] [-ReturnTyped] +Get-PnPField [-List ] [[-Identity] ] [-Group ] [-InSiteHierarchy] [-Connection ] [-Includes ] [] ``` @@ -48,14 +48,6 @@ Get-PnPField -Group "Custom Columns" Gets all the fields for the group called Custom Columns for the site currently connected to -### EXAMPLE 4 - -```powershell -Get-PnPField -List "Demo list" -Identity "Speakers" -ReturnTyped -``` - -Gets the speakers field from the list Demo list and returns it as a typed field. So, if the field type is User, it will be returned as FieldUser. - ## PARAMETERS ### -Connection @@ -133,22 +125,6 @@ Accept pipeline input: True (ByValue) Accept wildcard characters: False ``` -### -ReturnTyped - -Returns the field as the specific field type instead of the generic field type when used with List parameter. -For example, if the field type is User, it will be returned as FieldUser instead of generic Field type. - -```yaml -Type: SwitchParameter -Parameter Sets: (All) - -Required: False -Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - ## RELATED LINKS [Microsoft 365 Patterns and Practices](https://aka.ms/m365pnp) diff --git a/src/Commands/Fields/GetField.cs b/src/Commands/Fields/GetField.cs index 8dd1063b8..28869c5ed 100644 --- a/src/Commands/Fields/GetField.cs +++ b/src/Commands/Fields/GetField.cs @@ -23,9 +23,6 @@ public class GetField : PnPWebRetrievalsCmdlet [Parameter(Mandatory = false, ValueFromPipeline = false)] public SwitchParameter InSiteHierarchy; - [Parameter(Mandatory = false, ValueFromPipeline = false)] - public SwitchParameter ReturnTyped; - protected override void ExecuteCmdlet() { if (List != null) @@ -56,90 +53,84 @@ protected override void ExecuteCmdlet() ClientContext.Load(field, RetrievalExpressions); ClientContext.ExecuteQueryRetry(); - if (ReturnTyped.IsPresent) + switch (field.FieldTypeKind) { - switch (field.FieldTypeKind) - { - case FieldType.DateTime: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Choice: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Calculated: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Computed: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Geolocation: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.User: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Currency: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Guid: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.URL: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Lookup: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.MultiChoice: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Number: - { - WriteObject(ClientContext.CastTo(field)); - break; - } - case FieldType.Invalid: - { - if (field.TypeAsString.StartsWith("TaxonomyFieldType")) - { - WriteObject(ClientContext.CastTo(field)); - break; - } - goto default; - } - default: + case FieldType.DateTime: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Choice: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Calculated: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Computed: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Geolocation: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.User: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Currency: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Guid: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.URL: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Lookup: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.MultiChoice: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Number: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Invalid: + { + if (field.TypeAsString.StartsWith("TaxonomyFieldType")) { - WriteObject(field); + WriteObject(ClientContext.CastTo(field)); break; } - } - } - else - { - WriteObject(field); + goto default; + } + default: + { + WriteObject(field); + break; + } } + } else if (fieldCollection != null) { From 00366b8a22267bb39c0985bca671f56f5be8a809 Mon Sep 17 00:00:00 2001 From: Koen Zomers Date: Fri, 10 Mar 2023 14:51:20 +0100 Subject: [PATCH 2/2] Update CHANGELOG.md Added PR reference --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9baf416f0..a5b6d86d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,7 +68,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). - Removed support for PowerShell 5, only PowerShell 7.2 and later will be supported from here onwards [#2764](https://github.com/pnp/powershell/pull/2764) - Removed `Get-PnPSubscribeSharePointNewsDigest` and `Set-PnPSubscribeSharePointNewsDigest` as the implementation behind these features has been changed in SharePoint Online causing them no longer to work. At present, there's no alternative for this that we can call into thus we will have to remove these in a future version. There is a Design Change Request open with the Program Group to add back APIs for doing this. If that will be accepted and implemented, we will add these back again. [#2720](https://github.com/pnp/powershell/pull/2720) -- Removed `-ReturnTyped` parameter from the `Get-PnPField` cmdlet. The retrieved fields will always be returned by their `TypeKind`. +- Removed `-ReturnTyped` parameter from the `Get-PnPField` cmdlet. The retrieved fields will always be returned by their `TypeKind`. [#2849](https://github.com/pnp/powershell/pull/2849) + ### Fixed - Fixed issue with -CreateDrive on `Connect-PnPOnline` throwing exception on non-existing context