@pnp/cli-microsoft365 9.1.0-beta.94ae9ed → 9.1.0-beta.acd25f7
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/Auth.js +3 -1
- package/dist/Command.js +4 -1
- package/dist/m365/commands/login.js +1 -1
- package/dist/m365/file/commands/file-move.js +135 -0
- package/dist/m365/file/commands.js +2 -1
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.20.0-rc.1.js +25 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.20.0-rc.1.js +57 -0
- package/dist/m365/spfx/commands/project/project-upgrade.js +16 -13
- package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
- package/dist/m365/spo/commands/site/site-admin-remove.js +193 -0
- package/dist/m365/spo/commands.js +1 -0
- package/dist/m365/teams/MeetingTranscript.js +2 -0
- package/dist/m365/teams/commands/meeting/meeting-transcript-get.js +152 -0
- package/dist/m365/teams/commands.js +1 -0
- package/dist/utils/driveUtil.js +51 -0
- package/dist/utils/zod.js +1 -1
- package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +2 -2
- package/docs/docs/cmd/file/file-move.mdx +79 -0
- package/docs/docs/cmd/spo/cdn/cdn-get.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-origin-add.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-origin-list.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-origin-remove.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-policy-list.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-policy-set.mdx +1 -1
- package/docs/docs/cmd/spo/externaluser/externaluser-list.mdx +1 -1
- package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-get.mdx +1 -1
- package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-set.mdx +1 -1
- package/docs/docs/cmd/spo/homesite/homesite-remove.mdx +1 -1
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-get.mdx +1 -1
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-remove.mdx +1 -1
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-set.mdx +1 -1
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +1 -1
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-list.mdx +1 -1
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-remove.mdx +1 -1
- package/docs/docs/cmd/spo/orgnewssite/orgnewssite-list.mdx +1 -1
- package/docs/docs/cmd/spo/orgnewssite/orgnewssite-remove.mdx +1 -1
- package/docs/docs/cmd/spo/orgnewssite/orgnewssite-set.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-admin-add.mdx +2 -2
- package/docs/docs/cmd/spo/site/site-admin-remove.mdx +67 -0
- package/docs/docs/cmd/spo/site/site-appcatalog-add.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-commsite-enable.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-list.mdx +6 -4
- package/docs/docs/cmd/spo/site/site-set.mdx +1 -1
- package/docs/docs/cmd/spo/storageentity/storageentity-remove.mdx +1 -1
- package/docs/docs/cmd/spo/storageentity/storageentity-set.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-appcatalog-add.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-appcatalogurl-get.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-list.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-remove.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-settings-list.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-apply.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-get.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-list.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-remove.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-set.mdx +1 -1
- package/docs/docs/cmd/spp/contentcenter/contentcenter-list.mdx +3 -5
- package/docs/docs/cmd/teams/meeting/meeting-transcript-get.mdx +132 -0
- package/npm-shrinkwrap.json +203 -375
- package/package.json +16 -17
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
3
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _TeamsMeetingTranscriptGetCommand_instances, _TeamsMeetingTranscriptGetCommand_initTelemetry, _TeamsMeetingTranscriptGetCommand_initOptions, _TeamsMeetingTranscriptGetCommand_initValidators, _TeamsMeetingTranscriptGetCommand_initOptionSets;
|
|
7
|
+
import auth from '../../../../Auth.js';
|
|
8
|
+
import request from '../../../../request.js';
|
|
9
|
+
import { entraUser } from '../../../../utils/entraUser.js';
|
|
10
|
+
import { accessToken } from '../../../../utils/accessToken.js';
|
|
11
|
+
import { validation } from '../../../../utils/validation.js';
|
|
12
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
13
|
+
import commands from '../../commands.js';
|
|
14
|
+
import fs from 'fs';
|
|
15
|
+
import path from 'path';
|
|
16
|
+
class TeamsMeetingTranscriptGetCommand extends GraphCommand {
|
|
17
|
+
get name() {
|
|
18
|
+
return commands.MEETING_TRANSCRIPT_GET;
|
|
19
|
+
}
|
|
20
|
+
get description() {
|
|
21
|
+
return 'Downloads a transcript for a given meeting';
|
|
22
|
+
}
|
|
23
|
+
constructor() {
|
|
24
|
+
super();
|
|
25
|
+
_TeamsMeetingTranscriptGetCommand_instances.add(this);
|
|
26
|
+
__classPrivateFieldGet(this, _TeamsMeetingTranscriptGetCommand_instances, "m", _TeamsMeetingTranscriptGetCommand_initTelemetry).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _TeamsMeetingTranscriptGetCommand_instances, "m", _TeamsMeetingTranscriptGetCommand_initOptions).call(this);
|
|
28
|
+
__classPrivateFieldGet(this, _TeamsMeetingTranscriptGetCommand_instances, "m", _TeamsMeetingTranscriptGetCommand_initValidators).call(this);
|
|
29
|
+
__classPrivateFieldGet(this, _TeamsMeetingTranscriptGetCommand_instances, "m", _TeamsMeetingTranscriptGetCommand_initOptionSets).call(this);
|
|
30
|
+
}
|
|
31
|
+
async commandAction(logger, args) {
|
|
32
|
+
try {
|
|
33
|
+
const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[this.resource].accessToken);
|
|
34
|
+
if (this.verbose) {
|
|
35
|
+
await logger.logToStderr(`Retrieving transcript for the given meeting...`);
|
|
36
|
+
}
|
|
37
|
+
let requestUrl = `${this.resource}/beta/`;
|
|
38
|
+
if (isAppOnlyAccessToken) {
|
|
39
|
+
if (!args.options.userId && !args.options.userName && !args.options.email) {
|
|
40
|
+
throw `The option 'userId', 'userName' or 'email' is required when retrieving meeting transcript using app only permissions`;
|
|
41
|
+
}
|
|
42
|
+
requestUrl += 'users/';
|
|
43
|
+
if (args.options.userId) {
|
|
44
|
+
requestUrl += args.options.userId;
|
|
45
|
+
}
|
|
46
|
+
else if (args.options.userName) {
|
|
47
|
+
requestUrl += args.options.userName;
|
|
48
|
+
}
|
|
49
|
+
else if (args.options.email) {
|
|
50
|
+
if (this.verbose) {
|
|
51
|
+
await logger.logToStderr(`Getting user ID for user with email '${args.options.email}'.`);
|
|
52
|
+
}
|
|
53
|
+
const userId = await entraUser.getUserIdByEmail(args.options.email);
|
|
54
|
+
requestUrl += userId;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (args.options.userId || args.options.userName || args.options.email) {
|
|
59
|
+
throw `The options 'userId', 'userName', and 'email' cannot be used while retrieving meeting transcript using delegated permissions`;
|
|
60
|
+
}
|
|
61
|
+
requestUrl += `me`;
|
|
62
|
+
}
|
|
63
|
+
requestUrl += `/onlineMeetings/${args.options.meetingId}/transcripts/${args.options.id}`;
|
|
64
|
+
if (args.options.outputFile) {
|
|
65
|
+
requestUrl += '/content?$format=text/vtt';
|
|
66
|
+
}
|
|
67
|
+
const requestOptions = {
|
|
68
|
+
url: requestUrl,
|
|
69
|
+
headers: {
|
|
70
|
+
accept: 'application/json;odata.metadata=none'
|
|
71
|
+
},
|
|
72
|
+
responseType: args.options.outputFile ? 'stream' : 'json'
|
|
73
|
+
};
|
|
74
|
+
const meetingTranscript = await request.get(requestOptions);
|
|
75
|
+
if (meetingTranscript) {
|
|
76
|
+
if (args.options.outputFile) {
|
|
77
|
+
// Not possible to use async/await for this promise
|
|
78
|
+
await new Promise((resolve, reject) => {
|
|
79
|
+
const writer = fs.createWriteStream(args.options.outputFile);
|
|
80
|
+
meetingTranscript.data.pipe(writer);
|
|
81
|
+
writer.on('error', err => {
|
|
82
|
+
reject(err);
|
|
83
|
+
});
|
|
84
|
+
writer.on('close', async () => {
|
|
85
|
+
const filePath = args.options.outputFile;
|
|
86
|
+
if (this.verbose) {
|
|
87
|
+
await logger.logToStderr(`File saved to path ${filePath}`);
|
|
88
|
+
}
|
|
89
|
+
return resolve();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
await logger.log(meetingTranscript);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
throw `The specified meeting transcript was not found`;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
this.handleRejectedODataJsonPromise(err);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
_TeamsMeetingTranscriptGetCommand_instances = new WeakSet(), _TeamsMeetingTranscriptGetCommand_initTelemetry = function _TeamsMeetingTranscriptGetCommand_initTelemetry() {
|
|
107
|
+
this.telemetry.push((args) => {
|
|
108
|
+
Object.assign(this.telemetryProperties, {
|
|
109
|
+
userId: typeof args.options.userId !== 'undefined',
|
|
110
|
+
userName: typeof args.options.userName !== 'undefined',
|
|
111
|
+
email: typeof args.options.email !== 'undefined',
|
|
112
|
+
outputFile: typeof args.options.outputFile !== 'undefined'
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}, _TeamsMeetingTranscriptGetCommand_initOptions = function _TeamsMeetingTranscriptGetCommand_initOptions() {
|
|
116
|
+
this.options.unshift({
|
|
117
|
+
option: '-u, --userId [userId]'
|
|
118
|
+
}, {
|
|
119
|
+
option: '-n, --userName [userName]'
|
|
120
|
+
}, {
|
|
121
|
+
option: '--email [email]'
|
|
122
|
+
}, {
|
|
123
|
+
option: '-m, --meetingId <meetingId>'
|
|
124
|
+
}, {
|
|
125
|
+
option: '-i, --id <id>'
|
|
126
|
+
}, {
|
|
127
|
+
option: '-f, --outputFile [outputFile]'
|
|
128
|
+
});
|
|
129
|
+
}, _TeamsMeetingTranscriptGetCommand_initValidators = function _TeamsMeetingTranscriptGetCommand_initValidators() {
|
|
130
|
+
this.validators.push(async (args) => {
|
|
131
|
+
if (args.options.userId && !validation.isValidGuid(args.options.userId)) {
|
|
132
|
+
return `${args.options.userId} is not a valid Guid`;
|
|
133
|
+
}
|
|
134
|
+
if (args.options.userName && !validation.isValidUserPrincipalName(args.options.userName)) {
|
|
135
|
+
return `${args.options.userName} is not a valid user principal name (UPN)`;
|
|
136
|
+
}
|
|
137
|
+
if (args.options.email && !validation.isValidUserPrincipalName(args.options.email)) {
|
|
138
|
+
return `${args.options.email} is not a valid email`;
|
|
139
|
+
}
|
|
140
|
+
if (args.options.outputFile && !fs.existsSync(path.dirname(args.options.outputFile))) {
|
|
141
|
+
return 'Specified path where to save the file does not exits';
|
|
142
|
+
}
|
|
143
|
+
return true;
|
|
144
|
+
});
|
|
145
|
+
}, _TeamsMeetingTranscriptGetCommand_initOptionSets = function _TeamsMeetingTranscriptGetCommand_initOptionSets() {
|
|
146
|
+
this.optionSets.push({
|
|
147
|
+
options: ['userId', 'userName', 'email'],
|
|
148
|
+
runsWhen: (args) => args.options.userId || args.options.userName || args.options.email
|
|
149
|
+
});
|
|
150
|
+
};
|
|
151
|
+
export default new TeamsMeetingTranscriptGetCommand();
|
|
152
|
+
//# sourceMappingURL=meeting-transcript-get.js.map
|
|
@@ -32,6 +32,7 @@ export default {
|
|
|
32
32
|
MEETING_LIST: `${prefix} meeting list`,
|
|
33
33
|
MEETING_ATTENDANCEREPORT_GET: `${prefix} meeting attendancereport get`,
|
|
34
34
|
MEETING_ATTENDANCEREPORT_LIST: `${prefix} meeting attendancereport list`,
|
|
35
|
+
MEETING_TRANSCRIPT_GET: `${prefix} meeting transcript get`,
|
|
35
36
|
MEETING_TRANSCRIPT_LIST: `${prefix} meeting transcript list`,
|
|
36
37
|
MEMBERSETTINGS_LIST: `${prefix} membersettings list`,
|
|
37
38
|
MEMBERSETTINGS_SET: `${prefix} membersettings set`,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import request from "../request.js";
|
|
2
|
+
export const driveUtil = {
|
|
3
|
+
/**
|
|
4
|
+
* Retrieves the Drive associated with the specified site and URL.
|
|
5
|
+
* @param siteId Site ID
|
|
6
|
+
* @param url Drive URL
|
|
7
|
+
* @returns The Drive associated with the drive URL.
|
|
8
|
+
*/
|
|
9
|
+
async getDriveByUrl(siteId, url) {
|
|
10
|
+
const requestOptions = {
|
|
11
|
+
url: `https://graph.microsoft.com/v1.0/sites/${siteId}/drives?$select=webUrl,id`,
|
|
12
|
+
headers: {
|
|
13
|
+
accept: 'application/json;odata.metadata=none'
|
|
14
|
+
},
|
|
15
|
+
responseType: 'json'
|
|
16
|
+
};
|
|
17
|
+
const drives = await request.get(requestOptions);
|
|
18
|
+
const lowerCaseFolderUrl = url.href.toLowerCase();
|
|
19
|
+
const drive = drives.value
|
|
20
|
+
.sort((a, b) => b.webUrl.localeCompare(a.webUrl))
|
|
21
|
+
.find((d) => {
|
|
22
|
+
const driveUrl = d.webUrl.toLowerCase();
|
|
23
|
+
return lowerCaseFolderUrl.startsWith(driveUrl) &&
|
|
24
|
+
(driveUrl.length === lowerCaseFolderUrl.length ||
|
|
25
|
+
lowerCaseFolderUrl[driveUrl.length] === '/');
|
|
26
|
+
});
|
|
27
|
+
if (!drive) {
|
|
28
|
+
throw `Drive '${url.href}' not found`;
|
|
29
|
+
}
|
|
30
|
+
return drive;
|
|
31
|
+
},
|
|
32
|
+
/**
|
|
33
|
+
* Retrieves the ID of a drive item (file, folder, etc.) associated with the given drive and item URL.
|
|
34
|
+
* @param drive The Drive object containing the item
|
|
35
|
+
* @param itemUrl Item URL
|
|
36
|
+
* @returns Drive item ID
|
|
37
|
+
*/
|
|
38
|
+
async getDriveItemId(drive, itemUrl) {
|
|
39
|
+
const relativeItemUrl = itemUrl.href.replace(new RegExp(`${drive.webUrl}`, 'i'), '').replace(/\/+$/, '');
|
|
40
|
+
const requestOptions = {
|
|
41
|
+
url: `https://graph.microsoft.com/v1.0/drives/${drive.id}/root${relativeItemUrl ? `:${relativeItemUrl}` : ''}?$select=id`,
|
|
42
|
+
headers: {
|
|
43
|
+
accept: 'application/json;odata.metadata=none'
|
|
44
|
+
},
|
|
45
|
+
responseType: 'json'
|
|
46
|
+
};
|
|
47
|
+
const driveItem = await request.get(requestOptions);
|
|
48
|
+
return driveItem?.id;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=driveUtil.js.map
|
package/dist/utils/zod.js
CHANGED
|
@@ -60,7 +60,7 @@ function parseDefault(def, _options, currentOption) {
|
|
|
60
60
|
function parseEnum(def, _options, currentOption) {
|
|
61
61
|
if (currentOption) {
|
|
62
62
|
currentOption.type = 'string';
|
|
63
|
-
currentOption.autocomplete = def.values;
|
|
63
|
+
currentOption.autocomplete = [...def.values];
|
|
64
64
|
}
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
@@ -9,13 +9,13 @@ Get the total storage used across all group mailboxes and group sites
|
|
|
9
9
|
## Usage
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
m365 entra m365group report activitystorage
|
|
12
|
+
m365 entra m365group report activitystorage [options]
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Alias
|
|
16
16
|
|
|
17
17
|
```sh
|
|
18
|
-
m365 aad m365group report activitystorage
|
|
18
|
+
m365 aad m365group report activitystorage [options]
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
## Options
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import Global from '/docs/cmd/_global.mdx';
|
|
2
|
+
|
|
3
|
+
# file move
|
|
4
|
+
|
|
5
|
+
Moves a file to another location using the Microsoft Graph
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
m365 file move [options]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Options
|
|
14
|
+
|
|
15
|
+
```md definition-list
|
|
16
|
+
`-u, --webUrl <webUrl>`
|
|
17
|
+
: The URL of the site where the file is located.
|
|
18
|
+
|
|
19
|
+
`-s, --sourceUrl <sourceUrl>`
|
|
20
|
+
: Server-relative or absolute URL of the file.
|
|
21
|
+
|
|
22
|
+
`-t, --targetUrl <targetUrl>`
|
|
23
|
+
: Server-relative or absolute URL of the location.
|
|
24
|
+
|
|
25
|
+
`--newName [newName]`
|
|
26
|
+
: New name of the destination file.
|
|
27
|
+
|
|
28
|
+
`--nameConflictBehavior [nameConflictBehavior]`
|
|
29
|
+
: Behavior when a document with the same name is already present at the destination. Possible values: `fail`, `replace`, `rename`. Default is `fail`.
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
<Global />
|
|
33
|
+
|
|
34
|
+
## Remarks
|
|
35
|
+
|
|
36
|
+
- If the source and target locations are within the same document library or drive, the command will utilize the Move DriveItem API, preserving the version history of the file.
|
|
37
|
+
- If the source and target locations are in different document libraries or drives, the command will use a copy-and-delete combination to move the file. Please note that in this case, version history will not be retained.
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
|
|
41
|
+
Move a file by server-relative URL to a folder in the same document library
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
m365 file move --webUrl "https://contoso.sharepoint.com/sites/project" --sourceUrl "/sites/project/Shared Documents/Document.pdf" --targetUrl "/sites/project/Shared Documents/NewFolder"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Move a file by server-relative URL to a document library in another site collection with server relative URL
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
m365 file move --webUrl "https://contoso.sharepoint.com/sites/project" --sourceUrl "/sites/project/Shared Documents/Document.pdf" --targetUrl "/sites/IT/Shared Documents"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Move a file by absolute URL to a document library in another site collection with absolute URL
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
m365 file move --webUrl "https://contoso.sharepoint.com" --sourceUrl "https://contoso.sharepoint.com/Shared Documents/Document.pdf" --targetUrl "https://contoso.sharepoint.com/sites/IT/Shared Documents"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Move a file to a document library in another site collection and rename the file
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
m365 file move --webUrl "https://contoso.sharepoint.com" --sourceUrl "/Shared Documents/Document.pdf" --targetUrl "/sites/IT/Shared Documents" --newName "newName"
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Move a file to a document library in another site collection and rename the file if a file with the same name already exists.
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
m365 file move --webUrl "https://contoso.sharepoint.com" --sourceUrl "/Shared Documents/Document.pdf" --targetUrl "/sites/IT/Shared Documents" --nameConflictBehavior rename
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Move a file to Onedrive for business
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
m365 file move --webUrl "https://contoso.sharepoint.com" --sourceUrl "/Shared Documents/Document.pdf" --targetUrl "https://contoso-my.sharepoint.com/personal/john_contoso_onmicrosoft_com/documents"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Response
|
|
78
|
+
|
|
79
|
+
The command won't return a response on success.
|
|
@@ -27,7 +27,7 @@ Using the `-t, --type` option you can choose whether you want to manage the sett
|
|
|
27
27
|
|
|
28
28
|
:::info
|
|
29
29
|
|
|
30
|
-
To use this command you
|
|
30
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
31
31
|
|
|
32
32
|
:::
|
|
33
33
|
|
|
@@ -28,7 +28,7 @@ Using the `-t, --type` option you can choose whether you want to manage the sett
|
|
|
28
28
|
|
|
29
29
|
:::info
|
|
30
30
|
|
|
31
|
-
To use this command you
|
|
31
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
32
32
|
|
|
33
33
|
:::
|
|
34
34
|
|
|
@@ -27,7 +27,7 @@ Using the `-t, --type` option you can choose whether you want to manage the sett
|
|
|
27
27
|
|
|
28
28
|
:::info
|
|
29
29
|
|
|
30
|
-
To use this command you
|
|
30
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
31
31
|
|
|
32
32
|
:::
|
|
33
33
|
|
|
@@ -31,7 +31,7 @@ Using the `-t, --type` option you can choose whether you want to manage the sett
|
|
|
31
31
|
|
|
32
32
|
:::info
|
|
33
33
|
|
|
34
|
-
To use this command you
|
|
34
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
35
35
|
|
|
36
36
|
:::
|
|
37
37
|
|
|
@@ -27,7 +27,7 @@ Using the `-t, --cdnType` option you can choose whether you want to manage the s
|
|
|
27
27
|
|
|
28
28
|
:::info
|
|
29
29
|
|
|
30
|
-
To use this command you
|
|
30
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
31
31
|
|
|
32
32
|
:::
|
|
33
33
|
|
|
@@ -31,7 +31,7 @@ Using the `-t, --cdnType` option you can choose whether you want to manage the s
|
|
|
31
31
|
|
|
32
32
|
:::info
|
|
33
33
|
|
|
34
|
-
To use this command you
|
|
34
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
35
35
|
|
|
36
36
|
:::
|
|
37
37
|
|
|
@@ -27,7 +27,7 @@ If the specified url doesn't refer to an existing site collection, you will get
|
|
|
27
27
|
|
|
28
28
|
:::info
|
|
29
29
|
|
|
30
|
-
To use this command you
|
|
30
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
31
31
|
|
|
32
32
|
:::
|
|
33
33
|
|
|
@@ -25,7 +25,7 @@ Using the `-u, --url` option you can specify which site to add to the list of or
|
|
|
25
25
|
|
|
26
26
|
:::info
|
|
27
27
|
|
|
28
|
-
To use this command you
|
|
28
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
29
29
|
|
|
30
30
|
:::
|
|
31
31
|
|
|
@@ -9,7 +9,7 @@ Adds a user or group as a site collection administrator
|
|
|
9
9
|
## Usage
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
m365 spo site admin add
|
|
12
|
+
m365 spo site admin add [options]
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
## Options
|
|
@@ -64,4 +64,4 @@ m365 spo site admin add --siteUrl https://contoso.sharepoint.com --groupName SP_
|
|
|
64
64
|
```
|
|
65
65
|
## Response
|
|
66
66
|
|
|
67
|
-
The command won't return a response on success.
|
|
67
|
+
The command won't return a response on success.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import Global from '/docs/cmd/_global.mdx';
|
|
2
|
+
import Tabs from '@theme/Tabs';
|
|
3
|
+
import TabItem from '@theme/TabItem';
|
|
4
|
+
|
|
5
|
+
# spo site admin remove
|
|
6
|
+
|
|
7
|
+
Removes a user or group as site collection administrator
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
m365 spo site admin remove [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Options
|
|
16
|
+
|
|
17
|
+
```md definition-list
|
|
18
|
+
`-u, --siteUrl <siteUrl>`
|
|
19
|
+
: The URL of the SharePoint site
|
|
20
|
+
|
|
21
|
+
`--userId [userId]`
|
|
22
|
+
: The ID of the user to remove as a site collection admin
|
|
23
|
+
|
|
24
|
+
`--userName [userName]`
|
|
25
|
+
: The user principal name of the user to remove as a site collection admin
|
|
26
|
+
|
|
27
|
+
`--groupId [groupId]`
|
|
28
|
+
: The ID of the Microsoft Entra ID group to remove as a site collection admin
|
|
29
|
+
|
|
30
|
+
`--groupName [groupName]`
|
|
31
|
+
: The name of the Microsoft Entra ID group to remove as a site collection admin
|
|
32
|
+
|
|
33
|
+
`--asAdmin`
|
|
34
|
+
: If specified, we will use the SharePoint admin center to execute the command
|
|
35
|
+
|
|
36
|
+
`-f, --force`
|
|
37
|
+
: Don't prompt for confirmation
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
<Global />
|
|
41
|
+
|
|
42
|
+
## Remarks
|
|
43
|
+
|
|
44
|
+
:::info
|
|
45
|
+
|
|
46
|
+
To use this command with the `--asAdmin` mode, you have to have permissions to access the tenant admin site.
|
|
47
|
+
|
|
48
|
+
Without this parameter, you have to have site collection admin permissions for the requested site.
|
|
49
|
+
|
|
50
|
+
:::
|
|
51
|
+
|
|
52
|
+
## Examples
|
|
53
|
+
|
|
54
|
+
Removes user as site collection admin
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
m365 spo site admin remove --siteUrl https://contoso.sharepoint.com --userId 600713c5-53c6-4f24-b454-3c35e22b2639
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Removes group as site collection admin without prompting for confirmation as SharePoint Admin
|
|
61
|
+
|
|
62
|
+
```sh
|
|
63
|
+
m365 spo site admin remove --siteUrl https://contoso.sharepoint.com --groupName SP_Administrators --force --asAdmin
|
|
64
|
+
```
|
|
65
|
+
## Response
|
|
66
|
+
|
|
67
|
+
The command won't return a response on success.
|
|
@@ -25,7 +25,7 @@ While the command uses the term *'remove'*, like its equivalent PowerShell cmdle
|
|
|
25
25
|
|
|
26
26
|
:::info
|
|
27
27
|
|
|
28
|
-
To use this command you
|
|
28
|
+
To use this command you must be either **SharePoint Administrator** or **Global Administrator**.
|
|
29
29
|
|
|
30
30
|
:::
|
|
31
31
|
|