@pnp/cli-microsoft365 10.0.0-beta.1a88ed2 → 10.0.0-beta.303b62c
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.
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/m365/entra/commands/m365group/m365group-user-remove.js +4 -13
- package/dist/m365/spo/commands/folder/folder-copy.js +43 -35
- package/dist/m365/spo/commands/page/page-publish.js +54 -0
- package/dist/m365/spo/commands/userprofile/userprofile-get.js +1 -1
- package/dist/m365/spo/commands.js +1 -0
- package/docs/docs/cmd/entra/m365group/m365group-user-remove.mdx +2 -5
- package/docs/docs/cmd/spo/folder/folder-copy.mdx +84 -13
- package/docs/docs/cmd/spo/page/page-publish.mdx +41 -0
- package/package.json +1 -1
|
@@ -29,9 +29,6 @@ class EntraM365GroupUserRemoveCommand extends GraphCommand {
|
|
|
29
29
|
__classPrivateFieldGet(this, _EntraM365GroupUserRemoveCommand_instances, "m", _EntraM365GroupUserRemoveCommand_initTypes).call(this);
|
|
30
30
|
}
|
|
31
31
|
async commandAction(logger, args) {
|
|
32
|
-
if (args.options.userName) {
|
|
33
|
-
await this.warn(logger, `Option 'userName' is deprecated. Please use 'ids' or 'userNames' instead.`);
|
|
34
|
-
}
|
|
35
32
|
const removeUser = async () => {
|
|
36
33
|
try {
|
|
37
34
|
const groupId = await this.getGroupId(logger, args.options.groupId, args.options.teamId, args.options.groupName, args.options.teamName);
|
|
@@ -39,7 +36,7 @@ class EntraM365GroupUserRemoveCommand extends GraphCommand {
|
|
|
39
36
|
if (!isUnifiedGroup) {
|
|
40
37
|
throw Error(`Specified group with id '${groupId}' is not a Microsoft 365 group.`);
|
|
41
38
|
}
|
|
42
|
-
const userNames = args.options.userNames
|
|
39
|
+
const userNames = args.options.userNames;
|
|
43
40
|
const userIds = await this.getUserIds(logger, args.options.ids, userNames);
|
|
44
41
|
await this.removeUsersFromGroup(groupId, userIds, 'owners');
|
|
45
42
|
await this.removeUsersFromGroup(groupId, userIds, 'members');
|
|
@@ -52,7 +49,7 @@ class EntraM365GroupUserRemoveCommand extends GraphCommand {
|
|
|
52
49
|
await removeUser();
|
|
53
50
|
}
|
|
54
51
|
else {
|
|
55
|
-
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove ${args.options.
|
|
52
|
+
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove ${args.options.userNames || args.options.ids} from ${args.options.groupId || args.options.groupName || args.options.teamId || args.options.teamName}?` });
|
|
56
53
|
if (result) {
|
|
57
54
|
await removeUser();
|
|
58
55
|
}
|
|
@@ -105,7 +102,6 @@ _EntraM365GroupUserRemoveCommand_instances = new WeakSet(), _EntraM365GroupUserR
|
|
|
105
102
|
groupId: typeof args.options.groupId !== 'undefined',
|
|
106
103
|
teamName: typeof args.options.teamName !== 'undefined',
|
|
107
104
|
groupName: typeof args.options.groupName !== 'undefined',
|
|
108
|
-
userName: typeof args.options.userName !== 'undefined',
|
|
109
105
|
ids: typeof args.options.ids !== 'undefined',
|
|
110
106
|
userNames: typeof args.options.userNames !== 'undefined'
|
|
111
107
|
});
|
|
@@ -119,8 +115,6 @@ _EntraM365GroupUserRemoveCommand_instances = new WeakSet(), _EntraM365GroupUserR
|
|
|
119
115
|
option: '--teamId [teamId]'
|
|
120
116
|
}, {
|
|
121
117
|
option: '--teamName [teamName]'
|
|
122
|
-
}, {
|
|
123
|
-
option: '-n, --userName [userName]'
|
|
124
118
|
}, {
|
|
125
119
|
option: '--ids [ids]'
|
|
126
120
|
}, {
|
|
@@ -148,19 +142,16 @@ _EntraM365GroupUserRemoveCommand_instances = new WeakSet(), _EntraM365GroupUserR
|
|
|
148
142
|
return `The following user principal names are invalid for the option 'userNames': ${isValidUPNArrayResult}.`;
|
|
149
143
|
}
|
|
150
144
|
}
|
|
151
|
-
if (args.options.userName && !validation.isValidUserPrincipalName(args.options.userName)) {
|
|
152
|
-
return `The specified userName '${args.options.userName}' is not a valid user principal name.`;
|
|
153
|
-
}
|
|
154
145
|
return true;
|
|
155
146
|
});
|
|
156
147
|
}, _EntraM365GroupUserRemoveCommand_initOptionSets = function _EntraM365GroupUserRemoveCommand_initOptionSets() {
|
|
157
148
|
this.optionSets.push({
|
|
158
149
|
options: ['groupId', 'teamId', 'groupName', 'teamName']
|
|
159
150
|
}, {
|
|
160
|
-
options: ['
|
|
151
|
+
options: ['ids', 'userNames']
|
|
161
152
|
});
|
|
162
153
|
}, _EntraM365GroupUserRemoveCommand_initTypes = function _EntraM365GroupUserRemoveCommand_initTypes() {
|
|
163
|
-
this.types.string.push('groupId', 'groupName', 'teamId', 'teamName', '
|
|
154
|
+
this.types.string.push('groupId', 'groupName', 'teamId', 'teamName', 'ids', 'userNames');
|
|
164
155
|
this.types.boolean.push('force');
|
|
165
156
|
};
|
|
166
157
|
export default new EntraM365GroupUserRemoveCommand();
|
|
@@ -5,6 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
5
5
|
};
|
|
6
6
|
var _SpoFolderCopyCommand_instances, _SpoFolderCopyCommand_initTelemetry, _SpoFolderCopyCommand_initOptions, _SpoFolderCopyCommand_initValidators, _SpoFolderCopyCommand_initOptionSets, _SpoFolderCopyCommand_initTypes;
|
|
7
7
|
import request from '../../../../request.js';
|
|
8
|
+
import { CreateFolderCopyJobsNameConflictBehavior, spo } from '../../../../utils/spo.js';
|
|
8
9
|
import { urlUtil } from '../../../../utils/urlUtil.js';
|
|
9
10
|
import { validation } from '../../../../utils/validation.js';
|
|
10
11
|
import SpoCommand from '../../../base/SpoCommand.js';
|
|
@@ -31,45 +32,54 @@ class SpoFolderCopyCommand extends SpoCommand {
|
|
|
31
32
|
}
|
|
32
33
|
async commandAction(logger, args) {
|
|
33
34
|
try {
|
|
34
|
-
const
|
|
35
|
+
const sourceServerRelativePath = await this.getSourcePath(logger, args.options);
|
|
36
|
+
const sourcePath = this.getAbsoluteUrl(args.options.webUrl, sourceServerRelativePath);
|
|
37
|
+
const destinationPath = this.getAbsoluteUrl(args.options.webUrl, args.options.targetUrl);
|
|
35
38
|
if (this.verbose) {
|
|
36
|
-
await logger.logToStderr(`Copying folder ${sourcePath} to ${
|
|
39
|
+
await logger.logToStderr(`Copying folder '${sourcePath}' to '${destinationPath}'...`);
|
|
37
40
|
}
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
const copyJobResponse = await spo.createFolderCopyJob(args.options.webUrl, sourcePath, destinationPath, {
|
|
42
|
+
nameConflictBehavior: this.getNameConflictBehaviorValue(args.options.nameConflictBehavior),
|
|
43
|
+
newName: args.options.newName,
|
|
44
|
+
operation: 'copy'
|
|
45
|
+
});
|
|
46
|
+
if (args.options.skipWait) {
|
|
47
|
+
return;
|
|
42
48
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
49
|
+
if (this.verbose) {
|
|
50
|
+
await logger.logToStderr('Waiting for the copy job to complete...');
|
|
51
|
+
}
|
|
52
|
+
const copyJobResult = await spo.getCopyJobResult(args.options.webUrl, copyJobResponse);
|
|
53
|
+
if (this.verbose) {
|
|
54
|
+
await logger.logToStderr('Getting information about the destination folder...');
|
|
46
55
|
}
|
|
56
|
+
// Get destination folder data
|
|
57
|
+
const siteRelativeDestinationFolder = '/' + copyJobResult.TargetObjectSiteRelativeUrl.substring(0, copyJobResult.TargetObjectSiteRelativeUrl.lastIndexOf('/'));
|
|
58
|
+
const absoluteWebUrl = destinationPath.substring(0, destinationPath.toLowerCase().lastIndexOf(siteRelativeDestinationFolder.toLowerCase()));
|
|
47
59
|
const requestOptions = {
|
|
48
|
-
url: `${
|
|
60
|
+
url: `${absoluteWebUrl}/_api/Web/GetFolderById('${copyJobResult.TargetObjectUniqueId}')`,
|
|
49
61
|
headers: {
|
|
50
62
|
accept: 'application/json;odata=nometadata'
|
|
51
63
|
},
|
|
52
|
-
responseType: 'json'
|
|
53
|
-
data: {
|
|
54
|
-
srcPath: {
|
|
55
|
-
DecodedUrl: absoluteSourcePath
|
|
56
|
-
},
|
|
57
|
-
destPath: {
|
|
58
|
-
DecodedUrl: absoluteTargetPath
|
|
59
|
-
},
|
|
60
|
-
options: {
|
|
61
|
-
KeepBoth: args.options.nameConflictBehavior === 'rename',
|
|
62
|
-
ShouldBypassSharedLocks: !!args.options.bypassSharedLock,
|
|
63
|
-
ResetAuthorAndCreatedOnCopy: !!args.options.resetAuthorAndCreated
|
|
64
|
-
}
|
|
65
|
-
}
|
|
64
|
+
responseType: 'json'
|
|
66
65
|
};
|
|
67
|
-
await request.
|
|
66
|
+
const destinationFile = await request.get(requestOptions);
|
|
67
|
+
await logger.log(destinationFile);
|
|
68
68
|
}
|
|
69
69
|
catch (err) {
|
|
70
70
|
this.handleRejectedODataJsonPromise(err);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
getNameConflictBehaviorValue(nameConflictBehavior) {
|
|
74
|
+
switch (nameConflictBehavior?.toLowerCase()) {
|
|
75
|
+
case 'fail':
|
|
76
|
+
return CreateFolderCopyJobsNameConflictBehavior.Fail;
|
|
77
|
+
case 'rename':
|
|
78
|
+
return CreateFolderCopyJobsNameConflictBehavior.Rename;
|
|
79
|
+
default:
|
|
80
|
+
return CreateFolderCopyJobsNameConflictBehavior.Fail;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
73
83
|
async getSourcePath(logger, options) {
|
|
74
84
|
if (options.sourceUrl) {
|
|
75
85
|
return urlUtil.getServerRelativePath(options.webUrl, options.sourceUrl);
|
|
@@ -78,17 +88,18 @@ class SpoFolderCopyCommand extends SpoCommand {
|
|
|
78
88
|
await logger.logToStderr(`Retrieving server-relative path for folder with ID '${options.sourceId}'...`);
|
|
79
89
|
}
|
|
80
90
|
const requestOptions = {
|
|
81
|
-
url: `${options.webUrl}/_api/Web/GetFolderById('${options.sourceId}')
|
|
91
|
+
url: `${options.webUrl}/_api/Web/GetFolderById('${options.sourceId}')/ServerRelativePath`,
|
|
82
92
|
headers: {
|
|
83
93
|
accept: 'application/json;odata=nometadata'
|
|
84
94
|
},
|
|
85
95
|
responseType: 'json'
|
|
86
96
|
};
|
|
87
|
-
const
|
|
88
|
-
return
|
|
97
|
+
const path = await request.get(requestOptions);
|
|
98
|
+
return path.DecodedUrl;
|
|
89
99
|
}
|
|
90
100
|
getAbsoluteUrl(webUrl, url) {
|
|
91
|
-
|
|
101
|
+
const result = url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
|
|
102
|
+
return urlUtil.removeTrailingSlashes(result);
|
|
92
103
|
}
|
|
93
104
|
}
|
|
94
105
|
_SpoFolderCopyCommand_instances = new WeakSet(), _SpoFolderCopyCommand_initTelemetry = function _SpoFolderCopyCommand_initTelemetry() {
|
|
@@ -98,8 +109,7 @@ _SpoFolderCopyCommand_instances = new WeakSet(), _SpoFolderCopyCommand_initTelem
|
|
|
98
109
|
sourceId: typeof args.options.sourceId !== 'undefined',
|
|
99
110
|
newName: typeof args.options.newName !== 'undefined',
|
|
100
111
|
nameConflictBehavior: typeof args.options.nameConflictBehavior !== 'undefined',
|
|
101
|
-
|
|
102
|
-
bypassSharedLock: !!args.options.bypassSharedLock
|
|
112
|
+
skipWait: !!args.options.skipWait
|
|
103
113
|
});
|
|
104
114
|
});
|
|
105
115
|
}, _SpoFolderCopyCommand_initOptions = function _SpoFolderCopyCommand_initOptions() {
|
|
@@ -117,9 +127,7 @@ _SpoFolderCopyCommand_instances = new WeakSet(), _SpoFolderCopyCommand_initTelem
|
|
|
117
127
|
option: '--nameConflictBehavior [nameConflictBehavior]',
|
|
118
128
|
autocomplete: this.nameConflictBehaviorOptions
|
|
119
129
|
}, {
|
|
120
|
-
option: '--
|
|
121
|
-
}, {
|
|
122
|
-
option: '--bypassSharedLock'
|
|
130
|
+
option: '--skipWait'
|
|
123
131
|
});
|
|
124
132
|
}, _SpoFolderCopyCommand_initValidators = function _SpoFolderCopyCommand_initValidators() {
|
|
125
133
|
this.validators.push(async (args) => {
|
|
@@ -139,7 +147,7 @@ _SpoFolderCopyCommand_instances = new WeakSet(), _SpoFolderCopyCommand_initTelem
|
|
|
139
147
|
this.optionSets.push({ options: ['sourceUrl', 'sourceId'] });
|
|
140
148
|
}, _SpoFolderCopyCommand_initTypes = function _SpoFolderCopyCommand_initTypes() {
|
|
141
149
|
this.types.string.push('webUrl', 'sourceUrl', 'sourceId', 'targetUrl', 'newName', 'nameConflictBehavior');
|
|
142
|
-
this.types.boolean.push('
|
|
150
|
+
this.types.boolean.push('skipWait');
|
|
143
151
|
};
|
|
144
152
|
export default new SpoFolderCopyCommand();
|
|
145
153
|
//# sourceMappingURL=folder-copy.js.map
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { zod } from '../../../../utils/zod.js';
|
|
3
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
4
|
+
import request from '../../../../request.js';
|
|
5
|
+
import { formatting } from '../../../../utils/formatting.js';
|
|
6
|
+
import { urlUtil } from '../../../../utils/urlUtil.js';
|
|
7
|
+
import { validation } from '../../../../utils/validation.js';
|
|
8
|
+
import SpoCommand from '../../../base/SpoCommand.js';
|
|
9
|
+
import commands from '../../commands.js';
|
|
10
|
+
const options = globalOptionsZod
|
|
11
|
+
.extend({
|
|
12
|
+
webUrl: zod.alias('u', z.string()
|
|
13
|
+
.refine(url => validation.isValidSharePointUrl(url) === true, url => ({
|
|
14
|
+
message: `'${url}' is not a valid SharePoint Online site URL.`
|
|
15
|
+
}))),
|
|
16
|
+
name: zod.alias('n', z.string())
|
|
17
|
+
})
|
|
18
|
+
.strict();
|
|
19
|
+
class SpoPagePublishCommand extends SpoCommand {
|
|
20
|
+
get name() {
|
|
21
|
+
return commands.PAGE_PUBLISH;
|
|
22
|
+
}
|
|
23
|
+
get description() {
|
|
24
|
+
return 'Publishes a modern page';
|
|
25
|
+
}
|
|
26
|
+
get schema() {
|
|
27
|
+
return options;
|
|
28
|
+
}
|
|
29
|
+
async commandAction(logger, args) {
|
|
30
|
+
try {
|
|
31
|
+
// Remove leading slashes from the page name (page can be nested in folders)
|
|
32
|
+
let pageName = urlUtil.removeLeadingSlashes(args.options.name);
|
|
33
|
+
if (!pageName.toLowerCase().endsWith('.aspx')) {
|
|
34
|
+
pageName += '.aspx';
|
|
35
|
+
}
|
|
36
|
+
if (this.verbose) {
|
|
37
|
+
await logger.logToStderr(`Publishing page ${pageName}...`);
|
|
38
|
+
}
|
|
39
|
+
const filePath = `${urlUtil.getServerRelativeSiteUrl(args.options.webUrl)}/SitePages/${pageName}`;
|
|
40
|
+
const requestOptions = {
|
|
41
|
+
url: `${args.options.webUrl}/_api/web/GetFileByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(filePath)}')/Publish()`,
|
|
42
|
+
headers: {
|
|
43
|
+
accept: 'application/json;odata=nometadata'
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
await request.post(requestOptions);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
this.handleRejectedODataJsonPromise(err);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export default new SpoPagePublishCommand();
|
|
54
|
+
//# sourceMappingURL=page-publish.js.map
|
|
@@ -16,7 +16,7 @@ class SpoUserProfileGetCommand extends SpoCommand {
|
|
|
16
16
|
return commands.USERPROFILE_GET;
|
|
17
17
|
}
|
|
18
18
|
get description() {
|
|
19
|
-
return '
|
|
19
|
+
return 'Gets user profile property for a SharePoint user';
|
|
20
20
|
}
|
|
21
21
|
constructor() {
|
|
22
22
|
super();
|
|
@@ -202,6 +202,7 @@ export default {
|
|
|
202
202
|
PAGE_COPY: `${prefix} page copy`,
|
|
203
203
|
PAGE_GET: `${prefix} page get`,
|
|
204
204
|
PAGE_LIST: `${prefix} page list`,
|
|
205
|
+
PAGE_PUBLISH: `${prefix} page publish`,
|
|
205
206
|
PAGE_REMOVE: `${prefix} page remove`,
|
|
206
207
|
PAGE_SET: `${prefix} page set`,
|
|
207
208
|
PAGE_CLIENTSIDEWEBPART_ADD: `${prefix} page clientsidewebpart add`,
|
|
@@ -25,14 +25,11 @@ m365 entra m365group user remove [options]
|
|
|
25
25
|
`--teamName [teamName]`
|
|
26
26
|
: The display name of the Microsoft Teams team. Specify only one of the following: `groupId`, `groupName`, `teamId`, or `teamName`.
|
|
27
27
|
|
|
28
|
-
`-n, --userName [userName]`
|
|
29
|
-
: (deprecated) User's UPN (user principal name), eg. `johndoe@example.com`.. Specify only one of the following: `userName`, `ids` or `userNames`.
|
|
30
|
-
|
|
31
28
|
`--ids [ids]`
|
|
32
|
-
: Microsoft Entra IDs of users. You can also pass a comma-separated list of IDs. Specify
|
|
29
|
+
: Microsoft Entra IDs of users. You can also pass a comma-separated list of IDs. Specify either `ids` or `userNames` but not both.
|
|
33
30
|
|
|
34
31
|
`--userNames [userNames]`
|
|
35
|
-
: The user principal names of users. You can also pass a comma-separated list of UPNs. Specify
|
|
32
|
+
: The user principal names of users. You can also pass a comma-separated list of UPNs. Specify either `ids` or `userNames` but not both.
|
|
36
33
|
|
|
37
34
|
`-f, --force`
|
|
38
35
|
: Don't prompt for confirming removing the user from the specified Microsoft 365 Group or Microsoft Teams team.
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import Global from '/docs/cmd/_global.mdx';
|
|
2
|
+
import Tabs from '@theme/Tabs';
|
|
3
|
+
import TabItem from '@theme/TabItem';
|
|
2
4
|
|
|
3
5
|
# spo folder copy
|
|
4
6
|
|
|
@@ -31,19 +33,14 @@ m365 spo folder copy [options]
|
|
|
31
33
|
`--nameConflictBehavior [nameConflictBehavior]`
|
|
32
34
|
: Behavior when a file or folder with the same name is already present at the destination. Allowed values: `fail`, `rename`. Defaults to `fail`.
|
|
33
35
|
|
|
34
|
-
`--
|
|
35
|
-
:
|
|
36
|
-
|
|
37
|
-
`--bypassSharedLock`
|
|
38
|
-
: This indicates whether a folder with a shared lock can still be moved. Use this option to copy a folder that is locked.
|
|
36
|
+
`--skipWait`
|
|
37
|
+
: Don't wait for the copy operation to complete.
|
|
39
38
|
```
|
|
40
39
|
|
|
41
40
|
<Global />
|
|
42
41
|
|
|
43
42
|
## Remarks
|
|
44
43
|
|
|
45
|
-
When you copy a folder with documents that have version history, only the latest document version is copied.
|
|
46
|
-
|
|
47
44
|
When you specify a value for `nameConflictBehavior`, consider the following:
|
|
48
45
|
|
|
49
46
|
- `fail` will throw an error when the destination folder already exists.
|
|
@@ -69,16 +66,90 @@ Copy a folder to another location and use new name on conflict
|
|
|
69
66
|
m365 spo folder copy --webUrl https://contoso.sharepoint.com/sites/project-x --sourceUrl "/sites/project-x/Shared Documents/Reports" --targetUrl "/sites/project-y/Shared Documents/Project files" --nameConflictBehavior rename
|
|
70
67
|
```
|
|
71
68
|
|
|
72
|
-
Copy a folder referenced by its ID to another document library and
|
|
69
|
+
Copy a folder referenced by its ID to another document library and don't wait for the copy operation to finish
|
|
73
70
|
|
|
74
71
|
```sh
|
|
75
|
-
m365 spo folder copy --webUrl https://contoso.sharepoint.com/sites/project-x --sourceId b8cc341b-9c11-4f2d-aa2b-0ce9c18bcba2 --targetUrl "/sites/project-x/Project files" --
|
|
72
|
+
m365 spo folder copy --webUrl https://contoso.sharepoint.com/sites/project-x --sourceId b8cc341b-9c11-4f2d-aa2b-0ce9c18bcba2 --targetUrl "/sites/project-x/Project files" --skipWait
|
|
76
73
|
```
|
|
77
74
|
|
|
78
75
|
## Response
|
|
79
76
|
|
|
80
|
-
|
|
77
|
+
### Standard Response
|
|
78
|
+
|
|
79
|
+
<Tabs>
|
|
80
|
+
<TabItem value="JSON">
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"Exists": true,
|
|
85
|
+
"ExistsAllowThrowForPolicyFailures": true,
|
|
86
|
+
"ExistsWithException": true,
|
|
87
|
+
"IsWOPIEnabled": false,
|
|
88
|
+
"ItemCount": 6,
|
|
89
|
+
"Name": "Company",
|
|
90
|
+
"ProgID": null,
|
|
91
|
+
"ServerRelativeUrl": "/sites/Sales/Icons/Company",
|
|
92
|
+
"TimeCreated": "2024-09-26T22:08:53Z",
|
|
93
|
+
"TimeLastModified": "2024-09-26T22:09:31Z",
|
|
94
|
+
"UniqueId": "d3a37396-ca16-467b-b968-48f5fc41f2b6",
|
|
95
|
+
"WelcomePage": ""
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
</TabItem>
|
|
100
|
+
<TabItem value="Text">
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
Exists : true
|
|
104
|
+
ExistsAllowThrowForPolicyFailures: true
|
|
105
|
+
ExistsWithException : true
|
|
106
|
+
IsWOPIEnabled : false
|
|
107
|
+
ItemCount : 6
|
|
108
|
+
Name : Company
|
|
109
|
+
ProgID : null
|
|
110
|
+
ServerRelativeUrl : /sites/Sales/Icons/Company
|
|
111
|
+
TimeCreated : 2024-09-26T22:08:53Z
|
|
112
|
+
TimeLastModified : 2024-09-26T22:09:31Z
|
|
113
|
+
UniqueId : d3a37396-ca16-467b-b968-48f5fc41f2b6
|
|
114
|
+
WelcomePage :
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
</TabItem>
|
|
118
|
+
<TabItem value="CSV">
|
|
119
|
+
|
|
120
|
+
```csv
|
|
121
|
+
Exists,ExistsAllowThrowForPolicyFailures,ExistsWithException,IsWOPIEnabled,ItemCount,Name,ProgID,ServerRelativeUrl,TimeCreated,TimeLastModified,UniqueId,WelcomePage
|
|
122
|
+
1,1,1,0,6,Company,,/sites/Sales/Icons/Company,2024-09-26T22:08:53Z,2024-09-26T22:09:31Z,d3a37396-ca16-467b-b968-48f5fc41f2b6,
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
</TabItem>
|
|
126
|
+
<TabItem value="Markdown">
|
|
127
|
+
|
|
128
|
+
```md
|
|
129
|
+
# spo folder copy --webUrl "https://contoso.sharepoint.com/sites/Marketing" --sourceUrl "/Logos/Contoso" --targetUrl "/sites/Sales/Logos"
|
|
130
|
+
|
|
131
|
+
Date: 18/10/2024
|
|
132
|
+
|
|
133
|
+
## Company (d3a37396-ca16-467b-b968-48f5fc41f2b6)
|
|
134
|
+
|
|
135
|
+
Property | Value
|
|
136
|
+
---------|-------
|
|
137
|
+
Exists | true
|
|
138
|
+
ExistsAllowThrowForPolicyFailures | true
|
|
139
|
+
ExistsWithException | true
|
|
140
|
+
IsWOPIEnabled | false
|
|
141
|
+
ItemCount | 6
|
|
142
|
+
Name | Company
|
|
143
|
+
ServerRelativeUrl | /sites/Sales/Icons/Company
|
|
144
|
+
TimeCreated | 2024-09-26T22:08:53Z
|
|
145
|
+
TimeLastModified | 2024-09-26T22:09:31Z
|
|
146
|
+
UniqueId | d3a37396-ca16-467b-b968-48f5fc41f2b6
|
|
147
|
+
WelcomePage |
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
</TabItem>
|
|
151
|
+
</Tabs>
|
|
152
|
+
|
|
153
|
+
### `skipWait` response
|
|
81
154
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- Copy items from a SharePoint document library: [https://support.office.com/en-us/article/move-or-copy-items-from-a-sharepoint-document-library-00e2f483-4df3-46be-a861-1f5f0c1a87bc](https://support.office.com/en-us/article/move-or-copy-items-from-a-sharepoint-document-library-00e2f483-4df3-46be-a861-1f5f0c1a87bc)
|
|
155
|
+
The command won't return a response on success.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import Global from '/docs/cmd/_global.mdx';
|
|
2
|
+
|
|
3
|
+
# spo page publish
|
|
4
|
+
|
|
5
|
+
Publishes a modern page
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
m365 spo page publish [options]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Options
|
|
14
|
+
|
|
15
|
+
```md definition-list
|
|
16
|
+
`-u, --webUrl <webUrl>`
|
|
17
|
+
: URL of the site where the page is located.
|
|
18
|
+
|
|
19
|
+
`-n, --name <name>`
|
|
20
|
+
: Name of the page.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
<Global />
|
|
24
|
+
|
|
25
|
+
## Examples
|
|
26
|
+
|
|
27
|
+
Publish a modern page
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
m365 spo page publish --webUrl https://contoso.sharepoint.com/sites/Marketing --name "Style guide.aspx"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Publish a modern page in a subfolder
|
|
34
|
+
|
|
35
|
+
```sh
|
|
36
|
+
m365 spo page publish --webUrl https://contoso.sharepoint.com/sites/Marketing --name "/Styles/Guide.aspx"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Response
|
|
40
|
+
|
|
41
|
+
The command won't return a response on success.
|
package/package.json
CHANGED