إدارة البيئات المختلطة باستخدام PowerShell في وظائف Azure والاتصالات المختلطة الخاصة بخدمة التطبيقات
تمكن ميزة الاتصالات المختلطة لخدمة التطبيقات Azure من الوصول إلى الموارد في الشبكات الأخرى. يمكنك معرفة المزيد حول هذه الإمكانية في وثائقالاتصالات المختلطة. توضح هذه المقالة كيفية استخدام هذه الإمكانية لتشغيل وظائف PowerShell التي تستهدف خادمًا محليًّا. يمكن استخدام هذا الخادم لإدارة كافة الموارد في البيئة المحلية من وظيفة Azure PowerShell.
تكوين خادم محلي لإعادة اتصال PowerShell عن بُعد
يمكن البرنامج النصي التالي تمكين اتصال PowerShell عن بعد، ثم يقوم بإنشاء قاعدة جدار حماية جديدة ووحدة استماع Https WinRM. يتم استخدام شهادة موقعة ذاتيًّا، لأغراض اختبارية. نوصي باستخدام شهادة موقعة، في بيئة إنتاج.
# For configuration of WinRM, see
# https://learn.microsoft.com/windows/win32/winrm/installation-and-configuration-for-windows-remote-management.
# Enable PowerShell remoting.
Enable-PSRemoting -Force
# Create firewall rule for WinRM. The default HTTPS port is 5986.
New-NetFirewallRule -Name "WinRM HTTPS" `
-DisplayName "WinRM HTTPS" `
-Enabled True `
-Profile "Any" `
-Action "Allow" `
-Direction "Inbound" `
-LocalPort 5986 `
-Protocol "TCP"
# Create new self-signed-certificate to be used by WinRM.
$Thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME -CertStoreLocation Cert:\LocalMachine\My).Thumbprint
# Create WinRM HTTPS listener.
$Cmd = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:COMPUTERNAME ""; CertificateThumbprint=""$Thumbprint""}"
cmd.exe /C $Cmd
إنشاء تطبيق وظيفة PowerShell في المدخل
تتوفر ميزة الاتصالات المختلطة لخدمة التطبيقات فقط في خطط التسعير الأساسية والمعيارية والمعزولة. قم بإنشاء أو تحديد إحدى هذه الخطط، عند إنشاء تطبيق الوظائف باستخدام PowerShell.
من قائمة مدخل Azure أو الصفحة الرئيسية، حدد Create a resource.
في صفحة New، قم باختيار Compute>Function App.
في صفحةالأساسيات، استخدم "إعدادات تطبيق الوظائف" على النحو المحدد في الجدول التالي.
الإعدادات القيمة المقترحة الوصف الاشتراك اشتراكك الاشتراك الذي تم من خلاله إنشاء تطبيق الوظائف الجديد هذا. مجموعة الموارد myResourceGroup اسم مجموعة الموارد الجديدة التي يتم من خلالها إنشاء تطبيق الوظيفة. اسم تطبيق الوظائف اسم فريد عالميًا الاسم الذي يحدد تطبيق الوظائف الجديد. الأحرف الصالحة هي a-z
(غير حساسة لحالة الأحرف)، و0-9
، و-
.نشر الرمز خيار نشر ملفات الرمز البرمجية أو حاوية «Docker». مكدس وقت التشغيل اللغة المفضلة اختر ذاكرة PowerShell الأساسية. الإصدار رقم الإصدار اختر إصدار وقت التشغيل المثبت. المنطقة المنطقة المفضلة اختر منطقةقريبة منك، أو بالقرب من الخدمات التي تصل إليها الوظائف. حدد "Next : Hosting". في صفحة "Hosting" أدخل الإعدادات التالية.
الإعدادات القيمة المقترحة الوصف حساب التخزين اسم فريد عالميًا أنشئ حساب تخزين يستخدمه تطبيق الوظائف لديك. يجب أن تكون أسماء حسابات بين 3 أحرف و24 حرفًا في الطول ويجب استخدام أرقام وأحرف صغيرة فقط. كما يمكنك استخدام حساب موجود، والذي ينبغي أن يفي بمتطلبات حساب التخزين. نظام التشغيل نظام التشغيل المفضل يُحدد نظام التشغيل لك مسبقًا بالاستناد إلى تحديد مكدس وقت التشغيل، غير أنه يمكنك تغيير الإعداد إذا لزم الأمر. نوع الخطة خطة خدمة التطبيقات قم باختيار"إنشاء خطة خدمة التطبيق". يجب عليك إدارةتحجيم نطاق وظيفة التطبيق الخاصة بك، عندما تقوم بتشغيل خطة App Service. حدد Next : Monitoring. في صفحة Monitoring أدخل الإعدادات التالية.
الإعدادات القيمة المقترحة الوصف Application Insights الإعداد الافتراضي أنشئ "مورد Application Insights" بنفساسم التطبيقفي أقرب منطقة مدعومة. من خلال توسيع هذا الإعداد أو تحديدإنشاء جديد، يمكنك تغيير اسم Application Insights أو اختيار منطقة مختلفة فيجغرافية Azureحيث تريد تخزين البيانات. حدد "تقييم + إنشاء"لتقييم اختيارات تكوين التطبيق.
في صفحة Review + create راجع الإعدادات، ثم قم باختيار create لتوفير تطبيق الوظيفة ونشره.
قم باختيار رمز Notifications في الزاوية العلوية اليمنى من المدخل وستشاهد رسالة نجح النشر.
حدد الانتقال إلى المورد لعرض تطبيق الوظيفة الجديد. يمكنك أيضًا تحديدتثبيت في لوحة المعلومات. يُسهل التثبيت العودة إلى مورد تطبيق الوظيفة هذا من لوحة المعلومات الخاصة بك.
إنشاء الاتصال المختلط لتطبيق الوظائف
يتم تكوين الاتصالات المختلطة من قسم الشبكات الخاص بتطبيق الوظائف:
أسفلالإعداداتفي تطبيق الوظائف الذي أنشأته للتو، حدد"الشبكات".
حدد"تكوين نقاط النهاية للاتصالات المختلطة".
حدد"إضافة اتصال مختلط".
أدخل معلومات حول الاتصال المختلط كما هو موضح بعد لقطة الشاشة التالية. بالنسبة إلى مضيف نقطة النهاية، استخدم اسم المضيف للخادم المحلي الذي قمت بإنشاء الشهادة الموقعة ذاتيا له. ستكون لديك مشكلات في الاتصال عندما لا يتطابق اسم الشهادة واسم المضيف للخادم المحلي. يتطابق المنفذ مع منفذ خدمة الإدارة عن بعد الخاص بـ Windows الافتراضي الذي تم تحديده على الخادم في وقت سابق.
الإعدادات القيمة المقترحة اسم اتصال مختلط ContosoHybridOnPremisesServer المضيف الخاص بنقطة النهاية الماليات 1 منفذ نقطة النهاية 5986 مساحة اسم خدمة serviceBus إنشاء جديد Location اختيار موقع متوفر الاسم contosopowershell المختلط حدد "موافق" لإنشاء الاتصال المختلط.
تنزيل وتثبيت عامل مختلط
حدد "تنزيل مدير الاتصال"لحفظ ملف.msiبصفة محلية على الكمبيوتر الخاص بك.
نسخ ملف.msiمن الكمبيوتر المحلي إلى الخادم المحلي.
قم بتشغيل "مثبت إدارة الاتصال المختلط" لتثبيت الخدمة على الخادم المحلي.
من المدخل، افتح "الاتصال المختلط" ثم انسخ سلسلة اتصال البوابة إلى الحافظة.
افتح "واجهة مستخدم إدارة الاتصال المختلط" على الخادم المحلي.
حدد"إدخال يدويًّا" وألصق "سلسلة الاتصال" من الحافظة.
قم بإعادة تشغيل إدارة الاتصال المختلط من PowerShell إذا لم تظهر على أنها متصلة.
Restart-Service HybridConnectionManager
إنشاء إعداد تطبيق لكلمة مرور خاصة بحساب مسؤول
أسفلإعدادات تطبيق الوظيفة الخاص بك، حدد"تكوين".
حدد"إعداد تطبيق جديد+".
قم بتسمية "إعداد"كلمة مرور مستخدم Contoso، وأدخل "كلمة المرور". حدد موافق.
حدد"حفظ"لتخزين كلمة المرور في تطبيق الوظيفة.
إنشاء مشغل وظيفة HTTP
في تطبيق الوظائف، حدد"وظائف"، ثم حدد"إضافة".
حدد قالب HTTP trigger
قم بتسمية الوظيفة الجديدة وحدد"إنشاء وظيفة".
اختبار الوظيفة
في الوظيفة الجديدة، حدد"التعليمة البرمجية+ اختبار". استبدال التعليمة البرمجية لـ PowerShell من القالب بالتعليمة البرمجية التالية:
# Input bindings are passed in via param block. param($Request, $TriggerMetadata) # Write to the Azure Functions log stream. Write-Output "PowerShell HTTP trigger function processed a request." # Note that ContosoUserPassword is a function app setting, so I can access it as $env:ContosoUserPassword. $UserName = "ContosoUser" $securedPassword = ConvertTo-SecureString $Env:ContosoUserPassword -AsPlainText -Force $Credential = [System.management.automation.pscredential]::new($UserName, $SecuredPassword) # This is the name of the hybrid connection Endpoint. $HybridEndpoint = "finance1" $Script = { Param( [Parameter(Mandatory=$True)] [String] $Service ) Get-Service $Service } Write-Output "Scenario 1: Running command via Invoke-Command" Invoke-Command -ComputerName $HybridEndpoint ` -Credential $Credential ` -Port 5986 ` -UseSSL ` -ScriptBlock $Script ` -ArgumentList "*" ` -SessionOption (New-PSSessionOption -SkipCACheck)
حدد حفظ.
حدد "اختبار"، ثم حدد"تشغيل" لاختبار الوظيفة. قيم "التسجيلات" للتحقق من نجاح الاختبار.
إدارة أنظمة محلية أخرى
يمكنك استخدام الخادم المحلي المتصل للاتصال بخوادم وأنظمة إدارة أخرى في البيئة المحلية. يمكنك ذلك من إدارة عمليات مركز البيانات من Azure باستخدام وظائف PowerShell. يسجل البرنامج النصي التالي جلسة تكوين PowerShell والتي يتم تشغيلها وفقًا لبيانات الاعتماد المتوفرة. يجب أن تكون بيانات الاعتماد هذه خاصة بالمسؤول عن الخوادم المدارة عن بعد. يمكنك بعد ذلك استخدام هذا التكوين للوصول إلى نقاط نهاية أخرى على الخادم المحلي أو مركز البيانات.
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Note that ContosoUserPassword is a function app setting, so I can access it as $env:ContosoUserPassword.
$UserName = "ContosoUser"
$SecuredPassword = ConvertTo-SecureString $Env:ContosoUserPassword -AsPlainText -Force
$Credential = [System.management.automation.pscredential]::new($UserName, $SecuredPassword)
# This is the name of the hybrid connection Endpoint.
$HybridEndpoint = "finance1"
# The remote server that will be connected to run remote PowerShell commands on
$RemoteServer = "finance2".
Write-Output "Use hybrid connection server as a jump box to connect to a remote machine"
# We are registering an endpoint that runs under credentials ($Credential) that has access to the remote server.
$SessionName = "HybridSession"
$ScriptCommand = {
param (
[Parameter(Mandatory=$True)]
$SessionName)
if (-not (Get-PSSessionConfiguration -Name $SessionName -ErrorAction SilentlyContinue))
{
Register-PSSessionConfiguration -Name $SessionName -RunAsCredential $Using:Credential
}
}
Write-Output "Registering session on hybrid connection jumpbox"
Invoke-Command -ComputerName $HybridEndpoint `
-Credential $Credential `
-Port 5986 `
-UseSSL `
-ScriptBlock $ScriptCommand `
-ArgumentList $SessionName `
-SessionOption (New-PSSessionOption -SkipCACheck)
# Script to run on the jump box to run against the second machine.
$RemoteScriptCommand = {
param (
[Parameter(Mandatory=$True)]
$ComputerName)
# Write out the hostname of the hybrid connection server.
hostname
# Write out the hostname of the remote server.
Invoke-Command -ComputerName $ComputerName -Credential $Using:Credential -ScriptBlock {hostname} `
-UseSSL -Port 5986 -SessionOption (New-PSSessionOption -SkipCACheck)
}
Write-Output "Running command against remote machine via jumpbox by connecting to the PowerShell configuration session"
Invoke-Command -ComputerName $HybridEndpoint `
-Credential $Credential `
-Port 5986 `
-UseSSL `
-ScriptBlock $RemoteScriptCommand `
-ArgumentList $RemoteServer `
-SessionOption (New-PSSessionOption -SkipCACheck) `
-ConfigurationName $SessionName
استبدال المتغيرات التالية في هذا البرنامج النصي بالقيم القابلة للتطبيق من خلال البيئة الخاصة بك:
- $HybridEndpoint
- $ خادم مدار عن بعد
في السيناريوهين السابقين، يمكنك الاتصال وإدارة البيئات المحلية باستخدام PowerShell في وظائف Azure وفي الاتصالات المختلطة. نشجعك على معرفة المزيد عنالاتصالات المختلطةوPowerShell في الوظائف.
يمكنك أيضًا استخدام شبكات Azureالظاهريةللاتصال بالبيئة المحلية الخاصة بك من خلال وظائف Azure.