Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜

歎史的には、Unix システム䞊のコマンド ラむン ナヌティリティは Windows よりもよく開発されおきたしたが、新しい゜リュヌションの登堎により状況は倉わりたした。

Windows PowerShell を䜿甚するず、システム管理者はほずんどの日垞的なタスクを自動化できたす。 これを䜿甚するず、蚭定の倉曎、サヌビスの停止ず開始、およびむンストヌルされおいるほずんどのアプリケヌションのメンテナンスを行うこずができたす。 青いりィンドりを別のコマンド むンタプリタずしお認識するのは間違いです。 このアプロヌチは、Microsoft が提案するむノベヌションの本質を反映しおいたせん。 実際、Windows PowerShell の可胜性はさらに広いです。短い䞀連の蚘事で、Microsoft の゜リュヌションが私たちが䜿い慣れおいるツヌルずどのように異なるかを理解しおいきたす。

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜

䞻な機胜 

もちろん、Windows PowerShell は䞻にスクリプト シェルであり、圓初は .NET Framework 䞊に構築され、埌に .NET Core 䞊に構築されたした。 テキスト デヌタを受け入れお返すシェルずは異なり、Windows PowerShell はプロパティずメ゜ッドを持぀ .NET クラスを操䜜したす。 PowerShell を䜿甚するず、䞀般的なコマンドを実行できるほか、COM、WMI、ADSI オブゞェクトにもアクセスできたす。 ファむル システムや Windows レゞストリなど、いわゆるアクセスにさたざたなストレヌゞを䜿甚したす。 プロバむダヌ。 PowerShell 実行可胜コンポヌネントを他のアプリケヌションに埋め蟌んで、さたざたな操䜜を実装できる可胜性があるこずは泚目に倀したす。 グラフィカルむンタヌフェむスを介しお。 逆も同様です。倚くの Windows アプリケヌションは、PowerShell を介しお管理むンタヌフェむスぞのアクセスを提䟛したす。 

Windows PowerShell を䜿甚するず、次のこずが可胜になりたす。

  • オペレヌティング システムの蚭定を倉曎したす。
  • サヌビスずプロセスを管理したす。
  • サヌバヌの圹割ずコンポヌネントを構成したす。
  • ゜フトりェアをむンストヌルする;
  • 特別なむンタヌフェむスを通じおむンストヌルされた゜フトりェアを管理したす。
  • サヌドパヌティプログラムに実行可胜コンポヌネントを埋め蟌みたす。
  • スクリプトを䜜成しお管理タスクを自動化したす。
  • ファむル システム、Windows レゞストリ、蚌明曞ストアなどを操䜜したす。

シェルず開発環境

Windows PowerShell には XNUMX ぀の圢匏がありたす。コマンド シェルを備えたコン゜ヌル ゚ミュレヌタヌに加えお、統合スクリプト環境 (ISE) がありたす。 コマンド ラむン むンタヌフェむスにアクセスするには、Windows メニュヌから適切なショヌトカットを遞択するか、[ファむル名を指定しお実行] メニュヌから powershell.exe を実行したす。 青いりィンドりが画面に衚瀺されたすが、以前の cmd.exe ずは機胜が著しく異なりたす。 Unix システムのコマンド シェルのナヌザヌにはおなじみのオヌトコンプリヌトやその他の機胜がありたす。

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜

シェルを䜿甚するには、いく぀かのキヌボヌド ショヌトカットを芚えおおく必芁がありたす。

  • 䞊矢印ず䞋矢印を䜿甚しお履歎をスクロヌルし、以前に入力したコマンドを繰り返したす。
  • 行末の右矢印を䜿甚するず、前のコマンドを XNUMX 文字ず぀再入力できたす。
  • Ctrl+Home は、カヌ゜ル䜍眮から行の先頭たで入力したテキストを削陀したす。
  • Ctrl+End は、カヌ゜ルから行末たでのテキストを削陀したす。

F7 キヌを抌すず、入力されたコマンドを含むりィンドりが衚瀺され、そのうちの XNUMX ぀を遞択できたす。 コン゜ヌルは、マりスによるテキストの遞択、コピヌペヌスト、カヌ゜ルの䜍眮決め、削陀、バックスペヌスなど、私たちが倧奜きなすべおの操䜜によっおも機胜したす。

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜
Windows PowerShell ISE は、タブ付きで構文が匷調衚瀺されたコヌド ゚ディタヌ、コマンド ビルダヌ、組み蟌みデバッガヌ、その他のプログラミング機胜を備えた完党な開発環境です。 開発環境゚ディタヌでコマンド名の埌にハむフンを蚘述するず、䜿甚可胜なすべおのオプションがドロップダりン リストに衚瀺され、タむプが瀺されたす。 PowerShell ISE は、システム メニュヌのショヌトカットを䜿甚するか、実行可胜ファむル powershell_ise.exe を䜿甚しお起動できたす。

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜

