كيفية إدارة التعيينات باستخدام PowerShell

هام

في 11 يوليو 2026، سيتم إهمال المخططات (إصدار أولي). قم بترحيل تعريفات المخططات والتعيينات الموجودة إلى مواصفات القالبومكدسات التوزيع. سيتم تحويل البيانات الاصطناعية للمخطط إلى قوالب ARM JSON أو ملفات Bicep المستخدمة لتعريف مكدسات التوزيع. لمعرفة كيفية تأليف أداة كمورد ARM، راجع:

يمكن إدارة تعيين مخطط باستخدام الوحدة النمطية Azure PowerShell Az.Blueprint. تدعم الوحدة إحضار التعيينات وإنشائها وتحديثها وإزالتها. يمكن للوحدة النمطية أيضاً إحضار تفاصيل حول تعريفات المخطط الموجودة. تتناول هذه المقالة كيفية تثبيت الوحدة النمطية والبدء في استخدامها.

إضافة الوحدة النمطية Az.Blueprint

لتمكين Azure PowerShell لإدارة تعيينات المخطط، يجب إضافة الوحدة النمطية. يمكن استخدام هذه الوحدة مع PowerShell المثبت محلياً، أو مع Azure Cloud Shell، أو مع صورة Azure PowerShell Docker.

المتطلبات الأساس

تتطلب وحدة مخططات Azure البرنامج التالي:

تثبيت الوحدة

الوحدة النمطية Azure Blueprints لـ PowerShell هي Az.Blueprint.

  1. من موجه PowerShell إدارة قم بتشغيل الأمر التالي:

    # Install the Azure Blueprints module from PowerShell Gallery
    Install-Module -Name Az.Blueprint
    

    ملاحظة

    إذا كان Az.Accounts مثبتاً بالفعل، فقد يكون من الضروري استخدام -AllowClobber لفرض التثبيت.

  2. التحقق من صحة أن الوحدة النمطية قد تم استيرادها وأنها الإصدار الصحيح (0.2.6):

    # Get a list of commands for the imported Az.Blueprint module
    Get-Command -Module 'Az.Blueprint' -CommandType 'Cmdlet'
    

الحصول على تعريفات المخطط

غالباً ما تكون الخطوة الأولى للعمل مع أي تعيين هي الحصول على مرجع إلى تعريف مخطط. يحصل cmdlet Get-AzBlueprint على تعريف مخطط واحد أو أكثر. يمكن أن يحصل cmdlet على تعريفات المخطط من مجموعة إدارة مع -ManagementGroupId {mgId} أو اشتراك مع -SubscriptionId {subId}. تحصل معلمة الاسم على تعريف مخطط، ولكن يجب استخدامها مع ManagementGroupId أو SubscriptionId. يمكن استخدام الإصدار مع الاسم ليكون أكثر وضوحاً حول تعريف المخطط الذي يتم إرجاعه. بدلاً من الإصدار، يستحوذ مفتاح التبديل -LatestPublished على أحدث إصدار تم نشره.

يستخدم المثال التالي Get-AzBlueprint للحصول على جميع إصدارات تعريف المخطط المسمى "101-blueprints-definition-subscription" من اشتراك معين ممثل ليكون {subId}:

# Login first with Connect-AzAccount if not using Cloud Shell

# Get all versions of the blueprint definition in the specified subscription
$blueprints = Get-AzBlueprint -SubscriptionId '{subId}' -Name '101-blueprints-definition-subscription'

# Display the blueprint definition object
$blueprints

يبدو إخراج المثال لتعريف مخطط بإصدارات متعددة كما يلي:

Name                 : 101-blueprints-definition-subscription
Id                   : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprints/101
                       -blueprints-definition-subscription
DefinitionLocationId : {subId}
Versions             : {1.0, 1.1}
TimeCreated          : 2019-02-25
TargetScope          : Subscription
Parameters           : {storageAccount_storageAccountType, storageAccount_location,
                       allowedlocations_listOfAllowedLocations, [Usergrouporapplicationname]:Reader_RoleAssignmentName}
