مدیریت از راه دور توسط Powershell

یکی از ویژگی‌های کمتر شناخته شده در Windows PowerShell 2.0 این است که به راحتی می‌توانید انعطاف‌پذیری باورنکردی را به محیط خود اضافه کنید. تصور اینکه کامپیوترهای مشتری‌های شما ویندوز XP را اجرا می‌کنند و domain controllers های شما از Windows Server 2003 استفاده می‌کنند هنوز یک سناریوی متداول است. شما می‌توانید از Windows PowerShell 2.0 برای هردوی این سیستم عامل‌ها استفاده کنید. اما ممکن است قادر به استفاده از جدیدترین ماژول‌های Windows PowerShell cmdlet نباشید. مانند ماژول Active Directory همراه با Windows Server 2008 R2. این ماژول‌های بر روی ورژن‌های قدیمی ویندوز اجرا نمی‌شوند. مشکل خاصی وجود ندارد. فقط ویندوز ۷ یا Windows Server 2008 R2 را بر روی یک کامپیوتر در محیط خودنصب کنید (ماژول اکتیو دایرکتوری در هرکدام از سیستم عامل‌ها اجرا خواهد شد).

به عنوان مثال شما می‌توانید یک Windows Server 2008 R2 domain controller را نصب کنید چرا که هردو ماژول Active Directory و خدمات Active Directory management gateway که با آن ارتباط برقرار می‌کنند را فراهم می‌کند. می‌توانید gateway service را دانلود کنید و آن را روی Windows Server 2008 و Windows Server 2003 نصب کنید.

با استفاده از Enable-PSRemoting در Windows PowerShell دسترسی از راه دور و WinRM را روی یک domain controller جدید تعریف کنید، سپس Windows PowerShell 2.0 را روی ویندوز XP یکی از کلاینت‌های خود فعال کنید و خودتان را برای انجام کارهای جادویی آماده کنید.

ساخت یک ماژول:

یا ایجاد یک جلسه Remote به domain controller جدید شروع کنید.

$session = New-PSSession -computerName my-new-dc

نام صحیح کامپیوتر را در محل my-new-dc وارد کنید. شما می‌توانید پارامترهای اضافی مانند alternate credentials یا پورت‌های alternate WinRM را مشخص کنید. برای جزئیات بیشتر help new-pssession را اجرا کنید.

در ادامه با استفاده از Remote به عنوان مثال به Windows PowerShell بگویید کهActive Directory cmdlets بارگذاری کند.

Invoke-command { import-module activedirectory } -session $session

قسمت جالب این است که شما بر روی همین سیستمی که از Windows PowerShell آن استفاده می‌کنید می‌توانید دستورات ماژول Active Directory را با استفاده از دستور زیر از سرور Remote بر روی کامپیوتر خود فراخوانی کنید.

Export-PSSession -session $session -commandname *-AD* -outputmodule RemAD -allowclobber

این دستور یک ماژول جدید از Windows PowerShell را در فولدر Documents زیر WindowsPowerShell\Modules\RemAD ایجاد می‌کند. فقط دستوراتی که نام آن‌ها با الگوی “*-AD*” مطابقت داشته باشد را شامل می‌شود. این یکی از بزرگترین دلایل دستورات افزودنی در استفاده از نوعی پیشوند مانند “AD” بعنوان بخشی از نام cmdlet است. انجام این کار باعث می‌شود گرفتن آن دسته از cmdlet ها آسانتر شود.

Cmdlet ها در واقع در کامپیوترهای محلی کپی نمی‌شوند. در عوض ماژول خدمات به صورت محلی یک shortcut ایجاد می‌کند. این cmdlet ها همیشه در remote domain controller اجرا خواهند شد اما به نظر می‌رسد که cmdlet ها به صورت محلی در حال اجرا است.

استفاده از cmdlet ها:

با حذف جلسه از remote domain controller شروع کنید:

Remove-PSSession -session $session

اکنون یک ماژول جدید را بارگذاری کنید:

Import-Module RemAD -prefix Rem

این دستور یک ماژول جدید به حافظه بارگذاری می‌کند و پیشوند “Rem” به نام هر cmdlet در آن ماژول اضافه خواهد شد. پیشوند یک راه خوب است تا برای شما یادآوری کنیم که این cmdlet ها به صورت Remote انجام می‌شوند. شما می‌توانید هر پیشوندی را که دوست دارید می‌توانید انتخاب کنید.

سعی کنید از یک remote cmdlet درخواست کمک کنید.

Help New-RemADUser

شما یک خطا را مشاهده می کنید زیرا یک remoting session بین کامپیوتر شما و domain controller که cmdlet ها در آن وجود دارند ایجاد نشده است. نیازی نیست که شما به طور واضح آن جلسه را شروع کنید. شما به طور ضمنی می‌توانید این کار را با اجرای یکی از remoted cmdlets انجام دهید:

Get-RemADUser -filter "Name -like 'D*'"

این دستور ارتباط remote را به domain controller و ارائه دستور برای اجرا و اجرای فرمان در domain controller را مجددا نمونه‌سازی خواهد کرد. سپس هر کاربری که نامش با ‘D’ شروع می‌شود را در XML مرتب می‌کند و به تمام شبکه کامپیوتر شما انتقال می‌دهد. شما می‌توانید آن‌ها از مرتبا به اشیاهایی که در خط لوله Windows PowerShell کار می‌کنند مرتب‌سازی نمائید. اکنون شما می‌توانید درخواست کمک کنید زیرا جلسه remote فعال است.

Help New-RemADUser

این جلسه فعال باقی می‌ماند تا زمانی که شما پوسته نمونه را ببندید یا ماژول را حذف نمائید.

Remove-Module RemAD

رسیدگی و اداره کردن چیزی:

Implicit remoting استفاده از cmdlet هایی که فقط بر روی کامپیوترهای راه دور موجود هستند را آسانتر می‌کند. implicitly remoted cmdlets رفتاری بسیار مشابه با زمانی که بر روی یک کامپیوتر محلی نصب شده باشند را دارند. این باعث می‌شود که هر زمان که به آن‌ها نیاز دارید در دسترس باشند. یک جلسه Remote نیاز به سربار کمی به روی کامپیوتر شما یا یک کامپیوتر راه دور دارد به‌طوری‌که این یک راه فوق‌العاده عملی برای توزیع محاسبات است.