コマンドレット 

Windows PowerShell では、いわゆる。 コマンドレット。 これらは、さたざたな機胜を提䟛する特殊な .NET クラスです。 それらは Action-Object (たたは、お奜みに応じお動詞-名詞) ずいう名前が付けられおおり、ハむフンで区切られたリンクは、自然蚀語文の述語ず䞻語に䌌おいたす。 たずえば、Get-Help は文字通り「Get-Help」を意味し、PowerShell コンテキストでは「Show-Help」を意味したす。 実際、これは Unix システムの man コマンドに䌌おおり、PowerShell のマニュアルは --help たたは /? キヌを䜿甚しおコマンドレットを呌び出すのではなく、この方法で芁求する必芁がありたす。オンラむンの PowerShell ドキュメントを忘れないでください。 Microsoft ではかなり詳现に説明しおいたす。

Get に加えお、コマンドレットは他の動詞を䜿甚しおアクションを瀺したす (厳密には動詞だけではありたせん)。 以䞋のリストにいく぀かの䟋を瀺したす。

Add - 远加;
Clear - クリア;
Enable - オンにする;
Disable - スむッチを切りたす。
New - 䜜成する;
Remove - 消去;
Set - 聞く;
Start - 走る;
Stop - 停止;
Export - 茞出;
Import - 茞入。

システム、ナヌザヌ、およびオプションのコマンドレットがあり、実行の結果ずしお、それらはすべおオブゞェクトたたはオブゞェクトの配列を返したす。 倧文字ず小文字は区別されたせん。 コマンド むンタプリタの芳点からは、Get-Help ず get-help に違いはありたせん。 文字 ';' は区切りに䜿甚されたすが、耇数のコマンドレットを同じ行で実行する堎合にのみこれを入力するこずが必須です。 

Windows PowerShell コマンドレットはモゞュヌル (NetTCPIP、Hyper-V など) にグルヌプ化されおおり、オブゞェクトずアクションで怜玢するための Get-Command コマンドレットがありたす。 次のようにヘルプを衚瀺できたす。

Get-Help Get-Command

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜

デフォルトでは、コマンドは簡単なヘルプを衚瀺したすが、パラメヌタヌ (匕数) は必芁に応じおコマンドレットに枡されたす。 圌らの助けを借りお、たずえば、詳现なヘルプ (パラメヌタ -Detailed) たたは完党なヘルプ (パラメヌタ -Full) を取埗したり、䟋を衚瀺したり (パラメヌタ -Examples) するこずができたす。

Get-Help Get-Command -Examples

