[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] -[[戻る>Windows]] * 目次 [#sdb05f6b] #contents *概要 [#e894f3c3] -シェルとは対話型でOSをControl可能なUIのことである。 -CUI型のものとGUI型のものがある。 --Windows ---CUI:CMD、PowerShell ---GUI:Windows shell、Windows Explorer **シェルとスクリプトの違い [#sff26232] -シェルは対話型で実行可能。スクリプト化してバッチ実行可能。 -スクリプトはバッチ実行のみ可能。 *GUIシェル [#q276082e] 現代の Microsoft Windows はシェルとして~ Windows shell を使用しており、その代表として Windows Explorer がある。~ Windows shell は、デスクトップ環境、スタートメニュー、タスクバーを含めた全体を意味し、~ Windows Explorer はファイル管理機能にアクセスするグラフィカルユーザインタフェースである。 *CUIシェル [#e202f383] CUIシェル(テキストベースのシェル)には、以下のものがある。 -シェル - Wikipedia > テキストベースのシェル~ http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%83%AB#.E3.83.86.E3.82.AD.E3.82.B9.E3.83.88.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE.E3.82.B7.E3.82.A7.E3.83.AB --4DOSMS~ DOS、OS/2、Windows NT 用のシェル。 --cmd.exe~ OS/2、Windows CE、Windows NTのシェル。 --Windows PowerShell~ cmd.exeの後継のオブジェクト指向型シェル -OSと人間のCUI = CUIシェル(テキストベースのシェル)の特徴 --CUIシェル(テキストベースのシェル)の変数に文字列:"*.exe" を代入して、~ 変数に入れた文字列(というか文字列しか入らない)を「使う」と、~ あたかもコマンドを手打ちしたようにそのまま動いてしまう。 --CUIシェル(テキストベースのシェル)の仕様は、~ プログラミング言語や[[プログラミング言語のシェル>スクリプティング]]的には、には違和感があるが、~ これがCUIシェル(テキストベースのシェル)の特性であると割り切ると理解しやすい。 *[[プログラミング言語のシェル>スクリプティング]] [#h9b5c138] プログラミング言語や[[プログラミング言語のシェル>スクリプティング]]的には、 -[[VBS]]:WScript.Shellオブジェクト -.NET:Processオブジェクト を使わないとEXE起動できない。 また、起動したEXEとは、標準入出力で明示的に通信する必要がある。 *[[スクリプティング]] [#tf0eb368] [[スクリプティング]]=以下をコード化してバッチ処理を行なう的な。 -CUIシェル(テキストベースのシェル) -プログラミング言語のシェル *参考 [#p4066126] **Junichi Anno’s slideshows on SlideShare [#q5c2ac02] http://www.slideshare.net/junichia/tag/powershell -Windows PowerShell 3.0 によるWindows Server 2012 管理の自動化 v2.2 2012.10.1...~ http://www.slideshare.net/junichia/windows-powershell-30-windows-server-2012 --2012以降は管理コンソールの裏はPowerShellコマンドレットになる。 ---現行、管理コンソールはCUI → [[WMI]]で構成されている。 ---コマンドレットの裏は.NET、その裏は[[WMI]](Windows Management Instrumentation)。~ --MS的には、今後PowerShell押し。 ---コマンドレットは<操作>-<ターゲット>の名称ルールに準拠。 ---[[WSH>VBS]]([[VBS]]とJS)は凍結される。 ---[[BAT]]は今後もエンハンス有り。 ---[[PowerShell]]から[[BAT]]や、[[WSH>VBS]]を実行可能。 ---また、Get-WmiObjectで[[WMI]]も実行可能。 ---難しい事をやるなら、まだ[[WMI]]が必要。 --windows management framework 3.0 RC(Win2008 sp2以降にインストール可能)~ 標準化:[[PowerShell]] → WS-Management → CIMOM、SMI-S(WS-Management 以下から他のPFも管理できる) ---Windows PowerShell 3.0 ---WinRM ---[[WMI]](アップデート ---Windows PowerShell Web Service(WPWS) ---Server Manager CIM Provider -皆、テキストベース → オブジェクトベースのShellの違いに混乱する。 --パイプで渡せる型はある。 --パイプで何が渡るかはGet-Memberコマンドレット調べる~ http://mojibake.seesaa.net/article/53585441.html ---シェルだが、プログラム、スクリプト(perl)のような仕様。 ---変数、配列、Property、Method(.NETライク)、また、~ 無名関数、delegate、検索条件をラムダ式的に・・・なども可能。~ Like This ↓パイプ ↓ラムダ式的な get-service | where-object {$_.Status -eq "Running"} パイプしなくてもキャスト(暗黙)でつなげられる。 -エイリアスを使ってUnix風にできる。 -Windows2012からuiのアンインストール可能で、サーバコア風に運用可能。 -探し方いろいろ --Get-Command --Get-Module --Get-WmiObject --Get-Member -PSドライブ、 >いろいろなDirectoryがDirできる。~ HDD、レジストリ、AD Directoryサービス、環境変数.etc -非同期ジョブ、リモート、ワークフローなど。 --非同期ジョブ ---start-job - scriptblock { ・・・コード・・・ } ---start-job - filepath ファイルパス ---#結果はSessionの範囲でしか有効では無い。 --リモート接続 ---invoke-command マシン名やSessionを指定 -scriptblock { ・・・コード・・・ } ---invoke-command マシン名やSessionを指定 -filepath ファイルパス ---#Sessionを指定すれば処理中のジョブ等に再接続することも可能。 --ワークロフロー ---ファイルとして登録 ---クライアントでもサーバでも実行できる。 ---サーバが停止しても処理をレジュームできる。~ #非同期ジョブジョブと異なり、結果は永続化されている。 ---その他、並列処理等も可能。 ---- Tags: [[:Windows]], [[:シェル]]