@pnp/cli-microsoft365 10.3.0-beta.f5e6f85 → 10.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,210 @@
1
+ import SpoCommand from '../../../base/SpoCommand.js';
2
+ import { globalOptionsZod } from '../../../../Command.js';
3
+ import { z } from 'zod';
4
+ import { zod } from '../../../../utils/zod.js';
5
+ import commands from '../../commands.js';
6
+ import { DOMParser } from '@xmldom/xmldom';
7
+ import { validation } from '../../../../utils/validation.js';
8
+ import { urlUtil } from '../../../../utils/urlUtil.js';
9
+ import request from '../../../../request.js';
10
+ import { formatting } from '../../../../utils/formatting.js';
11
+ const options = globalOptionsZod
12
+ .extend({
13
+ webUrl: zod.alias('u', z.string()
14
+ .refine(url => validation.isValidSharePointUrl(url) === true, url => ({
15
+ message: `'${url}' is not a valid SharePoint Online site URL.`
16
+ }))),
17
+ listId: zod.alias('i', z.string().optional()
18
+ .refine(id => id === undefined || validation.isValidGuid(id), id => ({
19
+ message: `'${id}' is not a valid GUID.`
20
+ }))),
21
+ listTitle: zod.alias('t', z.string().optional()),
22
+ listUrl: z.string().optional(),
23
+ fieldName: z.string(),
24
+ fieldValue: z.string()
25
+ .refine(value => value !== '', `The value cannot be empty. Use 'spo list defaultvalue remove' to remove a default column value.`),
26
+ folderUrl: z.string().optional()
27
+ .refine(url => url === undefined || (!url.includes('#') && !url.includes('%')), 'Due to limitations in SharePoint Online, setting default column values for folders with a # or % character in their path is not supported.')
28
+ })
29
+ .strict();
30
+ class SpoListDefaultValueSetCommand extends SpoCommand {
31
+ get name() {
32
+ return commands.LIST_DEFAULTVALUE_SET;
33
+ }
34
+ get description() {
35
+ return 'Sets default column values for a specific document library';
36
+ }
37
+ get schema() {
38
+ return options;
39
+ }
40
+ getRefinedSchema(schema) {
41
+ return schema
42
+ .refine(options => [options.listId, options.listTitle, options.listUrl].filter(o => o !== undefined).length === 1, {
43
+ message: 'Use one of the following options: listId, listTitle, listUrl.'
44
+ });
45
+ }
46
+ async commandAction(logger, args) {
47
+ try {
48
+ if (this.verbose) {
49
+ await logger.logToStderr(`Setting default column value '${args.options.fieldValue}' for field '${args.options.fieldName}'...`);
50
+ await logger.logToStderr(`Getting server-relative URL of the list...`);
51
+ }
52
+ const listServerRelUrl = await this.getServerRelativeListUrl(args.options);
53
+ let folderUrl = listServerRelUrl;
54
+ if (args.options.folderUrl) {
55
+ if (this.verbose) {
56
+ await logger.logToStderr(`Getting server-relative URL of folder '${args.options.folderUrl}'...`);
57
+ }
58
+ // Casing of the folder URL is important, let's retrieve the correct URL
59
+ const serverRelativeFolderUrl = urlUtil.getServerRelativePath(args.options.webUrl, urlUtil.removeTrailingSlashes(args.options.folderUrl));
60
+ folderUrl = await this.getCorrectFolderUrl(args.options.webUrl, serverRelativeFolderUrl);
61
+ }
62
+ if (this.verbose) {
63
+ await logger.logToStderr(`Getting default column values...`);
64
+ }
65
+ const defaultValuesXml = await this.ensureDefaultColumnValuesXml(args.options.webUrl, listServerRelUrl);
66
+ const modifiedXml = await this.updateFieldValueXml(logger, defaultValuesXml, args.options.fieldName, args.options.fieldValue, folderUrl);
67
+ await this.uploadDefaultColumnValuesXml(logger, args.options.webUrl, listServerRelUrl, modifiedXml);
68
+ }
69
+ catch (err) {
70
+ this.handleRejectedODataJsonPromise(err);
71
+ }
72
+ }
73
+ async getServerRelativeListUrl(options) {
74
+ const requestOptions = {
75
+ url: `${options.webUrl}/_api/Web`,
76
+ headers: {
77
+ accept: 'application/json;odata=nometadata'
78
+ },
79
+ responseType: 'json'
80
+ };
81
+ if (options.listUrl) {
82
+ const serverRelativeUrl = urlUtil.getServerRelativePath(options.webUrl, options.listUrl);
83
+ requestOptions.url += `/GetList('${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
84
+ }
85
+ else if (options.listId) {
86
+ requestOptions.url += `/Lists('${options.listId}')`;
87
+ }
88
+ else if (options.listTitle) {
89
+ requestOptions.url += `/Lists/GetByTitle('${formatting.encodeQueryParameter(options.listTitle)}')`;
90
+ }
91
+ requestOptions.url += '?$expand=RootFolder&$select=RootFolder/ServerRelativeUrl,BaseTemplate';
92
+ try {
93
+ const response = await request.get(requestOptions);
94
+ if (response.BaseTemplate !== 101) {
95
+ throw `The specified list is not a document library.`;
96
+ }
97
+ return response.RootFolder.ServerRelativeUrl;
98
+ }
99
+ catch (error) {
100
+ if (error.status === 404) {
101
+ throw `List '${options.listId || options.listTitle || options.listUrl}' was not found.`;
102
+ }
103
+ throw error;
104
+ }
105
+ }
106
+ async getCorrectFolderUrl(webUrl, folderUrl) {
107
+ const requestOptions = {
108
+ // Using ListItemAllFields endpoint because GetFolderByServerRelativePath doesn't return the correctly cased URL
109
+ url: `${webUrl}/_api/Web/GetFolderByServerRelativePath(decodedUrl='${formatting.encodeQueryParameter(folderUrl)}')/ListItemAllFields?$select=FileRef`,
110
+ headers: {
111
+ accept: 'application/json;odata=nometadata'
112
+ },
113
+ responseType: 'json'
114
+ };
115
+ const response = await request.get(requestOptions);
116
+ if (!response.FileRef) {
117
+ throw `Folder '${folderUrl}' was not found.`;
118
+ }
119
+ return response.FileRef;
120
+ }
121
+ async ensureDefaultColumnValuesXml(webUrl, listServerRelUrl) {
122
+ try {
123
+ const requestOptions = {
124
+ url: `${webUrl}/_api/Web/GetFileByServerRelativePath(decodedUrl='${formatting.encodeQueryParameter(listServerRelUrl + '/Forms/client_LocationBasedDefaults.html')}')/$value`,
125
+ headers: {
126
+ accept: 'application/json;odata=nometadata'
127
+ },
128
+ responseType: 'json'
129
+ };
130
+ const defaultValuesXml = await request.get(requestOptions);
131
+ return defaultValuesXml;
132
+ }
133
+ catch (err) {
134
+ if (err.status !== 404) {
135
+ throw err;
136
+ }
137
+ // For lists that have never had default column values set, the client_LocationBasedDefaults.html file does not exist.
138
+ // In this case, we need to create the file with blank default metadata.
139
+ const requestOptions = {
140
+ url: `${webUrl}/_api/Web/GetFolderByServerRelativePath(decodedUrl='${formatting.encodeQueryParameter(listServerRelUrl + '/Forms')}')/Files/Add(url='client_LocationBasedDefaults.html', overwrite=false)`,
141
+ headers: {
142
+ accept: 'application/json;odata=nometadata',
143
+ 'content-type': 'text/plain'
144
+ },
145
+ responseType: 'json',
146
+ data: '<MetadataDefaults />'
147
+ };
148
+ await request.post(requestOptions);
149
+ return requestOptions.data;
150
+ }
151
+ }
152
+ async updateFieldValueXml(logger, xml, fieldName, fieldValue, folderUrl) {
153
+ if (this.verbose) {
154
+ await logger.logToStderr(`Modifying default column values...`);
155
+ }
156
+ // Encode all spaces in the folder URL
157
+ const encodedFolderUrl = folderUrl.replace(/ /g, '%20');
158
+ const parser = new DOMParser();
159
+ const doc = parser.parseFromString(xml, 'application/xml');
160
+ // Create a new DefaultValue node
161
+ const newDefaultValueNode = doc.createElement('DefaultValue');
162
+ newDefaultValueNode.setAttribute('FieldName', fieldName);
163
+ newDefaultValueNode.textContent = fieldValue;
164
+ const folderLinks = doc.getElementsByTagName('a');
165
+ for (let i = 0; i < folderLinks.length; i++) {
166
+ const folderNode = folderLinks[i];
167
+ const folderNodeUrl = folderNode.getAttribute('href');
168
+ if (encodedFolderUrl !== folderNodeUrl) {
169
+ continue;
170
+ }
171
+ const defaultValues = folderNode.getElementsByTagName('DefaultValue');
172
+ for (let j = 0; j < defaultValues.length; j++) {
173
+ const defaultValueNode = defaultValues[j];
174
+ const defaultValueNodeField = defaultValueNode.getAttribute('FieldName');
175
+ if (defaultValueNodeField !== fieldName) {
176
+ continue;
177
+ }
178
+ // Default value node found, let's update the value
179
+ defaultValueNode.textContent = fieldValue;
180
+ return doc.toString();
181
+ }
182
+ // Default value node not found, let's create it
183
+ folderNode.appendChild(newDefaultValueNode);
184
+ return doc.toString();
185
+ }
186
+ // Folder node was not found, let's create it
187
+ const newFolderNode = doc.createElement('a');
188
+ newFolderNode.setAttribute('href', encodedFolderUrl);
189
+ newFolderNode.appendChild(newDefaultValueNode);
190
+ doc.documentElement.appendChild(newFolderNode);
191
+ return doc.toString();
192
+ }
193
+ async uploadDefaultColumnValuesXml(logger, webUrl, listServerRelUrl, xml) {
194
+ if (this.verbose) {
195
+ await logger.logToStderr(`Uploading default column values to list...`);
196
+ }
197
+ const requestOptions = {
198
+ url: `${webUrl}/_api/Web/GetFileByServerRelativePath(decodedUrl='${formatting.encodeQueryParameter(listServerRelUrl + '/Forms/client_LocationBasedDefaults.html')}')/$value`,
199
+ headers: {
200
+ accept: 'application/json;odata=nometadata',
201
+ 'content-type': 'text/plain'
202
+ },
203
+ responseType: 'json',
204
+ data: xml
205
+ };
206
+ await request.put(requestOptions);
207
+ }
208
+ }
209
+ export default new SpoListDefaultValueSetCommand();
210
+ //# sourceMappingURL=list-defaultvalue-set.js.map
@@ -137,7 +137,10 @@ export default {
137
137
  LIST_CONTENTTYPE_LIST: `${prefix} list contenttype list`,
138
138
  LIST_CONTENTTYPE_REMOVE: `${prefix} list contenttype remove`,
139
139
  LIST_CONTENTTYPE_DEFAULT_SET: `${prefix} list contenttype default set`,
140
+ LIST_DEFAULTVALUE_CLEAR: `${prefix} list defaultvalue clear`,
140
141
  LIST_DEFAULTVALUE_LIST: `${prefix} list defaultvalue list`,
142
+ LIST_DEFAULTVALUE_REMOVE: `${prefix} list defaultvalue remove`,
143
+ LIST_DEFAULTVALUE_SET: `${prefix} list defaultvalue set`,
141
144
  LIST_GET: `${prefix} list get`,
142
145
  LIST_LIST: `${prefix} list list`,
143
146
  LIST_REMOVE: `${prefix} list remove`,
@@ -0,0 +1,47 @@
1
+ import request from '../../../../request.js';
2
+ import GraphCommand from '../../../base/GraphCommand.js';
3
+ import commands from '../../commands.js';
4
+ import { z } from 'zod';
5
+ import { globalOptionsZod } from '../../../../Command.js';
6
+ import { zod } from '../../../../utils/zod.js';
7
+ const options = globalOptionsZod
8
+ .extend({
9
+ displayConcealedNames: zod.alias('d', z.boolean())
10
+ })
11
+ .strict();
12
+ class TenantReportSettingsSetCommand extends GraphCommand {
13
+ get name() {
14
+ return commands.REPORT_SETTINGS_SET;
15
+ }
16
+ get description() {
17
+ return 'Update tenant-level settings for Microsoft 365 reports';
18
+ }
19
+ get schema() {
20
+ return options;
21
+ }
22
+ async commandAction(logger, args) {
23
+ try {
24
+ const { displayConcealedNames } = args.options;
25
+ if (this.verbose) {
26
+ await logger.logToStderr(`Updating report setting displayConcealedNames to ${displayConcealedNames}`);
27
+ }
28
+ const requestOptions = {
29
+ url: `${this.resource}/v1.0/admin/reportSettings`,
30
+ headers: {
31
+ accept: 'application/json;odata.metadata=none',
32
+ 'content-type': 'application/json'
33
+ },
34
+ responseType: 'json',
35
+ data: {
36
+ displayConcealedNames
37
+ }
38
+ };
39
+ await request.patch(requestOptions);
40
+ }
41
+ catch (err) {
42
+ this.handleRejectedODataJsonPromise(err);
43
+ }
44
+ }
45
+ }
46
+ export default new TenantReportSettingsSetCommand();
47
+ //# sourceMappingURL=report-settings-set.js.map
@@ -15,6 +15,7 @@ export default {
15
15
  REPORT_OFFICE365ACTIVATIONSUSERDETAIL: `${prefix} report office365activationsuserdetail`,
16
16
  REPORT_OFFICE365ACTIVATIONSUSERCOUNTS: `${prefix} report office365activationsusercounts`,
17
17
  REPORT_SERVICESUSERCOUNTS: `${prefix} report servicesusercounts`,
18
+ REPORT_SETTINGS_SET: `${prefix} report settings set`,
18
19
  SECURITY_ALERTS_LIST: `${prefix} security alerts list`,
19
20
  SERVICEANNOUNCEMENT_HEALTHISSUE_GET: `${prefix} serviceannouncement healthissue get`,
20
21
  SERVICEANNOUNCEMENT_HEALTH_GET: `${prefix} serviceannouncement health get`,
@@ -31,7 +31,7 @@ m365 entra appregistration add [options]
31
31
  : Comma-separated list of redirect URIs. Requires `platform` to be specified.
32
32
 
33
33
  `-p, --platform [platform]`
34
- : Platform for which the `redirectUris` should be configured. Allowed values `spa`, `web`, `publicClient`.
34
+ : Platform for which the `redirectUris` should be configured. Allowed values `spa`, `web`, `publicClient`. Requires `redirectUris` to be specified.
35
35
 
36
36
  `--implicitFlow`
37
37
  : Specify, to indicate that the authorization endpoint should return ID and access tokens.
@@ -33,6 +33,10 @@ m365 entra roledefinition add [options]
33
33
 
34
34
  <Global />
35
35
 
36
+ ## Remarks
37
+
38
+ Use the `m365 entra rolepermission list --resourceNamespace microsoft.directory` command to get a list of available resource actions.
39
+
36
40
  ## Examples
37
41
 
38
42
  Create a custom Microsoft Entra ID role
@@ -37,6 +37,10 @@ m365 entra roledefinition set [options]
37
37
 
38
38
  <Global />
39
39
 
40
+ ## Remarks
41
+
42
+ Use the `m365 entra rolepermission list --resourceNamespace microsoft.directory` command to get a list of available resource actions.
43
+
40
44
  ## Examples
41
45
 
42
46
  Update a custom Microsoft Entra ID role specified by the id
@@ -0,0 +1,162 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # entra rolepermission list
6
+
7
+ Lists all Microsoft Entra ID role permissions
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 entra rolepermission list [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `-n, --resourceNamespace [resourceNamespace]`
19
+ : The namespace of the resource for which to retrieve role permissions.
20
+
21
+ `-p, --privileged`
22
+ : Retrieve only sensitive role permissions.
23
+ ```
24
+
25
+ <Global />
26
+
27
+ ## Remarks
28
+
29
+ :::warning
30
+
31
+ The command is based on an API that is currently in preview and is subject to change once the API reached general availability.
32
+
33
+ :::
34
+
35
+ ## Examples
36
+
37
+ Get a list of role permissions
38
+
39
+ ```sh
40
+ m365 entra rolepermission list --resourceNamespace 'microsoft.directory'
41
+ ```
42
+
43
+ Get a list of sensitive role permissions
44
+
45
+ ```sh
46
+ m365 entra rolepermission list --resourceNamespace 'microsoft.directory' --privileged
47
+ ```
48
+
49
+ ## Response
50
+
51
+ <Tabs>
52
+ <TabItem value="JSON">
53
+
54
+ ```json
55
+ [
56
+ {
57
+ "actionVerb": null,
58
+ "description": "Create and delete access reviews, and read and update all properties of access reviews in Microsoft Entra ID",
59
+ "id": "microsoft.directory-accessReviews-allProperties-allTasks",
60
+ "isPrivileged": false,
61
+ "name": "microsoft.directory/accessReviews/allProperties/allTasks",
62
+ "resourceScopeId": null
63
+ },
64
+ {
65
+ "actionVerb": "GET",
66
+ "description": "Read all properties of access reviews",
67
+ "id": "microsoft.directory-accessReviews-allProperties-read-get",
68
+ "isPrivileged": false,
69
+ "name": "microsoft.directory/accessReviews/allProperties/read",
70
+ "resourceScopeId": null
71
+ },
72
+ {
73
+ "actionVerb": null,
74
+ "description": "Manage access reviews of application role assignments in Microsoft Entra ID",
75
+ "id": "microsoft.directory-accessReviews-definitions.applications-allProperties-allTasks",
76
+ "isPrivileged": false,
77
+ "name": "microsoft.directory/accessReviews/definitions.applications/allProperties/allTasks",
78
+ "resourceScopeId": null
79
+ },
80
+ {
81
+ "actionVerb": "GET",
82
+ "description": "Read all properties of access reviews of application role assignments in Microsoft Entra ID",
83
+ "id": "microsoft.directory-accessReviews-definitions.applications-allProperties-read-get",
84
+ "isPrivileged": false,
85
+ "name": "microsoft.directory/accessReviews/definitions.applications/allProperties/read",
86
+ "resourceScopeId": null
87
+ }
88
+ ]
89
+ ```
90
+
91
+ </TabItem>
92
+ <TabItem value="Text">
93
+
94
+ ```text
95
+ id name actionVerb isPrivileged
96
+ -------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------- ---------- ------------
97
+ microsoft.directory-accessReviews-allProperties-allTasks microsoft.directory/accessReviews/allProperties/allTasks null false
98
+ microsoft.directory-accessReviews-allProperties-read-get microsoft.directory/accessReviews/allProperties/read GET false
99
+ microsoft.directory-accessReviews-definitions.applications-allProperties-allTasks microsoft.directory/accessReviews/definitions.applications/allProperties/allTasks null false
100
+ microsoft.directory-accessReviews-definitions.applications-allProperties-read-get microsoft.directory/accessReviews/definitions.applications/allProperties/read GET false
101
+ ```
102
+
103
+ </TabItem>
104
+ <TabItem value="CSV">
105
+
106
+ ```csv
107
+ actionVerb,description,id,isPrivileged,name,resourceScopeId
108
+ ,"Create and delete access reviews, and read and update all properties of access reviews in Microsoft Entra ID",microsoft.directory-accessReviews-allProperties-allTasks,0,microsoft.directory/accessReviews/allProperties/allTasks,
109
+ GET,Read all properties of access reviews,microsoft.directory-accessReviews-allProperties-read-get,0,microsoft.directory/accessReviews/allProperties/read,
110
+ ,Manage access reviews of application role assignments in Microsoft Entra ID,microsoft.directory-accessReviews-definitions.applications-allProperties-allTasks,0,microsoft.directory/accessReviews/definitions.applications/allProperties/allTasks,
111
+ GET,Read all properties of access reviews of application role assignments in Microsoft Entra ID,microsoft.directory-accessReviews-definitions.applications-allProperties-read-get,0,microsoft.directory/accessReviews/definitions.applications/allProperties/read,
112
+ ```
113
+
114
+ </TabItem>
115
+ <TabItem value="Markdown">
116
+
117
+ ```md
118
+ # entra rolepermission list --resourceNamespace "microsoft.directory"
119
+
120
+ Date: 1/16/2025
121
+
122
+ ## microsoft.directory/accessReviews/allProperties/allTasks (microsoft.directory-accessReviews-allProperties-allTasks)
123
+
124
+ Property | Value
125
+ ---------|-------
126
+ description | Create and delete access reviews, and read and update all properties of access reviews in Microsoft Entra ID
127
+ id | microsoft.directory-accessReviews-allProperties-allTasks
128
+ isPrivileged | false
129
+ name | microsoft.directory/accessReviews/allProperties/allTasks
130
+
131
+ ## microsoft.directory/accessReviews/allProperties/read (microsoft.directory-accessReviews-allProperties-read-get)
132
+
133
+ Property | Value
134
+ ---------|-------
135
+ actionVerb | GET
136
+ description | Read all properties of access reviews
137
+ id | microsoft.directory-accessReviews-allProperties-read-get
138
+ isPrivileged | false
139
+ name | microsoft.directory/accessReviews/allProperties/read
140
+
141
+ ## microsoft.directory/accessReviews/definitions.applications/allProperties/allTasks (microsoft.directory-accessReviews-definitions.applications-allProperties-allTasks)
142
+
143
+ Property | Value
144
+ ---------|-------
145
+ description | Manage access reviews of application role assignments in Microsoft Entra ID
146
+ id | microsoft.directory-accessReviews-definitions.applications-allProperties-allTasks
147
+ isPrivileged | false
148
+ name | microsoft.directory/accessReviews/definitions.applications/allProperties/allTasks
149
+
150
+ ## microsoft.directory/accessReviews/definitions.applications/allProperties/read (microsoft.directory-accessReviews-definitions.applications-allProperties-read-get)
151
+
152
+ Property | Value
153
+ ---------|-------
154
+ actionVerb | GET
155
+ description | Read all properties of access reviews of application role assignments in Microsoft Entra ID
156
+ id | microsoft.directory-accessReviews-definitions.applications-allProperties-read-get
157
+ isPrivileged | false
158
+ name | microsoft.directory/accessReviews/definitions.applications/allProperties/read
159
+ ```
160
+
161
+ </TabItem>
162
+ </Tabs>
@@ -0,0 +1,34 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # spe container activate
6
+
7
+ Activates a container
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 spe container activate [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `-i, --id <id>`
19
+ : The Id of the container instance.
20
+ ```
21
+
22
+ <Global />
23
+
24
+ ## Examples
25
+
26
+ Activates a container.
27
+
28
+ ```sh
29
+ m365 spe container activate --id "b!ISJs1WRro0y0EWgkUYcktDa0mE8zSlFEqFzqRn70Zwp1CEtDEBZgQICPkRbil_5Z"
30
+ ```
31
+
32
+ ## Response
33
+
34
+ The command won't return a response on success.
@@ -0,0 +1,62 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+
3
+ # spo list defaultvalue clear
4
+
5
+ Clears default column values for a specific document library
6
+
7
+ ## Usage
8
+
9
+ ```sh
10
+ m365 spo list defaultvalue clear [options]
11
+ ```
12
+
13
+ ## Options
14
+
15
+ ```md definition-list
16
+ `-u, --webUrl <webUrl>`
17
+ : URL of the site where the list is located.
18
+
19
+ `-i, --listId [listId]`
20
+ : ID of the list. Specify either `listTitle`, `listId`, or `listUrl`.
21
+
22
+ `-t, --listTitle [listTitle]`
23
+ : Title of the list. Specify either `listTitle`, `listId`, or `listUrl`.
24
+
25
+ `--listUrl [listUrl]`
26
+ : Server- or site-relative URL of the list. Specify either `listTitle`, `listId`, or `listUrl`.
27
+
28
+ `--fieldName [fieldName]`
29
+ : Internal name of the field to clear over the entire list. Specify either `fieldName` or `folderUrl`, but not both.
30
+
31
+ `--folderUrl [folderUrl]`
32
+ : Clear all fields of a specific folder by specifying a server- or site-relative URL. Specify either `fieldName` or `folderUrl`, but not both.
33
+
34
+ `-f, --force`
35
+ : Don't prompt for confirmation.
36
+ ```
37
+
38
+ <Global />
39
+
40
+ ## Examples
41
+
42
+ Remove all default column values from a library
43
+
44
+ ```sh
45
+ m365 spo list defaultvalue clear --webUrl https://contoso.sharepoint.com/sites/Marketing --listTitle Logos
46
+ ```
47
+
48
+ Clear a field from all folders of a library
49
+
50
+ ```sh
51
+ m365 spo list defaultvalue clear --webUrl https://contoso.sharepoint.com/sites/Marketing --listTitle Logos --field Company
52
+ ```
53
+
54
+ Clear all fields from a specific folder in a library
55
+
56
+ ```sh
57
+ m365 spo list defaultvalue clear --webUrl https://contoso.sharepoint.com/sites/Marketing --listTitle Logos --folderUrl "/sites/Marketing/Logos/Contoso"
58
+ ```
59
+
60
+ ## Response
61
+
62
+ The command won't return a response on success.
@@ -0,0 +1,62 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+
3
+ # spo list defaultvalue remove
4
+
5
+ Removes a specific default column value for a specific document library
6
+
7
+ ## Usage
8
+
9
+ ```sh
10
+ m365 spo list defaultvalue remove [options]
11
+ ```
12
+
13
+ ## Options
14
+
15
+ ```md definition-list
16
+ `-u, --webUrl <webUrl>`
17
+ : URL of the site where the list is located.
18
+
19
+ `-i, --listId [listId]`
20
+ : ID of the list. Specify either `listTitle`, `listId`, or `listUrl`.
21
+
22
+ `-t, --listTitle [listTitle]`
23
+ : Title of the list. Specify either `listTitle`, `listId`, or `listUrl`.
24
+
25
+ `--listUrl [listUrl]`
26
+ : Server- or site-relative URL of the list. Specify either `listTitle`, `listId`, or `listUrl`.
27
+
28
+ `--fieldName <fieldName>`
29
+ : Internal name of the field.
30
+
31
+ `--folderUrl [folderUrl]`
32
+ : Server- or site-relative URL of a specific folder to remove the field from. By default, the root folder of the list is used.
33
+
34
+ `-f, --force`
35
+ : Don't prompt for confirmation.
36
+ ```
37
+
38
+ <Global />
39
+
40
+ ## Examples
41
+
42
+ Remove a default column value from the root folder of the list
43
+
44
+ ```sh
45
+ m365 spo list defaultvalue remove --webUrl https://contoso.sharepoint.com/sites/Marketing --listTitle Logos --fieldName Company
46
+ ```
47
+
48
+ Remove a column default value from a specific folder using web-relative URL
49
+
50
+ ```sh
51
+ m365 spo list defaultvalue remove --webUrl https://contoso.sharepoint.com/sites/Marketing --listUrl '/Logos' --fieldName Company --folderUrl '/Logos/Branding'
52
+ ```
53
+
54
+ Remove a column default value from a specific folder by server relative URL
55
+
56
+ ```sh
57
+ m365 spo list defaultvalue remove --webUrl https://contoso.sharepoint.com/sites/Marketing --listId fc6d514f-e7da-47d4-b48b-f72e2fb9c82a --field Company --folderUrl '/sites/Marketing/Logos/Branding'
58
+ ```
59
+
60
+ ## Response
61
+
62
+ The command won't return a response on success.