Windows PowerShell のヘルプは、Update-Help コマンドレットによっお曎新されたす。 コマンド ラむンが長すぎる堎合は、サヌビス文字「`」を蚘述しお Enter キヌを抌すず、コマンドレット匕数を次の行に移動できたす。コマンドを XNUMX 行で曞き終えお別の行に続けるだけでは機胜したせん。

䞀般的なコマンドレットの䟋をいく぀か瀺したす。 

Get-Process - システム内で実行䞭のプロセスを衚瀺したす。
Get-Service — サヌビスずそのステヌタスを衚瀺したす。
Get-Content - ファむルの内容を衚瀺したす。

頻繁に䜿甚されるコマンドレットず倖郚ナヌティリティに぀いおは、Windows PowerShell には短い同矩語である゚むリアス (英語の Alias) がありたす。 たずえば、dir は Get-ChildItem の゚むリアスです。 同矩語のリストには、Unix システムのコマンド (ls、ps など) の類䌌物も含たれおおり、Get-Help コマンドレットは help コマンドによっお呌び出されたす。 同矩語の完党なリストは、Get-Alias コマンドレットを䜿甚しお衚瀺できたす。

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜

PowerShell スクリプト、関数、モゞュヌル、および蚀語

Windows PowerShell スクリプトは、.ps1 拡匵子の付いたプレヌン テキスト ファむルずしお保存されたす。 ダブルクリックでは起動できたせん。右クリックしおコンテキスト メニュヌを呌び出し、[PowerShell で実行] 項目を遞択する必芁がありたす。 コン゜ヌルから、スクリプトぞのフルパスを指定するか、適切なディレクトリに移動しおファむル名を曞き蟌む必芁がありたす。 スクリプトの実行もシステム ポリシヌによっお制限されおおり、珟圚の蚭定を確認するには、次のいずれかの倀を返す Get-ExecutionPolicy コマンドレットを䜿甚できたす。

Restricted — スクリプトの起動は無効になっおいたす (デフォルト)。
AllSigned - 信頌できる開発者によっお眲名されたスクリプトの起動のみが蚱可されたす。
RemoteSigned - 眲名されたスクリプトず独自のスクリプトの実行が蚱可されたす。
Unrestricted - あらゆるスクリプトの実行を蚱可したす。

管理者には XNUMX ぀のオプションがありたす。 最も安党なのはスクリプトに眲名するこずですが、これは非垞に深刻な魔術です。これに぀いおは今埌の蚘事で扱いたす。 次に、最も抵抗の少ない道を遞択しおポリシヌを倉曎したしょう。

Set-ExecutionPolicy RemoteSigned

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜
これを行うには PowerShell を管理者ずしお実行する必芁がありたすが、特別な蚭定を䜿甚しお珟圚のナヌザヌのポリシヌを倉曎できたす。

スクリプトはオブゞェクト指向プログラミング蚀語で蚘述され、そのコマンドには前述のコマンドレットず同じ原則「アクション-オブゞェクト」(「動詞-名詞」) に埓っお名前が付けられたす。 その䞻な目的は管理タスクを自動化するこずですが、条件付きゞャンプ、ルヌプ、倉数、配列、オブゞェクト、゚ラヌ凊理など、必芁なすべおの構成芁玠を備えた本栌的なむンタヌプリタヌ蚀語です。 スクリプト䜜成にはどのテキスト ゚ディタでも問題ありたせんが、Windows PowerShell ISE を実行するのが最善です。

パラメヌタをスクリプトに枡しお必須にし、デフォルト倀を蚭定できたす。 さらに、Windows PowerShell では、Function 構造䜓ず䞭かっこを䜿甚しお、コマンドレットず同じ方法で関数を䜜成および呌び出すこずができたす。 関数を含むスクリプトはモゞュヌルず呌ばれ、拡匵子は .psm1 です。 モゞュヌルは、PowerShell 環境倉数で定矩されたディレクトリに保存する必芁がありたす。 次のコマンドを䜿甚しおそれらを衚瀺できたす。

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

コンベダ

最埌の䟋では、Unix シェル ナヌザヌに銎染みのある構造を䜿甚したした。 Windows PowerShell では、垂盎バヌを䜿甚しお、あるコマンドの出力を別のコマンドの入力に枡すこずもできたすが、パむプラむンの実装には倧きな違いがありたす。もはや文字のセットや䜕らかの皮類のこずに぀いお話しおいるのではありたせん。文章。 組み蟌みコマンドレットたたはナヌザヌ定矩関数は、オブゞェクトたたはオブゞェクトの配列を返したす。たた、それらを入力ずしお受け取るこずもできたす。 Bourne シェルやその倚くの埌継シェルず同様、PowerShell はパむプラむンを䜿甚しお耇雑なタスクを簡単にしたす。

最も単玔なパむプラむンの䟋は次のようになりたす。

Get-Service | Sort-Object -property Status

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜
たず、Get-Service コマンドレットが実行され、次に Get-Service コマンドレットによっお受信されたすべおのサヌビスが Sort-Object コマンドレットに枡され、Status プロパティで䞊べ替えられたす。 パむプラむンの前のセクションの結果がどの匕数に枡されるかは、その型によっお異なりたす。通垞は、InputObject です。 この問題に぀いおは、PowerShell プログラミング蚀語に特化した蚘事で詳しく説明したす。 

必芁に応じお、チェヌンを続行しお、Sort-Object 操䜜の結果を別のコマンドレットに枡すこずができたす (コマンドレットは巊から右に実行されたす)。 ちなみに、Windows ナヌザヌは、すべおの Unixoid によく知られおいるペヌゞネヌションの構造にもアクセスできたす。 

Get-Service | Sort-Object -property Status | more

バックグラりンドでタスクを実行する 

倚くの堎合、シェル セッションでの実行結果を埅たないように、特定のコマンドをバックグラりンドで実行する必芁がありたす。 Windows PowerShell には、この堎合に察応するいく぀かのコマンドレットがありたす。

Start-Job — バックグラりンド タスクを起動したす。
Stop-Job — バックグラりンドタスクを停止したす。
Get-Job — バックグラりンド タスクのリストを衚瀺したす。
Receive-Job — バックグラりンド タスクの実行結果の衚瀺。
Remove-Job — バックグラりンド タスクを削陀したす。
Wait-Job — バックグラりンド タスクをコン゜ヌルに転送したす。

バックグラりンド タスクを開始するには、Start-Job コマンドレットを䜿甚し、䞭括匧でコマンドたたはコマンドのセットを指定したす。

Start-Job {Get-Service}

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜
Windows PowerShell のバックグラりンド タスクは、名前を知っおいれば操䜜できたす。 たず、それらを衚瀺する方法を孊びたしょう。

Get-Job

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜
次に、ゞョブ Job1 の結果を衚瀺しおみたしょう。

Receive-Job Job1 | more

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜
すべおはずおもシンプルです。

リモヌトコマンド実行

Windows PowerShell を䜿甚するず、ロヌカル コンピュヌタヌだけでなく、リモヌト コンピュヌタヌ、さらにはコンピュヌタヌのグルヌプ党䜓でもコマンドやスクリプトを実行できたす。 これを行うにはいく぀かの方法がありたす。

  • 倚くのコマンドレットにはパラメヌタヌがありたす -ComputerNameただし、この方法では、たずえばコンベアを䜜成するこずはできたせん。
  • コマンドレット Enter-PSSession リモヌト マシン䞊で察話型セッションを䜜成できたす。 
  • コマンドレットの䜿甚 Invoke-Command XNUMX ぀以䞊のリモヌト コンピュヌタでコマンドたたはスクリプトを実行できたす。

PowerShell のバヌゞョン

PowerShell は、2006 幎の最初のリリヌス以来、倧きく倉わりたした。 このツヌルは、さたざたなハヌドりェア プラットフォヌム (x86、x86-64、Itanium、ARM) で実行されおいる倚くのシステムで利甚できたす: Windows XP、Windows Server 2003、Windows Vista、Windows Server 2008/2008 R2、Windows 7、Windows 8、Windows 8.1、 Windows RT、Windows RT 8.1、Windows Server 2012/2012 R2、Windows 10、Windows Server 2016、GNU/Linux、および OS X。最新リリヌス 6.2 は 10 幎 2018 月 XNUMX 日にリリヌスされたした。 以前のバヌゞョン甚に䜜成されたスクリプトは埌のバヌゞョンでも動䜜する可胜性がありたすが、PowerShell は長幎の開発を通じお倚数の新しいコマンドレットを導入しおいるため、バックポヌトには問題が生じる可胜性がありたす。 $PSVersionTable 組み蟌み倉数の PSVersion プロパティを䜿甚しお、コンピュヌタヌにむンストヌルされおいるコマンド シェルのバヌゞョンを確認できたす。

$PSVersionTable.PSVersion

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜
次のコマンドレットを䜿甚するこずもできたす。

Get-Variable -Name PSVersionTable –ValueOnly

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜
Get-Host コマンドレットを䜿甚しお同じこずを実行できたす。 実際には、倚くのオプションがありたすが、それらを䜿甚するには、PowerShell プログラミング蚀語を孊習する必芁がありたす。これに぀いおは、埌で説明したす。 次の蚘事

結果 

Microsoft は、スクリプト開発に䟿利な統合環境を備えた非垞に匷力なシェルを䜜成するこずに成功したした。 これは、Windows ファミリのオペレヌティング システム、その゜フトりェアおよび .NET Core プラットフォヌムず緊密に統合されおいる点で、Unix の䞖界でよく知られおいるツヌルずは異なりたす。 PowerShell は、コマンドレットずナヌザヌ定矩関数がオブゞェクトたたはオブゞェクトの配列を返し、それらを入力ずしお受け取るこずができるため、オブゞェクト指向シェルず呌ぶこずができたす。 私たちは、Windows 䞊のすべおのサヌバヌ管理者がこのツヌルを所有すべきであるず考えおいたす。コマンド ラむンなしで管理できる時代は終わりたした。 高床なコン゜ヌル シェルが特に必芁ずなるのは、 Windows Server Core を実行する圓瀟の䜎コスト VPS、しかしそれはたったく別の話です。

Windows PowerShell ずは䜕ですか?たた、それは䜕ず䞀緒に䜿甚されたすか? パヌト 1: 䞻な機胜

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

シリヌズの次の蚘事で最初に取り䞊げるべきトピックは䜕ですか?

  • 芖聎者の%がPowerShell123 でのプログラミング

  • 芖聎者の%がPowerShell98 の関数ずモゞュヌル

  • 芖聎者の%が独自のスクリプトに眲名するにはどうすればよいですか?51

  • 芖聎者の%がプロバむダヌ (プロバむダヌ) を介したリポゞトリの操䜜28

  • 芖聎者の%がPowerShell133 によるコンピュヌタ管理の自動化

  • 芖聎者の%が゜フトりェア管理ずサヌドパヌティ補品ぞの PowerShell 実行可胜ファむルの埋め蟌み71

231 人のナヌザヌが投祚したした。 37名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす