PowerShell sudah dalam pembangunan selama sepuluh tahun. Microsoft terus berinvestasi dalam pembangunan dan adopsi. Investasi ini telah mengubah kemudahan dan ketahanan yang pengembang dan admin dapat mengotomatisasi tugas-tugas Windows. Show
Apa itu PowerShell?
PowerShell adalah Microsoft tugas otomatisasi kerangka, terdiri dari shell baris perintah, lingkungan scripting terpadu (ISE), bahasa scripting yang dibangun di .NET Framework, API memungkinkan Anda untuk host PowerShell dalam aplikasi .NET, dan didistribusikan Otomasi platform. PowerShell menyediakan akses penuh ke COM dan WMI, memungkinkan Anda untuk melakukan tugas-tugas pada sistem Windows lokal dan remote. PowerShell adalah platform generasi baru untuk otomatisasi, dalam hal ini memecahkan tantangan administrasi dan kemampuan beradaptasi dengan mulus mengintegrasikan .NET Framework. Ada baiknya untuk pengembang, administrator, penguji dan lebih. Berdasarkan .NET, alat yang dijalankan menurunkan biaya, sementara memberikan pengembang dan administrator cara sederhana dan perusahaan-siap untuk mengotomatisasi, mengukur dan meningkatkan semua proses mereka. Ikuti sepanjangDalam intro ini, saya akan menyoroti beberapa kedalaman dan luasnya PowerShell membawa ke meja. Hal-hal seperti permainan mengubah objek pipa, REPL (baca, loop eval, print), .NET integrasi dan banyak lagi. Jika Anda menjalankan Windows 7 atau 8, PowerShell telah terinstal. Download PowerShell v3 untuk Windows 7 di sini. Anda perlu Windows 7 SP1 dan download juga bekerja untuk Windows 2008 R2 SP1 dan Windows 2008 SP2. Jika Anda menjalankan Windows 2003, XP atau Vista, Anda akan perlu untuk menetap untuk PowerShell v2 di sini. Apa itu baik untuk? Benar-benar segala sesuatu!Dari penggelaran beberapa sumber daya untuk Azure, untuk menangani perangkat lunak Anda membangun untuk integrasi berkesinambungan, mengakses layanan web atau Endpoint sisanya. PowerShell telah Anda tertutup dan menyediakan lebih banyak lagi.
Bootstrap PowerShellApa yang dimaksud dengan cmdlet? Cmdlet adalah blok bangunan dasar di PowerShell dan dinyatakan sebagai sepasang kata-kata, yang membantu untuk membuat mereka diri deskriptif. Sebagai contoh: PowerShell termasuk ratusan inti cmdlet dan Anda dapat menulis Anda sendiri. Menghafal cmdlet duaPowerShell membuat discoverability mudah. Setiap kali Anda berjalan ke layar biru PowerShell dan tidak yakin apa yang harus dilakukan, menggunakan perintah Get.
Pada dasarnya, perintah Get-menunjukkan Anda semua hal yang dapat Anda lakukan dalam sesi PowerShell saat ini. Dapatkan-perintahDapatkan-perintah mendukung wildcard. Mari kita katakan saya ingin melihat semua cmdlets yang memiliki kata kerja, tanyakan? Get-Command Invoke*Berikut adalah apa yang saya dapatkan setelah menekan masuk. CommandType Name ModuleName ----------- ---- ---------- Function Invoke-AsWorkflow PSWorkflowUtility Function Invoke-Background ShowUI Function Invoke-BrowserControl AutoBrowse Function Invoke-Line isepack Function Invoke-Line PowerShellPack Function Invoke-Office365 Pipeworks Function Invoke-Pester Pester Function Invoke-WebCommand Pipeworks Cmdlet Invoke-CimMethod CimCmdlets Cmdlet Invoke-Command Microsoft.PowerShell.Core Cmdlet Invoke-Expression Microsoft.PowerShell.Utility Cmdlet Invoke-History Microsoft.PowerShell.Core Cmdlet Invoke-Item Microsoft.PowerShell.Management Cmdlet Invoke-RestMethod Microsoft.PowerShell.Utility Cmdlet Invoke-TroubleshootingPack TroubleshootingPack Cmdlet Invoke-WebRequest Microsoft.PowerShell.Utility Cmdlet Invoke-WmiMethod Microsoft.PowerShell.Management Cmdlet Invoke-WSManAction Microsoft.WSMan.ManagementApa cmdlet berakhir di kata benda Item? Get-Command *-ItemPerhatikan bahwa Anda mulai untuk melihat kata lain, seperti menghapus, baru, Hapus dan Set. Selanjutnya saya akan menggunakan beberapa cmdlet untuk meringkas apa saja tersedia di sesi saya pada salah satu kotak saya ketika saya meluncurkan konsol PowerShell. Get-Command | Group CommandType -NoElement | Sort Count -DescendingAku memanggil perintah-Dapatkan, kelompok itu, dan semacam itu. Di sini, aku bisa melihat bahwa saya memiliki 1000 + cmdlet untuk bekerja dengan. Saya menjalankan PowerShell v3 dengan tambahan modul terinstal, jadi Anda mungkin berbeda. Count Name ----- ---- 2487 Function 1184 Cmdlet 38 Alias 1 FilterModul apa Apakah cmdlet ini berasal dari? Kita bisa menjawab pertanyaan itu dengan cara ini: Get-Command -CommandType Cmdlet | Group ModuleName -NoElement | Sort Count -DescendingAda banyak saya dapat dicapai dengan PowerShell. Count Name ----- ---- 379 ShowUI 164 Hyper-V 157 Azure 92 Microsoft.PowerShell.Utility 82 Microsoft.PowerShell.Management 78 WebAdministration 55 Microsoft.PowerShell.Core 22 Dism 18 International 17 PKI 16 PSScheduledJob 13 Microsoft.WSMan.Management 12 CimCmdlets 10 Microsoft.PowerShell.Security 9 TrustedPlatformModule 8 BitsTransfer 8 MsDtc 6 Pipeworks 6 Kds 5 AppLocker 5 SecureBoot 5 Microsoft.PowerShell.Diagnostics 4 NetSecurity 4 Appx 3 WindowsErrorReporting 2 Microsoft.PowerShell.Host 2 TroubleshootingPack 1 PSWorkflow 1 DnsClientGet-HelpGet-Help tidak tepat itu, ini akan menampilkan bantuan untuk cmdlet Anda adalah apa yang harus tahu lebih banyak tentang. Tidak hanya mudah untuk mendapatkan bantuan, sangat mudah untuk membuat/termasuk bantuan untuk cmdlet/advanced fungsi Anda mengembangkan, sebuah topik untuk artikel lain. Memiliki membantu di ujung jari Anda adalah waktu yang sangat besar. Get-Help Invoke-CommandBerikut ini adalah versi singkat dari output. NAME Get-Process SYNOPSIS Gets the processes that are running on the local computer or a remote computer. SYNTAX Get-Process [[-Name] <String[]>] [-ComputerName <String[]>] [-FileVersionInfo [<SwitchParameter>]] [-Module [<SwitchParameter>]] [<CommonParameters>] Get-Process [-ComputerName <String[]>] [-FileVersionInfo [<SwitchParameter>]] [-Module [<SwitchParameter>]] -Id <Int32[]> [<CommonParameters>] Get-Process [-ComputerName <String[]>] [-FileVersionInfo [<SwitchParameter>]] [-Module [<SwitchParameter>]] -InputObject <Process[]> [<CommonParameters>] DESCRIPTION The Get-Process cmdlet gets the processes on a local or remote computer. . . . .Masih lebih mudah; Ada sebuah saklar untuk ini pada cmdlet Get-Help yang akan membawa Anda di sini. Get-Help Get-Process -OnlineIngin melihat hanya contoh bagaimana menggunakan cmdlet? Menggunakan saklar - contoh. Plus, Anda dapat menyalin dan menyisipkan contoh langsung ke konsol dan menjalankannya. Ini yang mudah dan cepat. NAME Get-Process SYNOPSIS Gets the processes that are running on the local computer or a remote computer. -------------------------- EXAMPLE 1 -------------------------- PS C:\> Get-Process This command gets a list of all of the running processes running on the local computer. For a definition of each column, see the "Additional Notes" section of the Help topic for Get-Help. -------------------------- EXAMPLE 2 -------------------------- PS C:\> Get-Process winword, explorer | format-list *PowerShell dengan mudah bekerja dengan layanan WebW3C mendefinisikan "Layanan Web" sebagai:
PowerShell membuat pekerjaan cepat Webservices, menggunakan cmdlet New-WebServiceProxy. Mengubah $zipcode, menjalankannya dan mendapatkan info cuaca terbaru. $zipCode = "96826" $svc = New-WebServiceProxy https://wsf.cdyne.com/WeatherWS/Weather.asmx $result = $svc.GetCityForecastByZIP($zipCode) # Transform the results $result.ForecastResult | ForEach { [PSCustomObject]@{ City = $result.City State = $result.State Date = $_.Date.ToString("d") Description = $_.Desciption DaytimeHigh = $_.Temperatures.DaytimeHigh } }HasilAku menyimpan objek proxy di $svc dan kemudian memanggil metode GetCityForecastByZIP, menangkap hasil dalam $result. Mengulang melalui ForecastResult array, saya mengubah catatan data. Catatan yang kota dan DaytimeHigh pada tingkat yang berbeda dalam hirarki. Teknik yang saya gunakan adalah menciptakan kunci/nilai pasangan untuk hashtable. @ {} adalah PowerShell sintaks untuk hashtable baru. Menggunakan [PSCustomObject] adalah accelerator PowerShell, yang memungkinkan saya, untuk satu hal, untuk membuat objek kustom dari hashtable. Layanan web Weather.asmx kembali hirarkis XML. Pada segelintir PowerShell perintah, saya kembali berbentuk data dan diformat (tanggal) sesuai dengan keinginan saya. Untuk contoh ini, saya memilih untuk membiarkan PowerShell mencetaknya. Sekali saya punya data dalam sesi PowerShell saya, saya sekarang terhubung ke ekosistem PowerShell dan dapat dengan mudah pipa array kustom benda untuk cmdlet lainnya untuk mendorongnya untuk layanan web lain, menghasilkan HTML, menyimpannya ke file, membuat CSV file atau ekspor ke SQL databa se. City State Date Description DaytimeHigh ---- ----- ---- ----------- ----------- Honolulu HI 5/22/2013 Showers 76 Honolulu HI 5/23/2013 Partly Cloudy 76 Honolulu HI 5/24/2013 Partly Cloudy 77 Honolulu HI 5/25/2013 Partly Cloudy 77 Honolulu HI 5/26/2013 Partly Cloudy 77 Honolulu HI 5/27/2013 Partly Cloudy 77 Honolulu HI 5/28/2013 Partly Cloudy 77Bekerja dengan CSV, JSON dan XMLMengiris dan dicing format teks adalah PowerShell sweet spot. Di sini, saya akan mengkonversi format umum tiga ke objek PowerShell. Untuk CSV dan JSON, saya akan menggunakan ConvertFrom benar-* cmdlet, dan untuk XML, saya akan menggunakan pedal gas yang mengambil XML dan menciptakan Tambahkan. Jadi, kami mengambil tiga format heterogen, dan pada akhirnya, dilakukan agregasi selama salah satu bidang. Saya bisa diperoleh setiap feed data tersebut dari berbagai tempat, CSV dari jaringan berbagi, JSON untuk permintaan ISTIRAHAT dan XML dari layanan Web. Seperti saya katakan, ini adalah PowerShell sweet spot. Twitter SearchMari kita gunakan pencarian kericau 's REST API pada baris perintah. Saya membangun Url, yang dapat Anda gunakan di browser Anda, dan kemudian saya gunakan cmdlet PowerShell Invoke-RestMethod. Hal mengirimkan permintaan ke layanan lain dan menentukan jika respon JSON atau XML. Di sini saya sedang meminta respons JSON Jadi, tanyakan-RestMethod mengkonversi hasil untuk sebuah array object PowerShell. Aku pipa mereka untuk Pilih cmdlet (alias pilih kata-kata benda-objek) memilih hanya tiga bidang. Pikirkan ini sebagai proyeksi, mirip dengan LINQ atau SQL. $query = "PowerShell" $url = "http://search.twitter.com/search.json?q=$query" (Invoke-RestMethod $url).results | Select created_at, from_user_name, textHasilSangat mudah. Memeriksa video saya lakukan untuk versi 2: "PowerShell, ShowUI dan Twitter API". Mini WPF kericau app di segenggam PowerShell. created_at from_user_name text ---------- -------------- ---- Sat, 25 May 2013 vitor pombeiro @brunomlopes a falar sobre Powershell "à minha maneira" Sat, 25 May 2013 Jeffery Hicks Did you know the #PowerShell ISE has startup options? In Sat, 25 May 2013 Pat Richard @mwjcomputing Yeah - had always used $MyInvocation.MyCom Sat, 25 May 2013 Rob Fairman "#PowerShell Script for Clearing #Windows Event Logs" ht Sat, 25 May 2013 Jim Priestley Automating SharePoint Deployments in Windows #Azure usin Sat, 25 May 2013 VT Technology RT @jangwoo_park: “@VTTechnology: Export Multiple Virtua Sat, 25 May 2013 Aryan Nava Using PowerShell to view Site created on the previous da Sat, 25 May 2013 Aryan Nava PowerShell Tips for SQL Server http://t.co/lVW2AY5BYZ Sat, 25 May 2013 Private Cloud Tech The Journey to the Private Cloud Part 3 – The Infrastruc Sat, 25 May 2013 Dr Tom Shinder The Journey to the Private Cloud Part 3 – The Infrastruc Sat, 25 May 2013 Jacob Daniels RT @tech_faq: Windows Server Manager is based on Windows Sat, 25 May 2013 CodeCruiser 10 Tips for the SQL Server PowerShell Scripter http://t.Kompilasi C# pada terbang dalam PowerShellPowerShell adalah bahasa ditafsirkan. Jadi, akan ada denda. Hal ini tidak menjadi perhatian utama, tetapi, kadang-kadang, Anda akan membutuhkan kecepatan bahasa yang dikompilasi. PowerShell memungkinkan Anda mengkompilasi C# pada terbang dalam memori dalam sesi PowerShell Anda, dengan menggunakan parameter - TypeDefinition pada cmdlet Add-jenis. Perhatikan di sini-string diidentifikasi oleh @"" @. Mereka super bermanfaat ketika mengutip teks. Saya mendorong Anda untuk mengeksplorasi lebih lanjut dengan menambahkan-jenis dan PowerShell yang mengutip aturan. Add-Type -TypeDefinition @" public class TestInline { public long Fibonacci(long n) { long a = 0; long b = 1; for (long idx = 0; idx < n; idx+=1) { long temp = a; a = b; b = temp + b; } return a; } } "@ $obj = New-Object TestInline 1..10 | ForEach { $obj.Fibonacci($_) }Berinteraksi dengan dllSekarang, katakanlah saya tidak memberikan Anda kode sumber - hanya dikompilasi DLL. Tidak masalah: menambahkan-jenis memiliki - Path parameter. Add-Type -Path .\FibLib.dll $obj = New-Object TestInline 1..10 | ForEach { $obj.Fibonacci($_) }Memberi perhatian khusus untuk ini. Menggunakan Add-jenis cara ini adalah bagaimana Anda dengan mudah membungkus DLL .NET berasal dari siapa pun, jika mereka belum sudah menyediakan antarmuka PowerShell. Hal ini berlaku apakah DLL dari Microsoft, DELL, Citrix atau pengembang lain. PenutupJadi yang tidak untuk sekarang. Apakah Anda ingin melihat lebih banyak konten khusus Powershell di Nettuts +? Marilah kita tahu di bawah ini! |