diff --git a/documentation/Add-PnPField.md b/documentation/Add-PnPField.md index c68391868..6f1630d93 100644 --- a/documentation/Add-PnPField.md +++ b/documentation/Add-PnPField.md @@ -18,7 +18,7 @@ Add a field ```powershell Add-PnPField [-List ] -DisplayName -InternalName -Type [-Id ] [-Formula ] [-Choices ] [-AddToDefaultView] [-Required] [-Group ] [-ClientSideComponentId ] - [-ClientSideComponentProperties ] [-AddToAllContentTypes] [-ReturnType ] [-Connection ] + [-ClientSideComponentProperties ] [-AddToAllContentTypes] [-Connection ] ``` ### Add field reference to list @@ -30,7 +30,7 @@ Add-PnPField -List -Field [-Connection -InternalName -Type [-Id ] [-Formula ] [-Choices ] - [-ClientSideComponentId ] [-ClientSideComponentProperties ] [-ReturnType ] + [-ClientSideComponentId ] [-ClientSideComponentProperties ] [-Connection ] ``` @@ -304,21 +304,6 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -ReturnType -The return type of the calculated field. Only valid when Type Calculated is chosen. - -```yaml -Type: FieldType -Parameter Sets: Add field to list, Add field to web -Accepted values: Integer, Text, DateTime, Boolean, Number, Currency - -Required: False -Position: Named -Default value: Text -Accept pipeline input: False -Accept wildcard characters: False -``` - ## RELATED LINKS [Microsoft 365 Patterns and Practices](https://aka.ms/m365pnp) \ No newline at end of file diff --git a/src/Commands/Fields/AddField.cs b/src/Commands/Fields/AddField.cs index 68310cfc6..04452e6c6 100644 --- a/src/Commands/Fields/AddField.cs +++ b/src/Commands/Fields/AddField.cs @@ -167,7 +167,87 @@ protected override void ExecuteCmdlet() ClientContext.Load(f); ClientContext.ExecuteQueryRetry(); } - WriteObject(f); + f.EnsureProperty(f => f.FieldTypeKind); + switch (f.FieldTypeKind) + { + case FieldType.DateTime: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.Choice: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.Calculated: + { + var calculatedField = ClientContext.CastTo(f); + calculatedField.EnsureProperty(fc => fc.Formula); + WriteObject(calculatedField); + break; + } + case FieldType.Computed: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.Geolocation: + { + WriteObject(ClientContext.CastTo(f)); + break; + + } + case FieldType.User: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.Currency: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.Guid: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.URL: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.Lookup: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.MultiChoice: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.Number: + { + WriteObject(ClientContext.CastTo(f)); + break; + } + case FieldType.Invalid: + { + if (f.TypeAsString.StartsWith("TaxonomyFieldType")) + { + WriteObject(ClientContext.CastTo(f)); + break; + } + goto default; + } + default: + { + WriteObject(f); + break; + } + } } else { @@ -207,7 +287,87 @@ protected override void ExecuteCmdlet() list.Update(); ClientContext.ExecuteQueryRetry(); } - WriteObject(field); + field.EnsureProperty(f => f.FieldTypeKind); + switch (field.FieldTypeKind) + { + case FieldType.DateTime: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Choice: + { + WriteObject(ClientContext.CastTo(field)); + break; + } + case FieldType.Calculated: + { + var calculatedField = ClientContext.CastTo(field); + calculatedField.EnsureProperty(fc => fc.Formula); + WriteObject(calculatedField); + 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: + { + WriteObject(field); + break; + } + } } } else @@ -246,7 +406,7 @@ protected override void ExecuteCmdlet() f = CurrentWeb.CreateField(fieldCI); ((FieldCalculated)f).Formula = calculatedFieldParameters.Formula; - if(!string.IsNullOrEmpty(calculatedFieldParameters.ResultType) && Enum.TryParse(calculatedFieldParameters.ResultType, out FieldType resultType)) + if (!string.IsNullOrEmpty(calculatedFieldParameters.ResultType) && Enum.TryParse(calculatedFieldParameters.ResultType, out FieldType resultType)) { ((FieldCalculated)f).OutputType = resultType; } @@ -268,7 +428,7 @@ protected override void ExecuteCmdlet() f.Update(); ClientContext.Load(f); ClientContext.ExecuteQueryRetry(); - } + } switch (f.FieldTypeKind) { case FieldType.DateTime: