سوف يبحث هذا المقال لماذا نحب جميعًا Powershell مع بعض الأمثلة العملية. كل هذا سيكون مفيدًا عند إجراء عملية جرد ، وإيجاد جهاز كمبيوتر معين ومسائل أخرى. تم تزويد Powershell بنظام cmdlets مناسب وجذاب ؛ الإكمال التلقائي لكل شيء والأسماء البديهية تجعل من المحتمل أن تكون أسهل لغة للتعلم.
في هذا الدليل ، سننظر إلى بعض الفرق الرائعة في رأي المؤلف ونوضح سبب ذلك. لنبدأ مع القصاصات.
قصاصات مفيدة:
نأتي الكمبيوتر إلى TrustedHostsمفيدة عند الاتصال بالخادم عبر WinRm. سيقوم الأمر بالكتابة فوق القيمة السابقة ، وتوخي الحذر ، وإضافة ip أو أسماء المضيف مفصولة بفواصل. إذا كان جميع مضيفيك في م ، فلن تحتاج إلى لمس هذا الملف.
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.0.1'
تعمل Wildcard أيضًا إذا كنت لا ترغب في إضافة مضيف جديد إلى TrustedHosts في كل مرة.
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*'
نقوم بتخزين كلمة المرور في شكل مشفر في ملف:إنه مفيد للأتمتة ، فهو يسهل إلى حد كبير الحياة عند تشغيل البرامج النصية من المجدول ، ولكن يتم تخزين كلمة المرور في شكل آمن.
إذا قمت بتشغيل البرامج النصية من مستخدم مسجل الدخول ، فسيتم استخدام أرصدة المستخدم.
Read-Host -AsSecureString | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Password.txt
نأخذ كلمة المرور المشفرة من الملف:
$Password = Get-Content C:\Password.txt | ConvertTo-SecureString
يمكن القيام بنفس الشيء باستخدام بيانات الاعتماد ، واستبدل "مضيف للقراءة" بـ "الحصول على بيانات اعتماد".
Get-Credential | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Credential.txt
نحصل على تاريخ التمهيد الأخير لنظام التشغيل. (gcim win32_operatingsystem).LastBootUpTime
بنفس الطريقة ، نحصل على الجهوزية أيضًا.
Get-CimInstance Win32_operatingsystem -ComputerName $computers | Select-Object LastBootUpTime, @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}}
نحصل على قائمة البرامج المثبتة:إنها برامج وليست مكونات:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
نحصل على قائمة محركات الأقراص ، بما في ذلك محركات أقراص الشبكة ومساحة خالية عليها Get-PSDrive -PSProvider filesystem | where-object {$_.used -gt 0} | Select-Object -property Root,@{name="Size";expression={($_.used+$_.free)/1GB -as [int]}}, @{name="Used";expression={($_.used/1GB) -as [int]}}, @{name="Free";expression={($_.free/1GB) -as [int]}}
نوقف العملية باسمها.في هذا المثال ، نوقف Chrome. Wildcard مناسب أيضًا إذا كنت تريد إكمال كل شيء.
Get-Process -Name "chrome" | Stop-Process
نسخ إعدادات الوصول إلى المجلد إلى المجلدات الفرعيةيكون مفيدًا إذا كنت ترغب في تحديد أو منح الحق في استخدام المجلد وكافة المجلدات الفرعية لمجموعة المستخدم أو المستخدم. الأمر متكرر ، من الأسفل إلى الأعلى ، أذونات القراءة والكتابة.
نسخ ACL من المجلد:
$Acl = Get-Acl -Path C:\folder\
أدخل قائمة التحكم في الوصول (ACL) في جميع الملفات والمجلدات الفرعية:
Get-ChildItem -Path C:\Folder\ -Recurse | Set-Acl $Acl
مخطوطات مفيدة:
هذا هو المكان الذي يبدأ أسوأ متعة. إذا كنت بحاجة إلى إجراء جرد ، فسيكون من المفيد للغاية إلقاء نظرة. إذا لم تكن أجهزة الكمبيوتر الخاصة بك موجودة في م ، فسيصبح البرنامج النصي أكثر تعقيدًا بقليل ، وسيتعين تكراره على ملف تم تجميعه مسبقًا ، وستحتاج كلمات المرور إلى أخذها من الملف أو من خلال الحصول على بيانات الاعتماد. كل الفرق:
ج م:
$ADComputers = (Get-ADComputer -filter *).DNSHostName
بدون ميلادي:
$Credentials = Get-Credential $Computers = Get-Content -Path C:\servers.txt
نحصل على وقت التشغيل من تاريخ التمهيد الأخير لكل من أجهزة الكمبيوتر في م: $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command $i { Get-CimInstance Win32_operatingsystem | Select-Object LastBootUpTime, @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}} } }
نحصل على جميع البرامج المثبتة على جميع أجهزة الكمبيوتر AD: $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command -computername $i { gcim win32_product -computername $env:computername | Sort-Object -property Vendor,Name | Select-Object -property Vendor,Name, Caption } }
يمكن الحصول على الشيء نفسه للمكونات ، باستبدال Invoke-Command:
Get-WindowsFeature | Where-Object -Property "Installed" -EQ "Installed"
نحصل على أجهزة الكمبيوتر التي تعمل فيها العملية التي نحتاج إليها:إذا نسيت أي جهاز كمبيوتر يعمل عليه هذا البرنامج أو ذاك ، فيمكنك الحصول عليه بهذه الطريقة. النظر في مثال المتصفح:
$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command -computername $i { Get-Process -Name "Chrome" -ErrorAction SilentlyContinue } }
يمكن أن يكون قتل المتصفح سهلاً مثل الحصول على العملية:
$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command -computername $i { Get-Process -Name "Chrome" | Stop-Process -ErrorAction SilentlyContinue } }
نحصل على أجهزة الكمبيوتر حيث تم تثبيت برنامج معين:سرا في هذه الحالة جافا. سوف يساعدك أثناء عملية الجرد ، ويمكنك رؤية أسماء أجهزة الكمبيوتر التي تم تثبيتها فيه.
$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command -computername $i { gcim win32_product -computername $env:computername | Select-String -Pattern "Java" -AllMatches | Sort-Object -property Vendor,Name | Format-Table -ErrorAction SilentlyContinue } }
إذا كانت لديك أي اقتراحات ، فسيسعدنا إضافتها إلى هذه المقالة. نأمل أن تكون هذه الأمثلة مفيدة لك.
نحن نقدم تعريفة محدثة UltraLite
Windows VDS مقابل 99 روبل مع تثبيت Windows Server 2019 Core.
