Hãy tưởng tưởng, công ty bạn mới thành lập, bạn là một IT Manager, nhiệm vụ của bạn là phải tạo 1000 user Windows cho 1000 nhân viên. Nếu là người dùng thông thường bạn sẽ vào Control Panel, Click vào User và tạo tài khoản???? Không! Nếu là IT Manager, họ sẽ viết script trên Powershell để tự động hóa việc tạo User.
Trên Windows, PowerShell là công cụ dòng lệnh được Microsoft thiết kế để chạy các lệnh và tập lệnh nhằm thay đổi cài đặt hệ thống và tự động hóa các tác vụ. Nó tương tự Command Prompt, do ban đầu Microsoft tạo ra PowerShell để thay thế Command Prompt. Tuy nhiên, PowerShell có nhiều khả năng hơn giao diện dòng lệnh (CLI) như cung cấp một bộ công cụ mở rộng, và có khả năng kiểm soát linh hoạt hơn. Ngoài ra, không giống như Command Prompt, PowerShell có sẵn trên Windows, macOS và Linux.
Bạn đang xem: Hướng dẫn lập trình PowerShell trên Windows
Script (tập lệnh) chỉ là một tập hợp các dòng lệnh được lưu vào một tệp văn bản (sử dụng đuôi tệp là “.ps1”) mà PowerShell có thể hiểu và thực thi được để thực hiện các hành động khác nhau.
Hơi vướng chút là giao thức bảo mật mặc định luôn chặn mọi tập lệnh chạy trên thiết bị. Điều này có nghĩa là khi nhấp đúp vào tệp “.ps1” trên Windows 10 sẽ không có gì xảy ra và nếu bạn cố gắng chạy script trong PowerShell, bạn sẽ thấy lỗi “cannot be loaded because running scripts is disabled on this system”. Tuy nhiên, không phải là không thể chạy script trên máy tính của bạn. Bạn chỉ cần kích hoạt một số chính xác thực thi thôi,
Vậy nên, trong bài viết này, mình sẽ hướng dẫn bạn các bước để viết và chạy thành công script đầu tiên của bạn trên PowerShell bằng Visual Studio Code, Notepad và bảng điều khiển PowerShell Integrated Scripting Environment (ISE).
Cách tạo script PowerShell trên Windows 10
Trên Windows 10, bạn có thể tạo tệp script PowerShell bằng hầu như bất kỳ trình soạn thảo văn bản nào hoặc bảng điều khiển ISE. Tuy nhiên, mình khuyên bạn nên dùng Visual Studio Code (sở thích của mình thôi :v) để viết script và sử dụng extension PowerShell.
Tạo script bằng Visual Studio Code
Visual Studio Code – còn được gọi là VS Code – là một trình soạn thảo code đa nền tảng miễn phí và có thể sử dụng các tiện ích mở rộng nhằm cung cấp một môi trường để viết hầu như tất cả các ngôn ngữ lập trình. Và khi thêm tiện ích mở rộng PowerShell, bạn sẽ có được trải nghiệm viết script hoàn toàn khác biệt, ngay cả khi có sự hỗ trợ của IntelliSense(tự hoàn thành code).
Trải nghiệm mới không có nghĩa là nó sẽ trở thành mặc định, nhưng PowerShell ISE cũng sẽ không biến mất. Tuy nhiên, ISE sẽ không có thêm các tính năng mới và không hỗ trợ các phiên bản PowerShell 7 trở lên.
Cài đặt Visual Studio Code
Để cài đặt Visual Studio Code trên Windows 10, bạn cần làm theo các bước sau:
1. Truy cập trang Download của Visual Studio.
2. Nhấn vào nút Windows để tải trình cài đặt.
3. Đúp chuột vào file vừa tải về để bắt đầu cài đặt VS Code.
4. Đồng ý điều kiện thoả thuận.
5. Nhấn Next.
6. Tiếp tục nhấn Next.
7. Nhấn Next thêm lần nữa.
8. Chọn thêm một số tuỳ chọn bổ sung cần thiết (tuỳ bạn chọn nha).
9. Next tiếp.
10. Nhấn nút Install.
11. Cuối cùng nhấn Finish.
Sau khi hoàn thành các bước trên, bạn cần tiếp tục tiến hành cài đặt extension PowerShell.
Cài đặt extension PowerShell
Để cài đặt extension PowerShell trên VS Code, bạn cần thực hiện các bước sau:
1. Mở VS Code.
2. Nhấn vào tab Extension trên bảng điều khiển bên trái.
3. Tìm kiếm PowerShell và chọn kết quả đầu tiên.
4. Nhấn nút Install.
Vậy là bạn có thể bắt đầu viết Script rồi đó.
Tạo script PowerShell trên Visual Studio Code
1. Mở VS Code.
2. Nhấn File trên menu và chọn New File.
3. Chọn File và nhấn Save as.
4. Trong mục “File name” bạn phải đặt tên file với đuôi mở rộng là .ps1, ví dụ: first_script.ps1.
5. Nhấn nút Save.
6. Dán câu lệnh sau vào script của bạn và chạy: Write-Host “Congratulations! Your first script executed successfully”
Lệnh trên sẽ xuất ra cụm từ “Congratulations! Your first script executed successfully” trên màn hình.
7. Nhấn nút Run trên cùng bên phải hoặc nhấn F5 để chạy script.
8. Nhấn File trên menu.
9. Nhấn Save.
Tạo Script PowerShell trên Notepad
1. Nhấn Start Menu.
2. Tìm kiếm Notepad và chọn kết quả đầu tiên.
3. Dán dòng lệnh dưới vào Notepad:
Write-Host “Congratulations! Your first script executed successfully”
4. Nhấn File.
5. Chọn Save as.
6. Ghi tên file kèm theo đuôi .ps1, ví dụ: first_script.ps1.
7. Cuối cùng nhấn Save.
Tạo Script bằng Integrated Scripting Environment
Ngoài ra, bạn có thể sử dụng bảng điều khiển PowerShell ISE tích hợp để viết script trên Windows 10.
The Integrated Scripting Environment là một công cụ phát triển PowerShell nâng cao, nhưng bạn có thể bắt đầu bằng những bước sau:
1. Nhấn Start Menu.
2. Search Windows PowerShell ISE, chuột phải vào kết quả đầu tiên và chọn Run as administrator.
3. Nhấn File.
4. Chọn New để tạo file .ps1.
Xem thêm : Knowledge Base
5. Dán code bên dưới vào:
Write-Host “Congratulations! Your first script executed successfully”
6. Nhấn File.
7. Chọn Save.
8. Nhập tên script, ví dụ: first_script.ps1.
9. Chọn nơi lưu script.
10. Cuối cùng nhấn Save.
Sau khi bạn hoàn thành các bước trên bằng Notepad, Visual Studio Code hoặc PowerShell ISE, script đã sẵn sàng để chạy, nhưng nó sẽ bị lỗi theo mặc định. Điều này là do PowerShell mặc định được cài đặt để luôn chặn việc thực thi bất kỳ script nào. (Ngoại lệ duy nhất là nếu bạn chạy script trong Visual Studio Code hoặc PowerShell ISE.)
Cách chạy script PowerShell trên Windows 10
Nếu bạn muốn chạy script bằng PowerShell, bạn phải thay đổi các chính sách thực thi trên Windows 10.
Để thay đổi chính sách thực thi và chạy các script PowerShell, bạn cần thực hiện các bước sau:
1. Nhấn Start Menu.
2. Tìm kiếm PowerShell, chuột phải vào kết quả đầu tiên và chọn Run as administrator.
3. Dán lệnh dưới vào PowerShell và nhấn Enter:
Set-ExecutionPolicy RemoteSigned
4. Nhập A và nhấn Enter (nếu PowerShell yêu cầu).
5. Nhập lệnh sau để chạy script và nhấn Enter:
& “C:PATHTOSCRIPTfirst_script.ps1”
Trong lệnh trên, hãy đảm bảo thay đổi “PATHTOSCRIPT” thành vị trí của script trên máy bạn.
Ví dụ: lệnh này chạy mscript được lưu trữ trong thư mục Download:
& “C:UsersusernameDownloadsfirst_script.ps1”
Sau khi bạn hoàn thành các bước trên, bạn có thể chạy script rồi đó.
Trên Windows 10, PowerShell bao gồm bốn chính sách thực thi:
- Restricted — Dừng chạy bất kỳ tập lệnh nào.
- RemoteSigned — Cho phép các tập lệnh được tạo trên thiết bị, nhưng các tập lệnh được tạo trên máy tính khác sẽ không chạy trừ khi chúng có chữ ký của các nhà phát triển đáng tin cậy.
- AllSigned — Tất cả các tập lệnh sẽ được chạy, nhưng chỉ với các tập lệnh có chữ kí đáng tin cậy từ nhà phát triển của chúng.
- Unrestricted — Chạy bất kỳ tập lệnh nào mà không có bất cứ hạn chế nào.
Trong bài viết trên, mình đã sử dụng lệnh để cho phép các tập lệnh cục bộ chạy trên Windows 10. Tuy nhiên, nếu bạn không định chạy tập lệnh này thường xuyên, bạn có thể khôi phục cài đặt mặc định để chặn các tập lệnh không đáng tin cậy bằng cách sử dụng lệnh Set-ExecutionPolicy Restricted.
Tải Giáo trình và bài tập PowerShell
AnonyViet đã tổng hợp 2 cuốn Ebook đầy đủ nhất về PowerShell để bạn tự học. Nội dung ebook rất dễ hiểu, với hơn 100 bài tập để bạn tự thực hành. Nếu đang làm quản trị mạng hoặc bạn tìm hiểu sâu hơn các lập trình PowerShell, thì nên đọc qua bộ ebook này
Download Ebook và bài tập PowerShell
Nội dung gồm:
- PowerShell Notes for Professionals book
- Windows Powershell 3.0 Step by Step
- 100 bài tập và bài giả Powershell
Danh sách các lệnh PowerShell thường dùng
Lệnh Viết tắt Công dụng Get-ChildItem dir, gci, ls Invoke-Command icm Import-Module ipmo Export-Csv epcsv Write-Host Get-WmiObject gwmi Get-Content cat, gc, type Get-Date Invoke-WebRequest curl, iwr, wget Start-Process saps, start Copy-Item copy, cp, cpi Set-ExecutionPolicy Out-File Where-Object ?, where Import-Csv ipcsv Send-MailMessage New-Object Select-String sls Remove-Item del, erase, rd, ri, rm, rmdir Select-Object select Test-Path Invoke-RestMethod irm Install-Package ForEach-Object %, foreach Write-Output echo, write Get-Process gps, ps Get-Service gsv Format-Table ft Test-Connection New-Item ni Get-EventLog Get-WinEvent Install-Module Enter-PSSession etsn Get-Credential Read-Host Get-AppxPackage Get-Acl Get-Help Start-Job sajb Add-PSSnapin New-PSSession nsn Invoke-Expression iex Add-Content ac New-PSDrive mount, ndr Move-Item mi, move, mv Get-Item gi Compare-Object compare, diff Sort-Object sort Test-NetConnection Set-Acl Set-Content sc Start-Transcript Get-HotFix Get-ItemProperty gp Add-Member Remove-AppxPackage Rename-Item ren, rni Add-Type Get-Member gm ConvertTo-SecureString New-SelfSignedCertificate Start-Sleep sleep Restart-Computer Out-GridView ogv Format-List fl Set-ItemProperty sp Measure-Object measure Split-Path Get-Counter Get-CimInstance Add-Computer Add-AppxPackage ConvertTo-Html Import-StartLayout Set-Location cd, chdir, sl Get-NetAdapter Export-StartLayout Enable-PSRemoting Get-Command gcm Get-ExecutionPolicy Join-Path Import-PSSession ipsn Get-FileHash Write-Error Stop-Service spsv Stop-Process kill, spps Start-Service sasv Unblock-File Get-Disk Get-Module gmo ConvertTo-Json New-WebServiceProxy Reset-ComputerMachinePassword Get-ScheduledTask Write-EventLog Set-Service Out-String Get-Printer Out-Null Resolve-DnsName Get-WindowsUpdateLog Restart-Service Set-Variable set, sv Compress-Archive ConvertFrom-Json New-SmbShare Set-Item si Update-Help Group-Object group Start-BitsTransfer Get-Certificate Register-ScheduledTask Tee-Object tee Test-ComputerSecureChannel Measure-Command ConvertFrom-SecureString Get-Job gjb Export-Clixml ConvertTo-Csv Remove-AppxProvisionedPackage New-ItemProperty Get-PhysicalDisk Set-TimeZone Get-Package Get-SmbShare Get-Variable gv Add-Printer Resolve-Path rvpa Select-Xml Get-Random Get-PSDrive gdr Expand-Archive Receive-Job rcjb New-NetFirewallRule New-NetIPAddress Get-NetIPAddress Register-ObjectEvent Get-SmbConnection New-TimeSpan Enable-WindowsOptionalFeature Set-NetConnectionProfile New-ScheduledTaskTrigger Rename-Computer Get-Event Test-WSMan Get-AppxProvisionedPackage Wait-Process Wait-Job wjb Write-Debug Import-Certificate New-EventLog Get-Host Invoke-WmiMethod Update-Script New-Service ConvertFrom-Csv Invoke-Item ii Enable-WSManCredSSP Get-Unique gu Find-Package Out-Host oh Format-Volume Format-Custom fc Get-SmbServerConfiguration Mount-DiskImage Clear-Host clear, cls Start-DscConfiguration Get-SmbOpenFile Add-VpnConnection Set-DnsClientServerAddress Export-ModuleMember Get-PSSession gsn Get-PSSnapin Get-NetConnectionProfile Get-NetFirewallRule Push-Location pushd Get-Volume New-NetLbfoTeam Get-NetTCPConnection Stop-Computer Set-StrictMode Set-NetFirewallRule Add-AppxProvisionedPackage Enable-BitLocker Get-Location gl, pwd Set-NetIPInterface New-VirtualDisk Remove-PSSession rsn Set-NetIPAddress Register-ScheduledJob Set-SmbServerConfiguration New-Partition Remove-PSDrive rdr Remove-Variable rv Get-WindowsOptionalFeature Import-Clixml Import-PfxCertificate Uninstall-Package Set-AuthenticodeSignature Set-NetAdapter Set-Alias sal Set-WmiInstance Disable-WindowsOptionalFeature Update-Module New-LocalUser Mount-WindowsImage Get-ItemPropertyValue gpv New-Alias nal New-JobTrigger Get-History ghy, h, history New-CimSession Get-LocalGroup ConvertTo-Xml New-PSSessionOption Add-WindowsCapability New-Variable nv Convert-Path cvpa Get-LocalGroupMember Add-WindowsPackage Invoke-CimMethod ConvertFrom-String CFS Export-Certificate Unregister-ScheduledTask ConvertFrom-StringData Install-PackageProvider Get-LocalUser Clear-Content clc Remove-Module rmo Get-VpnConnection Export-PfxCertificate Get-NetIPConfiguration Export-WindowsDriver Grant-SmbShareAccess Initialize-Disk Get-NetIPInterface Get-PfxCertificate Invoke-Pester Add-OdbcDsn Format-Wide fw Get-Partition Set-Disk Get-ScheduledJob Get-PnpDevice Get-Tpm Disable-NetAdapterBinding Get-PSRepository Out-Default Add-PrinterDriver Set-WinUserLanguageList Get-ScheduledTaskInfo Enable-NetFirewallRule Out-Printer lp Add-PrinterPort Set-WinSystemLocale Find-Module Get-NetAdapterVmq Stop-Transcript Get-SmbSession Set-PSSessionConfiguration Add-MpPreference Set-SmbShare Set-VpnConnection Start-ScheduledTask Suspend-BitLocker Get-SmbShareAccess Set-PSDebug Get-StartApps Add-VpnConnectionRoute Get-VirtualDisk Write-Information New-ScheduledTask Set-Culture New-ScheduledTaskSettingsSet New-ScheduledTaskAction Set-Partition Clear-Variable clv Add-KdsRootKey Exit-PSSession exsn Add-LocalGroupMember Set-LocalUser Remove-Computer New-NetNat Set-SmbClientConfiguration Set-ScheduledTask Remove-ItemProperty rp Set-Printer Set-PhysicalDisk Set-Date Repair-WindowsImage Set-NetAdapterVmq Remove-WmiObject New-NetRoute Optimize-Volume New-Volume New-StoragePool New-SmbMapping Set-DscLocalConfigurationManager New-ScheduledTaskPrincipal Get-Culture Set-PSRepository Set-NetFirewallProfile Get-Alias gal Get-DnsClientServerAddress Set-MpPreference Save-Module Resize-Partition Repair-Volume Remove-Printer Remove-PhysicalDisk Remove-NetIPAddress Register-PSRepository Get-WindowsCapability Get-BitLockerVolume Get-Clipboard Get-ComputerInfo Get-InitiatorPort Get-BitsTransfer Get-AuthenticodeSignature Get-AppvClientPackage Set-WSManQuickConfig New-Guid Get-StorageJob Uninstall-Module Get-InstalledModule Confirm-SecureBootUEFI Set-Clipboard Get-TlsCipherSuite Clear-Disk
Nguồn: https://sigma.edu.vn
Danh mục: Công Nghệ