ResourceGroups       : ResourceGroup

يمكن توسيع معلمات المخطط على تعريف المخطط لتوفير مزيد من المعلومات.

$blueprints.Parameters
Key                                                    Value
---                                                    -----
storageAccount_storageAccountType                      Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
storageAccount_location                                Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
allowedlocations_listOfAllowedLocations                Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition
[Usergrouporapplicationname]:Reader_RoleAssignmentName Microsoft.Azure.Commands.Blueprint.Models.PSParameterDefinition

الحصول على تعيينات المخطط

إذا كان تعيين المخطط موجوداً بالفعل، يمكنك الحصول على مرجع إليه باستخدام Get-AzBlueprintAssignment cmdlet. يأخذ cmdlet SubscriptionId و Name كمعلمات اختيارية. إذا لم يتم تحديد SubscriptionId، يتم استخدام سياق الاشتراك الحالي.

يستخدم المثال التالي Get-AzBlueprintAssignment للحصول على تعيين مخطط واحد يسمى "Assignment-lock-resource-groups" من اشتراك معين ممثل ليكون {subId}:

# Login first with Connect-AzAccount if not using Cloud Shell

# Get the blueprint assignment in the specified subscription
$blueprintAssignment = Get-AzBlueprintAssignment -SubscriptionId '{subId}' -Name 'Assignment-lock-resource-groups'

# Display the blueprint assignment object
$blueprintAssignment

يبدو إخراج المثال لتعيين مخطط كما يلي:

Name              : Assignment-lock-resource-groups
Id                : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssignme
                    nts/Assignment-lock-resource-groups
Scope             : /subscriptions/{subId}
LastModified      : 2019-02-19
LockMode          : AllResourcesReadOnly
ProvisioningState : Succeeded
Parameters        :
ResourceGroups    : ResourceGroup

إنشاء تعيينات المخطط

إذا لم يكن تعيين المخطط موجوداً بعد، يمكنك إنشاؤه باستخدام New-AzBlueprintAssignment cmdlet. يستخدم cmdlet هذا المعلمات التالية:

  • الاسم [مطلوب]

    • تحديد اسم تعيين المخطط
    • يجب أن يكون فريداً وغير موجود بالفعل في SubscriptionId
  • المخطط [مطلوب]

    • تحديد تعريف المخطط المراد تعيينه
    • استخدم Get-AzBlueprint للحصول على العنصر المرجعي
  • الموقع [مطلوب]

    • تحديد المنطقة للهوية المدارة المعينة من قبل النظام وعنصر توزيع الاشتراك المراد إنشاؤه في
  • الاشتراك (اختياري)

    • تحديد الاشتراك الذي يتم توزيع التعيين فيه
    • إذا لم يتم توفيره، فسيتم تعيين الإعدادات بشكل افتراضي إلى سياق الاشتراك الحالي
  • التأمين (اختياري)

    • تعريف تأمين موارد المخطط للاستخدام للموارد الموزعة
    • الخيارات المدعومة: بلا، AllResourcesReadOnly، AllResourcesDoNotDelete
    • إذا لم يتم توفيرها، فسيتم تعيين الإعدادات بشكل افتراضي إلى بلا
  • SystemAssignedIdentity (اختياري)

    • حدد لإنشاء هوية مدارة يعينها النظام للتعيين ولتوزيع الموارد
    • افتراضي لمجموعة معلمات "الهوية"
    • لا يمكن الاستخدام مع UserAssignedIdentity
  • UserAssignedIdentity (اختياري)

    • تحديد الهوية المدارة المعينة من قبل المستخدم لاستخدامها في التعيين وتوزيع الموارد
    • جزء من مجموعة معلمات "الهوية"
    • لا يمكن الاستخدام مع SystemAssignedIdentity
  • المعلمة (اختياري)

    • جدول تجزئة لأزواج المفاتيح/القيم لتعيين المعلمات الديناميكية في تعيين المخطط

    • الافتراضي لأي معلمة ديناميكية هو defaultValue في التعريف

    • إذا لم يتم توفير معلمة وليس لها defaultValue، فإن المعلمة ليست اختيارية

      ملاحظة

      لا تدعم المعلمة secureStrings.

  • ResourceGroupParameter (اختياري)

    • جدول تجزئة للبيانات الاصطناعية لمجموعة الموارد
    • يحتوي كل عنصر نائب للبيانات الاصطناعية لمجموعة الموارد على أزواج مفاتيح/قيمة لإعداد الاسم و الموقع ديناميكياً على البيانات الاصطناعية لمجموعة الموارد هذه
    • إذا لم يتم توفير معلمة مجموعة موارد ولم يكن لها defaultValue، فإن معلمة مجموعة الموارد ليست اختيارية
  • AssignmentFile (اختياري)

    • المسار إلى تمثيل ملف JSON لتعيين مخطط
    • هذه المعلمة هي جزء من مجموعة معلمات PowerShell التي تتضمن الاسم و المخطط و SubscriptionId فقط، بالإضافة إلى المعلمات الشائعة.

