PowerShell 範例
您可以從儲存在 .csv 檔案中的電子郵件位址,大量邀請外部用戶到組織。
準備 .csv 檔案
建立新的 .csv 檔案,並將其命名為 invitations.csv。 在此範例中,檔案會儲存在 C:\data 中,並包含下列資訊:
| 名稱 |
受邀使用者電子郵件地址 |
| Gmail B2B 受邀者 |
b2binvitee@gmail.com |
| Outlook B2B 受邀者 |
b2binvitee@outlook.com |
取得最新的 Microsoft Graph PowerShell
若要使用新的 Cmdlet,您必須安裝更新的 Microsoft Graph PowerShell 模組。 如需詳細資訊,請參閱 安裝 Microsoft Graph PowerShell SDK
登入您的租用
Connect-MgGraph -Scopes "User.Invite.All"
執行 PowerShell Cmdlet
$invitations = import-csv C:\data\invitations.csv
$messageInfo = New-Object Microsoft.Open.MSGraph.Model.InvitedUserMessageInfo
$messageInfo.customizedMessageBody = "Hey there! Check this out. I created an invitation through PowerShell"
foreach ($email in $invitations) {
New-MgInvitation -InviteRedirectUrl "https://wingtiptoysonline-dev-ed.my.woodgrove.com" `
-InvitedUserDisplayName $email.Name -InvitedUserEmailAddress $email.InvitedUserEmailAddress `
-InvitedUserMessageInfo $messageInfo -SendInvitationMessage:$true
}
此 Cmdlet 會將邀請傳送至 invitations.csv中的電子郵件位址。 此 Cmdlet 的更多功能包括:
- 電子郵件訊息中的自定義文字
- 包含受邀用戶的顯示名稱
- 將訊息傳送至 CC 或完全隱藏電子郵件訊息
程式代碼範例
程式代碼範例說明如何呼叫邀請 API 並取得兌換 URL。 使用兌換 URL 來傳送自訂邀請電子郵件。 您可以使用 HTTP 用戶端撰寫電子郵件,以便自訂其外觀,並透過 Microsoft Graph API 傳送電子郵件。
POST https://graph.microsoft.com/v1.0/invitations
Content-type: application/json
{
"invitedUserEmailAddress": "david@fabrikam.com",
"invitedUserDisplayName": "David",
"inviteRedirectUrl": "https://myapp.contoso.com",
"sendInvitationMessage": true
}
using System;
using System.Threading.Tasks;
using Microsoft.Graph;
using Azure.Identity;
namespace SampleInviteApp
{
class Program
{
/// <summary>
/// This is the tenant ID of the tenant you want to invite users to.
/// </summary>
private static readonly string TenantID = "";
/// <summary>
/// This is the application id of the application that is registered in the above tenant.
/// </summary>
private static readonly string TestAppClientId = "";
/// <summary>
/// Client secret of the application.
/// </summary>
private static readonly string TestAppClientSecret = @"";
/// <summary>
/// This is the email address of the user you want to invite.
/// </summary>
private static readonly string InvitedUserEmailAddress = @"";
/// <summary>
/// This is the display name of the user you want to invite.
/// </summary>
private static readonly string InvitedUserDisplayName = @"";
/// <summary>
/// Main method.
/// </summary>
/// <param name="args">Optional arguments</param>
static async Task Main(string[] args)
{
string InviteRedeemUrl = await SendInvitation();
}
/// <summary>
/// Send the guest user invite request.
/// </summary>
private static async string SendInvitation()
{
/// Get the access token for our application to talk to Microsoft Graph.
var scopes = new[] { "https://graph.microsoft.com/.default" };
var clientSecretCredential = new ClientSecretCredential(TenantID, TestAppClientId, TestAppClientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
// Create the invitation object.
var invitation = new Invitation
{
InvitedUserEmailAddress = InvitedUserEmailAddress,
InvitedUserDisplayName = InvitedUserDisplayName,
InviteRedirectUrl = "https://www.microsoft.com",
SendInvitationMessage = true
};
// Send the invitation
var GraphResponse = await graphClient.Invitations
.Request()
.AddAsync(invitation);
// Return the invite redeem URL
return GraphResponse.InviteRedeemUrl;
}
}
}
安裝下列 npm 套件:
npm install express
npm install isomorphic-fetch
npm install @azure/identity
npm install @microsoft/microsoft-graph-client
const express = require('express')
const app = express()
const { Client } = require("@microsoft/microsoft-graph-client");
const { TokenCredentialAuthenticationProvider } = require("@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials");
const { ClientSecretCredential } = require("@azure/identity");
require("isomorphic-fetch");
// This is the application id of the application that is registered in the above tenant.
const CLIENT_ID = ""
// Client secret of the application.
const CLIENT_SECRET = ""
// This is the tenant ID of the tenant you want to invite users to. For example fabrikam.onmicrosoft.com
const TENANT_ID = ""
async function sendInvite() {
// Initialize a confidential client application. For more info, visit: https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-a-service-principal-with-a-client-secret
const credential = new ClientSecretCredential(TENANT_ID, CLIENT_ID, CLIENT_SECRET);
// Initialize the Microsoft Graph authentication provider. For more info, visit: https://learn.microsoft.com/graph/sdks/choose-authentication-providers?tabs=Javascript#using--for-server-side-applications
const authProvider = new TokenCredentialAuthenticationProvider(credential, { scopes: ['https://graph.microsoft.com/.default'] });
// Create MS Graph client instance. For more info, visit: https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/CreatingClientInstance.md
const client = Client.initWithMiddleware({
debugLogging: true,
authProvider,
});
// Create invitation object
const invitation = {
invitedUserEmailAddress: 'david@fabrikam.com',
invitedUserDisplayName: 'David',
inviteRedirectUrl: 'https://www.microsoft.com',
sendInvitationMessage: true
};
// Execute the MS Graph command. For more information, visit: https://learn.microsoft.com/graph/api/invitation-post
graphResponse = await client.api('/invitations')
.post(invitation);
// Return the invite redeem URL
return graphResponse.inviteRedeemUrl
}
const inviteRedeemUrl = await sendInvite();
後續步驟