PowerShellのジャンプスタート(パートI)

自動化のみ。 PowerShellのみ。







まえがき



趣味として、また時間のあるときに、UKIT(旧モスクワ州立情報技術大学)の学生に教えています。 現時点では、学生グループにそれを捧げる時間はほとんどありませんが、Habréで投稿を準備するだけで十分です。



私は、ITリソースを大量に持っているIT以外の大企業でシステム管理者として働いています。 アクティビティの性質上、ユーザーサービスの多数の同様のタスクを解決するようです。



私は2年ほど前にPowerShell言語に精通しましたが、その巨大な機能を最初に認識せずに、1年後に初めてPowerShell言語に慣れました。 記事では、まず、PowerShellでの作業を開始したいが、これまで彼を信頼していないか、この奇跡に近づく側がわからないという人々に導かれます。



注意:PowerShellは中毒性があります。



はじめに



ウィキペディアは次のように語っています。

Windows PowerShellMicrosoftの拡張可能な自動化ツールであり、コマンドラインインターフェイスと付属のスクリプト言語を備えたシェルで構成されています。


PowerShellはコマンドラインのように見えます。





powershell.exe



またはアプリケーションとして:





powershell_ise.exe



Powershell_ise.exeは、統合スクリプト環境-Windows PowerShell ISEと呼ばれます。 構文の強調表示、コマンドデザイナー、TABキーを押すことによるコマンドのオートコンプリート、その他の機能を備えた便利な環境で、言語を操作できます。 スクリプトの作成とテストに最適です。



powershell.exeまたはpowershell_ise.exe環境を開始するには、実行行に同じ名前を入力するだけです。







PowerShellスクリプトファイルの拡張子は.ps1です。







スクリプトは、ダブルLMBで開始できません。 これは、スクリプトを誤って実行してシステムに害を与えないように特に行われます。



開始するには、PCMを右クリックして、[PowerShellを使用して実行]を選択します。







LMCスクリプトの実行には制限があるという事実に加えて、システムでのスクリプトの実行はデフォルトで禁止されています。これも上記の理由により、システムに害を与えません。 現在の実行ポリシーを確認するには、次のコマンドを実行します。



Get-ExecutionPolicy
      
      











次の値のいずれかを取得します。 高い確率で、これが最初の起動であった場合、 制限されます。







実行してテストするには、次のコマンドを実行してポリシーをRemoteSignedに下げます。



 Set-ExecutionPolicy RemoteSigned
      
      











仕事を始める



コマンドレット






たとえば、現在のプロセスを取得するには、次のコマンドを実行します。



 Get-Process
      
      







そして結果が得られます:







自分でやってみてください:



 Get-Service #   ,   
      
      







 Get-Content C:\Windows\System32\drivers\etc\hosts #   .   ,  hosts
      
      







すべてのコマンドレットを暗記する必要はありません。 Get-Helpは状況保存します。

次のコマンドを入力すると、使用可能なすべてのコマンドレットに関する情報を取得できます。



 Get-Help -Category cmdlet
      
      







PowerShell ISEを使用すると、開発プロセスが容易になります。

コマンドレットを入力した後、ダッシュ「 - 」を入力するだけで十分です。パラメーターとそのタイプのすべての可能なオプションを取得します。







やってみてください:



 Get-Service -Name p*
      
      







それでも、特定のコマンドレットのプロパティを忘れた場合は、 Get-Memberで実行します。



 Get-Process | Get-Member # "|"  .   .
      
      











情報が足りませんか? -Examplesパラメーターのヘルプを参照してください。



 Get-Help Get-Process -Examples
      
      







Get-Processの説明と、使用例を示します。











やってみてください:



 Start-Process notepad
      
      







エントリに似ています:



 start notepad
      
      







プロセスを停止します。



 Stop-Process -Name notepad
      
      







または:



 spps -Name notepad
      
      







コマンドレットは、動詞-名詞規則に従って名前が付けられることを少し前に述べました。 動詞がGetである必要はないことを明確にします。 受け取ることができるものに加えて、設定(Set-ExecutionPolicyを思い出してください)、開始、停止、出力、 新規作成、その他多数の作成を行うことができます。 コマンドレットの名前は何に限定されるものではありません。独自のコマンドレットを作成するときに、好きな名前を付けることができます。



ファイルに出力してみましょう:



 "Hello, Habr!" | Out-File C:\test.txt & C:\test.txt
      
      







ところで、同様に、これを書くことができます:



 "Hello, Habr!" > C:\test.txt & C:\test.txt
      
      







コメント


コメントを使用することは良い形です。



PowerShellのコメントは小文字- およびブロック- <# ... #>です。







例のコードに注意してください。



 Get-WmiObject -Class Win32_OperatingSystem | SELECT Caption
      
      







古き良きVBScriptでこれを行うWMIに精通している人のために、どれだけのコードを書く必要があるか覚えていますか?



 On Error Resume Next strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem",,48) For Each objItem in colItems Wscript.Echo "Caption: " & objItem.Caption Next
      
      







コンベアベルト


パイプライン( | )-あるコマンドの出力を別のコマンドで処理するための入力に転送します。 先にパイプラインを使用して、オブジェクトのすべてのプロパティを取得するか、前の例ではデータセットからCaptionフィールドのみを選択しました。



パイプラインの原理を理解するために、コードを実行してみましょう。



 Get-Service | Sort-Object -property Status
      
      







どうなるか:すべてのサービス(Get-Service)を取得し、受信したすべてのサービスを並べ替えてSort-Objectコマンドレットに転送し、Statusパラメーターで並べ替えることを示します。 結論として、まず停止ステータスのすべてのサービスを受け取り、次に実行ステータスのすべてのサービスを受け取ります。



以下の例では、最初に実行中のすべてのサービスを取得します。 最初のパイプラインの後、各要素を調べて、実行中のステータスを持つサービスのみを選択し、2番目のパイプラインで、出力にサービスの表示名のみを表示することを選択します。



 Get-Service | WHERE {$_.status -eq "Running"} | SELECT displayname
      
      







この例では、 $ _を使用します。 このエントリは、パイプライン内の現在のアイテムを意味します。







あとがき



このパートでは、PowerShellの実行方法を学び、スクリプト実行ポリシーを見つけました。 コマンドレットが何であるかを理解し、パイプラインに沿ってコマンドレットを転送する方法と、プロパティを取得する方法を知っています。 何かを忘れた場合は、Get-Helpを忘れないでください。



この知識はすべて、最初に言語に飛び込むために必要です。 私を信じて、もっともっと面白いことがあります!



継続するには...





追加情報








All Articles