مثال 1: توفير المعلمات

ينشئ المثال التالي تعييناً جديداً للإصدار "1.1" من تعريف مخطط "my-blueprint" الذي تم إحضاره باستخدام Get-AzBlueprint، ويعين موقع عنصر التعيين والهوية المدارة إلى "westus2"، ويؤمن الموارد بواسطة AllResourcesReadOnly، ويعين جداول التجزئة لكل من المعلمة و ResourceGroupParameter على اشتراك معين ممثل ليكون {subId}:

# Login first with Connect-AzAccount if not using Cloud Shell

# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'

# Create the hash table for Parameters
$bpParameters = @{storageAccount_storageAccountType='Standard_GRS'}

# Create the hash table for ResourceGroupParameters
# ResourceGroup is the resource group artifact placeholder name
$bpRGParameters = @{ResourceGroup=@{name='storage_rg';location='westus2'}}

# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
    -SubscriptionId '{subId}' -Location 'westus2' -Lock AllResourcesReadOnly `
    -Parameter $bpParameters -ResourceGroupParameter $bpRGParameters

يبدو إخراج المثال لإنشاء تعيين مخطط كما يلي:

Name              : my-blueprint-assignment
Id                : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssi
                    gnments/my-blueprint-assignment
Scope             : /subscriptions/{subId}
LastModified      : 2019-03-13
LockMode          : AllResourcesReadOnly
ProvisioningState : Creating
Parameters        : {storageAccount_storageAccountType}
ResourceGroups    : ResourceGroup

مثال 2: استخدام ملف تعريف تعيين JSON

ينشئ المثال التالي نفس التعيين تقريباً مثل المثال 1. بدلاً من تمرير المعلمات إلى cmdlet، يوضح المثال استخدام ملف تعريف تعيين JSON والمعلمة AssignmentFile. بالإضافة إلى ذلك، يتم تكوين الخاصية excludedPrincipals كجزء من التأمينات. لا توجد معلمة PowerShell من أجل excludedPrincipals ولا يمكن تكوين الخاصية إلا عن طريق تعيينها من خلال ملف تعريف تعيين JSON.

{
  "identity": {
    "type": "SystemAssigned"
  },
  "location": "westus2",
  "properties": {
    "description": "Assignment of the 101-blueprint-definition-subscription",
    "blueprintId": "/subscriptions/{subId}/providers/Microsoft.Blueprint/blueprints/101-blueprints-definition-subscription",
    "locks": {
      "mode": "AllResourcesReadOnly",
      "excludedPrincipals": [
          "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
          "38833b56-194d-420b-90ce-cff578296714"
      ]
    },
    "parameters": {
      "storageAccount_storageAccountType": {
        "value": "Standard_GRS"
      }
    },
    "resourceGroups": {
      "ResourceGroup": {
        "name": "storage_rg",
        "location": "westus2"
      }
    }
  }
}
# Login first with Connect-AzAccount if not using Cloud Shell

# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -SubscriptionId '{subId}' `
    -AssignmentFile '.\assignment.json'

