بیشتر مدیر IT از PowerShell برای برنامه نویسی و اتوماسیون استفاده می کند ، اما این فقط برای متخصصان آن نیست – هر کس که با پوشه های کثیف برخورد می کند به این دستورات نیاز دارد. من از آنها برای ردیابی کد قدیمی ، سازماندهی پرونده های مشتری و رفع هرج و مرج که پس از ماهها کار مهلت محور ایجاد می شود ، استفاده می کنم.
بیشتر مدیر IT از PowerShell برای برنامه نویسی و اتوماسیون استفاده می کند ، اما این فقط برای متخصصان آن نیست – هر کس که با پوشه های کثیف برخورد می کند به این دستورات نیاز دارد. من از آنها برای ردیابی کد قدیمی ، سازماندهی پرونده های مشتری و رفع هرج و مرج که پس از ماهها کار مهلت محور ایجاد می شود ، استفاده می کنم.
PowerShell یک پوسته خط فرمان و زبان اسکریپت است. در حالی که نسخه های قبلی ویندوز یک برنامه اختصاصی PowerShell را ارائه می داد ، ترمینال ویندوز اکنون کنسول ترجیحی برای اجرای محیط های پوسته (از جمله PowerShell ، Command Prompt و سایر موارد) است.
همه این دستورات در هر دو برنامه مستقل PowerShell و در ترمینال ویندوز کار می کنند – برای استفاده از آنها ، یک برگه PowerShell را در ترمینال ویندوز باز کنید.
12
هلپ گرفتن
من PowerShell را از طریق فیلم های YouTube آموختم و یکی از اولین دستوراتی که همه ذکر کردند ، گله دریافت شد. همانطور که از نام آن پیداست ، Get-Help به شما کمک می کند تا اطلاعات مربوط به CMDlets PowerShell را به همراه نحو و پارامترهای آنها پیدا کنید. حتی نمونه هایی از استفاده را نیز ارائه می دهد.
برای دیدن نحوه عملکرد یک فرمان ، Get-Help را دنبال کنید و به دنبال آن نام فرمان:
Get-Help Get-Process
این خلاصه داستان ، نحو و پارامترها را به شما نشان می دهد. اگر به جزئیات بیشتری نیاز دارید ، پارامتر -examples را اضافه کنید:
Get-Help Get-Process -Examples
این نمونه هایی از نحوه استفاده از cmdlet را به شما نشان می دهد. همچنین می توانید از آن برای یافتن اطلاعات بیشتر در مورد هر دستور از مستندات رسمی PowerShell مایکروسافت به صورت آنلاین استفاده کنید:
Get-Help Get-Process -Online
هنگامی که دستور فوق را اجرا می کنید ، PowerShell شما را به مستندات رسمی مایکروسافت برای این فرمان هدایت می کند.
11
از دست دادن
در حالی که Get-Help اطلاعات مفصلی در مورد CMDlet به شما می دهد ، Get-Command به شما کمک می کند تا تمام دستورات موجود را پیدا کرده و لیست کنید. به عنوان مثال ، اگر می دانید چه کاری می خواهید انجام دهید اما نمی توانید نام فرمان دقیق را به خاطر بسپارید ، Commmand به شما در یافتن دستورات بر اساس نام یا الگوهای جزئی کمک می کند.
به عنوان مثال ، بیایید سعی کنیم تمام دستوراتی را که حاوی فرایند کلمه هستند پیدا کنیم. نوع:
Get-Command *process*
این هر دستور را با یک فرآیند به نام خود نشان می دهد. می توانید جستجوی خود را به انواع فرمان خاص محدود کنید. به عنوان مثال ، اگر فقط می خواهید cmdlets (نه توابع یا نام مستعار) که با شروع شروع می شوند:
Get-Command -Name Get* -CommandType Cmdlet
وقتی به دنبال دستورات مربوط به یک ماژول خاص هستید ، مانند شبکه:
Get-Command -Module NetTCPIP
Get-Command راهی بسیار کارآمدتر برای یافتن دستوراتی است که می خواهید از آنها استفاده کنید ، به جای راه اندازی مرورگر و جستجوی اینترنت.
10
تست و شبکه
اگر از ابزارهای جداگانه ای برای پینگ ، telnet و traceroute استفاده می کنید ، cmdlet test-netconnection هر سه را انجام می دهد. این یک ابزار عیب یابی شبکه است که بررسی می کند که آیا مسئله ای با شبکه ، سرور یا جایی دیگر است.
برای بررسی اینکه آیا یک وب سایت قابل دسترسی است ، اجرا کنید:
Test-NetConnection makeuseof.com
این به شما نتایج پینگ و اطلاعات اساسی اتصال می دهد. برای آزمایش یک درگاه خاص ، شماره پورت را به دستور اضافه کنید:
Test-NetConnection server.company.com -Port 443
برای به دست آوردن اطلاعات دقیق مسیر شبکه ، می توانید در پایان از پارامتر -traceroute استفاده کنید. نوع:
Test-NetConnection 8.8.8.8 -TraceRoute
دستور فوق بسته های تست را به 8.8.8.8 ارسال می کند و هر هاپ را بین رایانه و مقصد شما ردیابی می کند و به شما کمک می کند تا تشخیص دهید که مشکل بین رایانه و هدف شما کجاست.
9
کودک
Get-ChildItem پرونده ها و پوشه ها را در هر فهرست نشان می دهد. آیا می خواهید ببینید چه چیزی در اسناد وجود دارد؟ فقط این را تایپ کنید ، “نام کاربری” را با خود جایگزین کنید:
Get-ChildItem C:\Users\Username\Documents
برای یافتن پرونده های PDF اصلاح شده در هفته گذشته:
get -childitem c: \ user \ yourname \ document -filter *.pdf | Where-Object {$ _. LastWritEtime -gt (دریافت تاریخ) .DDDAYS (-7)
پارامتر -بازخوانی در تمام زیر پوشه ها جستجو می کند. به عنوان مثال ، برای یافتن هر پرونده ورود به سیستم در پوشه پروژه های خود و تمام زیر پوشه های آن:
Get-ChildItem C:\Projects -Recurse -Filter *.log
هنگامی که در فضای کم دیسک کار می کنید ، می توانید از این کار برای یافتن پرونده های بزرگ بالاتر از 1 گیگابایت استفاده کنید:
Get -Childitem C: \ -recurs -file | Where -Object {$ _. طول -gt 1gb} | انتخاب کامل و نامحدود ، @{name = “sizegb” ؛ بیان = {$ _. طول/1gb}}
شما می توانید Get-ChildItem را با سایر دستورات برای اسکریپت و خودکار کردن وظایف برای پردازش دسته ای ، اتوماسیون و حسابرسی پرونده هایی که مطابق با معیارهای خاص هستند ، ترکیب کنید.
8
جایی که
در مثال آخر ، شما ممکن است متوجه شده باشید که ما از cmdlet where-where برای یافتن پرونده های بزرگ استفاده کرده ایم و کنجکاو بودیم که این برای چیست. جایی که با انتخاب اشیاء با مقادیر خاص خاص ، داده ها را فیلتر می کند-به یک بیانیه IF در برنامه نویسی. در داخل بریس های فرفری ، $ _ نشان دهنده هر مورد در برابر شرایط فیلتر شما است.
به عنوان مثال ، اگر شما نیاز به مشاهده تمام خدمات در حال اجرا دارید ، این دستور را تایپ کنید:
Get-Service | Where-Object {$_.Status -eq "Running"}
اگر نیاز به یافتن فرآیندهای با استفاده از بیش از 100 مگابایت حافظه دارید ، این دستور را امتحان کنید:
Get-Process | Where-Object {$_.WorkingSet -gt 100MB}
همچنین می توانید چندین شرایط را با هم ترکیب کنید. به عنوان مثال ، برای یافتن اسناد بزرگ کلمه اصلاح شده در این ماه:
get -childitem -filter *.docx | Where -Object {$ _. طول -gt 5mb -and $ _. lastwritetime -gt (دریافت تاریخ) .AddMonths (-1)}
بریس های فرفری شامل منطق فیلتر شما هستند. $ _ نشان دهنده هر مورد ارزیابی شده است. می توانید یک فیلتر طولانی را در چندین خط پخش کنید ، به خصوص اگر شرایط مختلفی داشته باشید. این باعث می شود اسکریپت شما قابل خواندن تر باشد ، مانند:
Get-ChildItem | Where-Object {
$_.Length -gt 1MB -and
$_.Extension -eq ".log"
}
7
انتخاب کردن
غالباً ، خروجی فرمان شامل اطلاعات بیشتری نسبت به آنچه شما نیاز دارید. Select-Object به شما امکان می دهد فقط داده های مورد نظر خود را انتخاب کنید. سپس می توانید خصوصیات انتخاب شده را به یک پرونده CSV با CMDlet Export-CSV صادر کنید. برای دیدن فقط نام و وضعیت خدمات ، از آنها استفاده کنید:
Get-Service | Select-Object Name, Status
اگر به دنبال پنج فرآیند با استفاده از بیشترین CPU هستید ، در اینجا می روید:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU
می توانید خصوصیات محاسبه شده ایجاد کنید. به عنوان مثال ، برای نشان دادن اندازه پرونده در مگابایت به جای بایت:
Get-ChildItem | Select-Object Name, @{Name="SizeMB";Expression={$_.Length/1MB}}
اگر می خواهید یک مقدار خاصیت واحد را استخراج کنید ، از پارامتر -exandproperty استفاده کنید:
Get-Process notepad | Select-Object -ExpandProperty Id
این فقط شماره شناسه فرآیند را به جای یک شی به شما می دهد. هنگام لوله کشی به دستوراتی که انتظار یک مقدار ساده دارند ، نه یک شیء پیچیده ، مفید است.
6
عضو
PowerShell با اشیاء کار می کند و Get-Member خصوصیات و روشهای آنها را به شما نشان می دهد. به عنوان مثال ، اگر یک دستور به شما پرونده ای بدهد ، دریافت عضو می تواند اندازه ، تاریخ ایجاد و سایر جزئیات آن را نشان دهد. دستور زیر را تایپ کنید تا ببینید یک شیء فرآیند شامل چه اطلاعاتی است:
Get-Process | Get-Member
این دستور خواصی مانند CPU ، ID و CorkingSet را نشان می دهد ، به علاوه روش هایی مانند Kill () و Refresh (). اگر فقط می خواهید ویژگی ها را ببینید ، این را اضافه کنید:
Get-Process | Get-Member -MemberType Property
هنگام کار با پرونده ها:
Get-ChildItem C:\temp\test.txt | Get-Member
دستور فوق خواصی مانند طول و Lastwritetime و همچنین روشهایی مانند حذف () و Moveto () را نشان می دهد. به عنوان مثال ، می توانید از طول برای فیلتر کردن پرونده ها بر اساس اندازه یا LastWritEtime برای یافتن پرونده های اخیراً تغییر یافته استفاده کنید.
5
تخته سنگی و چرخ دستی
هنگامی که یک خروجی عظیم از PowerShell دریافت می کنید که می خواهید کپی کنید ، می توانید به صورت دستی آن را انتخاب کنید یا از Set-Clipboard استفاده کنید. انتخاب دستی به معنای پیمایش به بالا ، شروع به انتخاب ، کشیدن با دقت و به امید اینکه در نیمه راه اشتباه نکنید. مجموعه ای از Clipboard و Get-Clipboard این کل فرآیند را بسیار ساده تر می کند.
برای کپی کردن نتایج فرمان در کلیپ بورد خود ، دستور زیر را تایپ کنید:
Get-Process | Select-Object Name, CPU | Set-Clipboard
اکنون می توانید نتایج را در اکسل یا هر ویرایشگر متن بچسبانید. اگر نیاز به دریافت متن از کلیپ بورد خود به PowerShell دارید ، ساده است:
$text = Get-Clipboard
این واقعاً هنگام پردازش لیست ها می درخشد. سپس لیستی از نام های رایانه را از اکسل کپی کنید ، سپس:
Get-Clipboard | ForEach-Object { Test-NetConnection $_ }
این اتصال به هر رایانه در لیست شما را آزمایش می کند. ادغام بین PowerShell و سایر برنامه ها ، کارهای تکراری را بسیار سریعتر می کند.
4
نمای خارج
بعضی اوقات شما نیاز به مرتب سازی و فیلتر کردن نتایج به صورت تعاملی دارید. Out-GridView یک پنجره جداگانه با یک جدول قابل جستجو و قابل جستجو باز می کند.
Get-Process | Out-GridView
این یک پنجره جدید را باز می کند که لیستی از فرآیندهای در حال اجرا را در قالب جدول GUI نشان می دهد. برای مرتب سازی بر روی هدر ستون ها کلیک کنید یا برای جستجو در کادر فیلتر تایپ کنید. اگر می خواهید مواردی را از شبکه انتخاب کنید ، استفاده کنید:
Get-Service | Out-GridView -PassThru | Restart-Service
پارامتر -Passhru به شما امکان می دهد ردیف ها را انتخاب کرده و آنها را به دستور بعدی منتقل کنید. خدمات مورد نظر خود را برای راه اندازی مجدد انتخاب کنید ، روی OK کلیک کنید و PowerShell فقط آن سرویس ها را مجدداً راه اندازی می کند.
برای تجزیه و تحلیل ورود به سیستم:
Get-EventLog -LogName Application -Newest 1000 | Out-GridView
می توانید با تایپ کلمات کلیدی ، مرتب سازی بر اساس زمان ، به سرعت رویدادها را فیلتر کنید و الگوهای موجود در داده ها را پیدا کنید.
3
فرآیند
فرآیند دریافت هر برنامه ای را که روی رایانه خود کار می کند ، از جمله استفاده از حافظه آنها ، زمان CPU و شناسه های فرآیند به شما نشان می دهد.
برای دیدن همه فرآیندهای در حال اجرا ، فقط نوع:
Get-Process
اگر به دنبال یک برنامه خاص هستید ، مانند Google Chrome:
Get-Process chrome
برای متوقف کردن یک برنامه بی پاسخ ، می توانید آن را با دستور STOP PROCESS ترکیب کنید:
Get-Process notepad | Stop-Process
اگر می خواهید آنچه را که حافظه خود را می خورید پیدا کنید ، سعی کنید:
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10
هنگامی که رایانه شما کند می شود ، این دستور به سرعت نشان می دهد که کدام برنامه ها از بیشترین حافظه استفاده می کنند.