Agar detail perintah cmdlet ditampilkan pada layar perintah yang diketikan adalah

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.

Apa itu PowerShell?

PowerShell memecahkan administrasi dan adaptasi tantangan dengan mulus mengintegrasikan .NET Framework.

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 sepanjang

Dalam 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.

  • Iris dan dadu teks, XML, CSV, dan JSON dengan mudah
  • Menanamkan PowerShell untuk memberikan kemampuan skrip untuk aplikasi C# Anda
  • Membuat aplikasi GUI lima sampai sepuluh kali lebih cepat dengan sedikit kode
  • Leverage PowerShell's kemampuan untuk bekerja dengan Internet
  • Berinteraksi dengan dll dan membuat objek, secara otomatis menampilkan properti, dan memanggil metode dalam hidup sesi interaktif
  • Membangun bahasa (DSLs) dan kosa kata untuk mengungkapkan solusi lebih jelas
  • Bekerja dengan Microsoft Office melalui komponen objek Model (COM)
  • PowerShell v3 fitur

Bootstrap PowerShell

Apa 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:

PS C:\> Get-Date Sunday, May 26, 2013 8:46:16 AM

PowerShell termasuk ratusan inti cmdlet dan Anda dapat menulis Anda sendiri.

Menghafal cmdlet dua

PowerShell membuat discoverability mudah. Setiap kali Anda berjalan ke layar biru PowerShell dan tidak yakin apa yang harus dilakukan, menggunakan perintah Get.

Cmdlet Get-perintah mendapat semua perintah yang diinstal pada komputer, termasuk cmdlet, alias, fungsi, alur kerja, filter, script, dan aplikasi.

Pada dasarnya, perintah Get-menunjukkan Anda semua hal yang dapat Anda lakukan dalam sesi PowerShell saat ini.

Dapatkan-perintah

Dapatkan-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.Management

Apa cmdlet berakhir di kata benda Item?

Get-Command *-Item

Perhatikan bahwa Anda mulai untuk melihat kata lain, seperti menghapus, baru, Hapus dan Set.

CommandType Name ModuleName ----------- ---- ---------- Cmdlet Clear-Item Microsoft.PowerShell.Management Cmdlet Copy-Item Microsoft.PowerShell.Management Cmdlet Get-Item Microsoft.PowerShell.Management Cmdlet Invoke-Item Microsoft.PowerShell.Management Cmdlet Move-Item Microsoft.PowerShell.Management Cmdlet New-Item Microsoft.PowerShell.Management Cmdlet Remove-Item Microsoft.PowerShell.Management Cmdlet Rename-Item Microsoft.PowerShell.Management Cmdlet Set-Item Microsoft.PowerShell.Management

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 -Descending

Aku 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 Filter

Modul apa Apakah cmdlet ini berasal dari? Kita bisa menjawab pertanyaan itu dengan cara ini:

Get-Command -CommandType Cmdlet | Group ModuleName -NoElement | Sort Count -Descending

Ada 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 DnsClient

Get-Help

Get-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-Command

Berikut 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 -Online

Ingin melihat hanya contoh bagaimana menggunakan cmdlet? Menggunakan saklar - contoh. Plus, Anda dapat menyalin dan menyisipkan contoh langsung ke konsol dan menjalankannya.

Get-Help Get-Process -Examples

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 Web

W3C mendefinisikan "Layanan Web" sebagai:

[...] sebuah sistem perangkat lunak yang dirancang untuk mendukung interaksi untuk mesin dioperasikan melalui jaringan. Memiliki antarmuka yang dijelaskan dalam format mesin-processable (khusus WSDL). Sistem lain berinteraksi dengan layanan Web dalam cara yang ditentukan oleh Deskripsi menggunakan sabun pesan, biasanya disampaikan menggunakan HTTP dengan XML serialisasi dalam hubungannya dengan standar Web yang berhubungan dengan lainnya.

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 } }

Hasil

Aku 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 77

Bekerja dengan CSV, JSON dan XML

Mengiris 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.

# Use CSV $csv = "Name,Age`r`nJohn,10" | ConvertFrom-Csv $csv Name Age ---- --- John 10 # Use JSON $json = "{Name:'Tom', Age:20}" | ConvertFrom-Json $json Name Age ---- --- Tom 20 # Use XML $xml = ([xml][/xml]"<data><record><Name>Harry</Name><Age>30</Age></record></data>").data.record $xml Name Age ---- --- Harry 30 # Combine all three $csv,$json,$xml Name Age ---- --- John 10 Tom 20 Harry 30 # Add up the ages $csv,$json,$xml | % {$sum=0} {$sum+=$_.age} {$sum} 60

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.

Mari 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, text

Hasil

Sangat 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 PowerShell

PowerShell 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 dll

Sekarang, 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.

Penutup

Jadi yang tidak untuk sekarang. Apakah Anda ingin melihat lebih banyak konten khusus Powershell di Nettuts +? Marilah kita tahu di bawah ini!