للحصول على مثال لملف تعريف تعيين JSON لهوية مدارة معينة من قبل المستخدم، راجع نص الطلب في مثال: التعيين مع الهوية المدارة المعينة من قبل المستخدم لواجهة برمجة تطبيقات REST.

تحديث تعيينات المخطط

في بعض الأحيان، من الضروري تحديث تعيين مخطط تم إنشاؤه بالفعل. يعالج Set-AzBlueprintAssignment cmdlet هذا الإجراء. يأخذ cmdlet معظم المعلمات نفسها التي يقوم بها New-AzBlueprintAssignment cmdlet، ما يسمح بتحديث أي شيء تم تعيينه على التعيين. الاستثناءات هي الاسم والمخطط وSubscriptionId. يتم تحديث القيم المقدمة فقط.

لفهم ما يحدث عند تحديث تعيين مخطط، راجع قواعد تحديث التعيينات.

  • الاسم [مطلوب]

    • تحديد اسم تعيين المخطط للتحديث
    • يستخدم لتحديد موقع التعيين للتحديث، وليس لتغيير التعيين
  • المخطط [مطلوب]

    • تحديد تعريف المخطط لتعيين المخطط
    • استخدم Get-AzBlueprint للحصول على العنصر المرجعي
    • يستخدم لتحديد موقع التعيين للتحديث، وليس لتغيير التعيين
  • الموقع (اختياري)

    • تحديد المنطقة للهوية المدارة المعينة من قبل النظام وعنصر توزيع الاشتراك المراد إنشاؤه في
  • الاشتراك (اختياري)

    • تحديد الاشتراك الذي يتم توزيع التعيين فيه
    • إذا لم يتم توفيره، فسيتم تعيين الإعدادات بشكل افتراضي إلى سياق الاشتراك الحالي
    • يستخدم لتحديد موقع التعيين للتحديث، وليس لتغيير التعيين
  • التأمين (اختياري)

    • تعريف تأمين موارد المخطط للاستخدام للموارد الموزعة
    • الخيارات المدعومة: بلا، AllResourcesReadOnly، AllResourcesDoNotDelete
  • SystemAssignedIdentity (اختياري)

    • حدد لإنشاء هوية مدارة يعينها النظام للتعيين ولتوزيع الموارد
    • افتراضي لمجموعة معلمات "الهوية"
    • لا يمكن الاستخدام مع UserAssignedIdentity
  • UserAssignedIdentity (اختياري)

    • تحديد الهوية المدارة المعينة من قبل المستخدم لاستخدامها في التعيين وتوزيع الموارد
    • جزء من مجموعة معلمات "الهوية"
    • لا يمكن الاستخدام مع SystemAssignedIdentity
  • المعلمة (اختياري)

    • جدول تجزئة لأزواج المفاتيح/القيم لتعيين المعلمات الديناميكية في تعيين المخطط

    • الافتراضي لأي معلمة ديناميكية هو defaultValue في التعريف

    • إذا لم يتم توفير معلمة وليس لها defaultValue، فإن المعلمة ليست اختيارية

      ملاحظة

      لا تدعم المعلمة secureStrings.

  • ResourceGroupParameter (اختياري)

    • جدول تجزئة للبيانات الاصطناعية لمجموعة الموارد
    • يحتوي كل عنصر نائب للبيانات الاصطناعية لمجموعة الموارد على أزواج مفاتيح/قيمة لإعداد الاسم و الموقع ديناميكياً على البيانات الاصطناعية لمجموعة الموارد هذه
    • إذا لم يتم توفير معلمة مجموعة موارد ولم يكن لها defaultValue، فإن معلمة مجموعة الموارد ليست اختيارية

يحدث المثال التالي تعيين الإصدار "1.1" من تعريف مخطط "my-blueprint" الذي تم إحضاره باستخدام Get-AzBlueprint عن طريق تغيير وضع التأمين:

# Login first with Connect-AzAccount if not using Cloud Shell

# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'

# Update the existing blueprint assignment
$bpAssignment = Set-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
    -SubscriptionId '{subId}' -Lock AllResourcesDoNotDelete

يبدو إخراج المثال لإنشاء تعيين مخطط كما يلي:

Name              : my-blueprint-assignment
Id                : /subscriptions/{subId}/providers/Microsoft.Blueprint/blueprintAssi
                    gnments/my-blueprint-assignment
Scope             : /subscriptions/{subId}
LastModified      : 2019-03-13
LockMode          : AllResourcesDoNotDelete
ProvisioningState : Updating
Parameters        : {storageAccount_storageAccountType}
ResourceGroups    : ResourceGroup

إزالة تعيينات المخطط

عندما يحين الوقت لإزالة تعيين مخطط، يعالج Remove-AzBlueprintAssignment cmdlet هذا الإجراء. يأخذ cmdlet إما الاسم أو InputObject لتحديد تعيين المخطط الذي يجب إزالته. SubscriptionIdمطلوب ويجب توفيره في جميع الحالات.

يحضر المثال التالي تعيين مخطط موجود مع Get-AzBlueprintAssignment ثم يزيله من الاشتراك المحدد الممثل ليكون {subId}:

# Login first with Connect-AzAccount if not using Cloud Shell

# Get the blueprint assignment in the specified subscription
$blueprintAssignment = Get-AzBlueprintAssignment -Name 'Assignment-lock-resource-groups'

# Remove the existing blueprint assignment
Remove-AzBlueprintAssignment -InputObject $blueprintAssignment -SubscriptionId '{subId}'

مثال على التعليمة البرمجية

يجمع كل الخطوات معاً، يحصل المثال التالي على تعريف المخطط، ثم ينشئ ويحدث ويزيل تعيين مخطط في الاشتراك المحدد الممثل ليكون {subId}:

# Login first with Connect-AzAccount if not using Cloud Shell

#region GetBlueprint
# Get version '1.1' of the blueprint definition in the specified subscription
$bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'my-blueprint' -Version '1.1'
#endregion

#region CreateAssignment
# Create the hash table for Parameters
$bpParameters = @{storageAccount_storageAccountType='Standard_GRS'}

# Create the hash table for ResourceGroupParameters
# ResourceGroup is the resource group artifact placeholder name
$bpRGParameters = @{ResourceGroup=@{name='storage_rg';location='westus2'}}

# Create the new blueprint assignment
$bpAssignment = New-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
    -SubscriptionId '{subId}' -Location 'westus2' -Lock AllResourcesReadOnly `
    -Parameter $bpParameters -ResourceGroupParameter $bpRGParameters
#endregion CreateAssignment

# Wait for the blueprint assignment to finish deployment prior to the next steps

#region UpdateAssignment
# Update the existing blueprint assignment
$bpAssignment = Set-AzBlueprintAssignment -Name 'my-blueprint-assignment' -Blueprint $bpDefinition `
    -SubscriptionId '{subId}' -Lock AllResourcesDoNotDelete
#endregion UpdateAssignment

# Wait for the blueprint assignment to finish deployment prior to the next steps

#region RemoveAssignment
# Remove the existing blueprint assignment
Remove-AzBlueprintAssignment -InputObject $bpAssignment -SubscriptionId '{subId}'
#endregion

الخطوات التالية