November 15, 2020
by

「$a+$b*$c」なら7が表示されます。(乗算が加算より優先して計算されます) Copyright © 2017-2020 マイクロソフ党ブログ All Rights Reserved. “PowerShellのコマンドレット操作の応用” -and:Aの条件式がTrue、かつ、Bの条件式がTrue、かつ、Bの条件式がTrue. -CompressionLevel アーカイブファイルを作成するときの適用する圧縮量(サイズ)を指定します。. Get-WMIObject Win32_BIOS > d:temp$today.txt コマンドプロンプトでファイルサイズが0かどうか判断する(バッチ)コマンドプロンプトでファイルサイズが0かどうか判断するには、%%~zFを使用します。for文も使用して判断します。 PowerShellスクリプトがどんなものか知ってもらうためにまず、指定のフォルダ以下のすべてのサブフォルダからファイルサイズ0の空ファイルを見つけて削除する関数「del0」(下記)をスクリプト化して … こんな会話をオフィスでしているあなた!この記事を読んで、フォルダの大掃除をしましょう!, たしかにファイルを削除すれば容量は空きますが、小さなファイルをいくら削除しても、たいした効果はありません。, たとえば、50KBのファイルを10個削除するより、1MBのファイルを1個削除したほうが空き容量が増えますよね。 PowerShellの概要とWindowsでの基本操作について、インストール方法や起動画面の使い方を解説します。, Windowsにはコマンド操作を行うプログラムとして「コマンドプロンプト」がありますが、この機能をさらに進化させたのが「PowerShell」です。使うのが難しそうだと思っている人もいるかもしれませんが、いざ使ってみると意外と便利で、Windows PC上の操作を素早く楽に行うこともできます。「時短テクニック」にも有効なPowerShellの概要と基本操作、さらにPowerShellで使用できるコマンドレットについて、コマンドプロンプトにはなかったオブジェクトという概念から、パイプライン、関数、変数などより高度にPowerShellを扱うために知っておきたい情報、さらに同じような操作を効率的に行うためにPowerShellで作成した記述をファイルに登録し、そのファイルを実行する方法についてもご説明します。, Windowsにはコマンド操作を行うコマンドプロンプトが備わっており、今でもそれなりに有用なプログラムですが、すでに進化も止まっており力不足の感は否めません。そこで代わりに登場したものがPowerShellです。Windows 7/Windows Server 2008からWindowsに標準搭載されており、2018年11月現在の最新バージョンはWindows 10用の5.1です。, ただし、このPowerShellも今後バージョンアップされず、機能の追加も予定されていません。実はこのPowerShellの後継として、「PowerShell Core」がすでにリリースされています。PowerShell Coreはオープンソースとしてリリースされ、Windowsだけでなく、MACやLinuxでも動作します。2018年11月現在の最新リリース版は6.1.1になります。, つまり、現在はPowerShell 5.1とPowerShell Core 6.1.1という2つの最新バージョンが存在します。PowerShell Core 6.1.1はPowerShell 5.1の上位互換かといえば必ずしもそうではなく、新しく追加された機能がある反面、MACやLinuxでも動作させるために、一部Windows特有の機能が削られていたりします。, PowerShell 5.1とPowerShell Core 6.1.1は同じWindows上に共存可能ですので、必要に応じて両方を使い分けるというのが一番賢い使い方でしょう。本稿では用途に応じて2つを使い分けることにします。以降、単にPowerShellという場合はWindows PowerShellとPowerShell Coreの両方を意味し、個別に呼ぶ場合はWindows PowerShellあるいはPowerShell Coreと呼ぶことにします。, PowerShell CoreはWindowsに標準添付されていませんので、自分でインストールする必要があります。その手順は次のとおりです (画面はWindows 10 バージョン1809の場合)。, https://github.com/PowerShell/PowerShell/releases, お使いのWindowsに合わせたインストールファイルをダウンロードします。例えば、Windows 10 64ビット版であれば「PowerShell_6.1.1_win_x64.msi」をダウンロードします。, ダウンロードしたmsiファイルをダブルクリックするか、または右クリックして [インストール] をクリックします。その後Setup Wizardが表示されますので、[Next] ボタンをクリックします。, ライセンス画面でAgreementにチェックを付けて [Next] ボタンをクリックします。, インストール先の選択画面が表示されますので、デフォルトでよければ、そのまま [Next] をクリックします。変更する場合は [Change] ボタンをクリックして変更してください。, インストール先の選択画面で、デフォルトでよければ [Next] ボタンをクリックする, オプションの選択画面が表示されます。ここでは全部にチェックを付けてから、[Next] ボタンをクリックします。, 確認画面で [Install] ボタンをクリックすると、インストールが始まります。, 「ユーザーアカウント制御」画面が表示されたら[はい] をクリックします。次の画面が表示されたら、[Finish] ボタンをクリックしてWizard画面を閉じます。, ここではWindows 10 バージョン1809での操作方法を説明します。他のバージョンでも大きな違いはありません。Windows PowerShellを起動するには、[スタート] メニュー → [Windows PowerShell] → [Windows PowerShell] または [Windows PowerShell (x86)] をクリックします。前者は64ビット版、後者は32ビット版です。[Windows PowerShell ISE] または [Windows PowerShell ISE (x86)]については別の記事にて解説します。, [スタート] メニュー → [Windows PowerShell] → [Windows PowerShell] または [Windows PowerShell (x86)] をクリックする, また、[スタート] メニューの右クリック → [Windows PowerShell] または [Windows PowerShell (管理者)]、あるいはエクスプローラ上の任意の場所で [Shift] + 右クリック → [PowerShellウィンドウをここに開く] でも起動できます。, PowerShell Coreがインストールされているなら、[スタート] メニュー → [PowerShell] → [PowerShell (x64)] または [PowerShell (x86)] をクリックするとPowerShell Coreが起動できます。, [スタート] メニュー → [PowerShell] → [PowerShell (x64)] または [PowerShell (x86)] をクリックする, PowerShell Coreの場合も同様に、エクスプローラの [Shift] + 右クリック → [PowerShell 6] → [Open here] または [Open here as Administrator] でも起動できます。, Windows PowerShell 5.1の起動画面、PowerShell 6.1.1の起動画面は次のとおりに、よく似ています。, ウィンドウのサイズや背景色が違っていますが、これはコマンドプロンプトの場合と同様にカスタマイズできます。大きな違いとして、画面からはわかりませんが、デフォルトの文字コードが、Windows PowerShellでは「Shift-JIS」であるのに対し、PowerShell Coreでは「UTF-8」になっています。, コマンドプロンプトでできることのほとんどがPowerShellでもでき、さらにコマンドプロンプトではできない多くの機能もPowerShellならできます。, コマンドプロンプトとPowerShellではコマンドの構文が異なるため、同じ機能でも入力するコマンドは異なりますが、コマンドプロンプトのコマンドのほとんどが同じコマンドとしてPowerShellでも利用できます。, この理由は、PowerShellの設定で、コマンドプロンプトのコマンドがエイリアスとして登録されており、PowerShellはコマンドプロンプトと同じコマンドを受け取ると、内部的にそれを同じ機能を持つPowerShellのコマンドに変換してから実行するのです。, 試しにPowerShellコンソールに「get-alias」と入力してみてください。現在登録されているエイリアスの一覧が表示されます。, これを見ると、「cd」コマンドが「Set-Location」に、「copy」コマンドが「Copy-Item」に、「del」コマンドが「Remove-Item」に、「dir」コマンドが「Get-ChildItem」にといった具合にエイリアスとして登録されていることがかわります。, また、このエイリアスにはコマンドプロンプトだけでなくLinuxのコマンドもエイリアスとして登録されているので、Linuxのコマンドの多くもそのまま使えます。なお、エイリアスはユーザーが自由に設定できるので、よく使うコマンドを短くわかりやすいコマンドとして登録しておけば作業効率が飛躍的に高まります。エイリアスの登録方法は別の記事で解説します。, なお、これまでPowerShellの“コマンド”と呼んできましたが、「Set-Location」や「Get-ChildItem」などは正式にはコマンドではなく「コマンドレット」と呼ばれています。そしてコマンドレットと、エイリアスや実行可能な関数・スクリプトを含めてPowerShellのコマンドと呼んでいます。以後はPowerShellではコマンドレットとコマンドを区別することにします。, PowerShellはコマンドレットを含むコマンドの実行環境であると同時に、スクリプト言語でもあります。コマンドプロンプトにも一連のコマンドを連続して実行するバッチファイル機能がありますが、PowerShellはより強力なスクリプト機能を持っていますので、Windowsのほとんどの操作をスクリプトで自動実行することができます。特にサーバーの管理にはほとんど不可欠のツールになります。PowerShell Coreでは、さらにMACやLinuxが混在したクロスプラットフォーム環境で利用できることもポイントです。スクリプトについても別の記事で解説します。, Windows PowerShellのコンソールに「dir c:」と入力すると次の画面が表示されます。, PowerShell Coreでも同じ結果が表示されます。また「get-childitem c:」と入力しても同じ結果が表示されます。エイリアスですから当然です。, PowerShellとコマンドプロンプトでは若干表示される内容に違いがあることがわかります。PowerShellでは属性が表示されるのに対し、コマンドプロンプトではボリュームラベルやシリアル番号、ファイルの合計容量・空き容量が表示されるという違いがあります。, 「Get-Alias」コマンドレットや「Get-ChildItem」コマンドレットで見たように、PowerShellのコマンドレット構文は動詞と名詞をハイフンで繋いだ「動詞―名詞」の形になっています。, コマンドレットの後に、半角スペースを空けてパラメーターを記述します。パラメーターはコマンドレットにより必須の場合もありオプションの場合もあります。各パラメーターは先頭にハイフンを付けます。「Get-ChildItem c:」コマンドレットは「Get-ChildItem -Path C:」の「-Path」パラメーター名を省略したものです。, コマンドレットの動詞としては、Getの他に、Add、Copy、Move、New、Open、Select、Set、Writeなどの標準動詞が多数用意されています。また名詞には、Alias、Content、Item、ChildItem、Object、Process、Serviceなどの標準名詞が多数用意されています。, このコマンドレットの命名規則を理解すれば、コマンドレット名からそれがどんな機能を持っているかが容易にわかります。逆にこんな機能を持ったコマンドレットを探したいという場合も、この命名規則から容易にコマンドレット名を推測できます。例えば、今日の日付を取得したいならば、「Get-Date」コマンドレットだろうと推測できます。またある程度の知識が必要になりますが、コマンドレットはユーザーが追加することもできます。, 利用できるコマンドレットの一覧は「Get-Command」コマンドレットを実行すれば表示できます。かなり数が多いので、1ページごとに停止させるなら「Get-Command | More」と入力します。コマンドレット以外のエイリアスや関数、スクリプトを含めた全コマンドを表示させるなら「Get-Command *」または「Get-Command * | More」と入力します。「|」はパイプラインを意味しており、「More」は1ページごとに表示するコマンドです。, PowerShellのヘルプを参照するには「Get-Help」コマンドレットを使います。パラメーター無しで実行するとPowerShellの概要が表示されます。なお、PowerShell Coreのヘルプは現在日本語化されていません。ヘルプの表示が長い場合はヘルプの最後までスクロールされてしまいますので、このままでは見にくいでしょう。, 「Get-Help」の代わりに「Help」を使うと、1ページごとに表示が停止しますので、この方が見やすくなります。「Help」はコマンドレットではなく、「Get-Help | more」のラッパー関数です。ラッパー関数というと難しく思われるでしょうが、エイリアスのようなものと思えばよいでしょう。ですから「Help」の代わりに「Get-Help | more」と入力しても同じです。個々のコマンドレットに関するヘルプを表示するには「Help -Name コマンドレット名」と入力します。「-Name」は省略可能です。, 「Helpコマンドレット名 -Detailed」と「-Detailed」パラメーターを付けると詳細なヘルプを表示します。また「Helpコマンドレット名 -Full」と「-Full」パラメーターを付けると最大に詳細なヘルプを表示します。, 「Help」、「Get-Help」には「-Online」パラメーターもあります。このパラメーターを付けるとブラウザが開いて、オンラインのヘルプが表示されます。ただし、すべてのヘルプがオンラインで表示できるわけではありません。, help get-help -online」を実行するとブラウザでオンラインヘルプが表示される, PowerShellのヘルプ内容は最新版に更新可能です。ただし、自動的には更新されませんので、手動で更新します。更新はPowerShellを「管理者として実行」して、以下の「Update-Help」コマンドレットを実行します。, なお、PowerShell Coreのヘルプは日本語版が現在はありません。また、Windows PowerShellでもいくつかのヘルプは日本語化されていません。そのため、まず英語版のヘルプを更新してから日本語版のヘルプを更新します。こうすれば日本語化されていないヘルプに関しては英語版を表示することができます。中には英語版のヘルプがないものもあります。, 「-Force」パラメーターは一日に何度も「Update-Help」コマンドレットを実行する場合に必要になります。このパラメーターがないと「Update-Help」コマンドレットは一日に一回しか実行できません。上記コマンドレットを実行中は次のような画面が表示されます。, 上記コマンドレットを終了すると次のような画面が表示されます。赤字で更新できなかったモジュールが表示されます。, PowerShellを使い続けるのであれば、時々「Update-Help」コマンドレットを実行するとよいでしょう。, PowerShellでコマンドレットを扱う上で知っておきたいのが「パイプライン」です。パイプラインはコマンドプロンプトにもありますが、その内容は大きく異なっています。そもそもパイプラインとはどういうものかというと、あるコマンドの実行結果を別のコマンドに引き渡すためのつなぎの役割をするものです。次のコマンドがPowerShellのパイプラインの例です。, 「Get-ChildItem -Path c:Windows | More」(-Pathは省略可), 「Get-ChildItem」は現在のディレクトリ情報を取得するコマンドレットです。「More」もコマンドプロンプト時代から利用できるコマンドの1種です。「|」がパイプラインで、「Get-ChildItem -Path c:Windows」の実行結果を「More」コマンドに引渡し、1ページごとに表示します。何かキーを押すと次のページを表示します。, 参考として、コマンドプロンプトでも同様のことを実現でき、 Get-WMIObject Win32_Processor >> d:temp$today.txt」, 1行目では「Get-Date」コマンドレットで今日の日付を20181206 (2018年12月6日) の形式で取得し「$today」という名前をつけた変数に格納します。, 2行目でBIOS情報を取得し、d:tempフォルダに [日付].txtのファイル名で書き込みます。「>」はリダイレクト記号で、同名ファイルがなければ新規作成し、同名ファイルがあれば上書きします。3行目でCPU情報を取得し、[日付].txtファイルに追加書き込みします。「>>」は追加書き込みのリダイレクト記号です。, 「Get-WMIObject」コマンドレットでは、この他にドメイン情報「Win32_NTDomain」、共有フォルダ情報「Win32_Share」、物理メモリ情報「Win32_PhysicalMemory」、ハードディスク情報「Win32_LogicalDisk」インストールされたアプリケーション情報「Win32_Product」インストールされたHotFix情報「Win32_QuickFixEngineering」、Windowsの起動時に実行されるコマンド情報「Win32_StartupCommand」、アクティベーション情報「Win32_WindowsProductActivation」、サービス情報「Win32_Service」など、システムに関わるほとんどの情報が取得できます。なお、「Get-WMIObject」コマンドレットはWindows PowerShellでのみ利用できるコマンドレットで、残念ながらPowerShell Coreでは利用できません。, 次のコマンドはネットワークアダプターの一覧を取得し、CSVファイル (d:tempnetadapter.csv) に書き込みます。「-Encoding Unicode」を指定しないと日本語が文字化けします。, 「Get-NetAdapter | Export-Csv d:tempnetadapter.csv -Encoding Unicode」, 次のコマンドはレジストリのキー (HKCU:softwaremicrosoft) を取得し、CSVファイル (d:tempregistry.csv) に書き込みます。, 「Set-Location HKCU:SoftwareMicrosoft 「dir c:Windows | More」でできます。, 表示の形式が異なっていますが内容は同じものです。これを見る限りPowerShellもコマンドプロンプトもパイプラインは同じ機能に見えますが、内実はまったく異なっています。, コマンドプロンプトではパイプラインで引き渡すことができるのは文字列だけです。一方PowerShellでは「オブジェクト」を引き渡します。「More」コマンドは文字列を表示するだけの機能しかありませんので、結果として同じになっているだけです。, ここで「オブジェクト」とは何なのかと思った方もいるでしょう。オブジェクトとはどういうものかを見るために、 (※ファイルサイズの単位の話はのちほど詳しく説明します!), Windowsで、「指定のパス配下」の「指定のサイズ以上」のファイル一覧を取得する方法を紹介します。, まず、ファイルの一覧を取得するフォルダのサイズを確認しておきましょう。この記事では、私のパソコンのフォルダを使って解説していきます。, フォルダを右クリックすると、このようにサイズが確認できます。約70MBで5~10秒程度でした。, 以前、会社で10GB(ギガバイト)程度のフォルダから一覧を取得したら、2~3時間かかりました。, ファイル一覧を取得するコマンドのひな形がこちらです。コマンドの意味は記事の最後で紹介しているので、気になる方は先にこちらをご覧ください!, たとえば、3MB以上のファイル一覧を出力したい場合は、1048576*3 = 3145728 を指定すればよいですね。, ファイルのサイズ感がわからない方は、とりあえず、1MBの1048576を指定しましょう!, 上記の①~③を、ひな形にあてはめると、このようになります。①~③を各自の環境・目的に合わせて置き換えましょう。, コマンドプロンプトって何?と気になる方は、こちらの記事で解説しているのでご確認くださいね。 「($a+$b)*$c」なら9となります。, PowerShellにはユーザーが作成する変数の他に、PowerShellが自動的に作成する自動変数もあります。現在設定されている変数の一覧は「Get-Variable」で確認できます。, 自動変数の中で最もよく使う変数が「$_」です。先に示した「Get-ChildItem c:Windows | Where-Object {$_.Length -ge 1MB}」コマンドでも使っています。この「$_」変数にはパイプラインの前段の実行結果が格納されます。「$_」の後の「.Length」は「$_」からサイズ (Length) を取り出すための指定です。, PowerShellでは関数が利用できます。プログラミングをしたことがないとあまり馴染みがないかもしれませんが、関数というのは、プログラムやコマンド呼び出して、そこに値を与えて何らかの処理を行い、そこで得られた結果を得るプログラムです。PowerShellではユーザーが簡単に関数を作成することができます。また、PowerShellがあらかじめ作成している関数もあります。作成されている関数の一覧は「Get-ChildItem Function:」で表示できます。, この一覧にあるように、これまでで紹介した「Help」コマンドや「More」コマンドも実は関数です。ちなみにWindowsには外部コマンドとしてhelp.exe、more.comがありますが、PowerShellで「Help」あるいは「More」として実行する場合は関数の方が実行されます。, 先ほどの関数の説明で、「プログラムやコマンド呼び出して、そこに値を与えて何らかの処理を行い・・・」と書きましたが、値を関数に与えるためには、関数の構文の中に、この「引数」というものを書く必要があります。値を受け取るには、そこに箱を用意しておく必要があるのだ、という風に感じてもらえればと思います。引数は省略可能です。, では、例として「Get-ChildItem c:temp -recurse | Where-Object {$_.Length -eq 0} | Remove-Item」という先程のコマンドを「del0」という名前の関数にしてみましょう。, 作成した関数を実行するには「del0 c:temp」のように関数名(del0)を記述し、その後ろに削除対象となるフォルダ(c:temp)を引数として指定します。この引数が関数内の自動変数の「$args」に渡されて実行されます。, このように関数を使うと、定型処理の際に長いコマンドをその都度入力することなく簡単に実行できるようになりますので、PC操作が省力化されます。del0という関数を作っておき、あとは引数(ここではc:temp)の部分を変えるだけでいろいろと応用ができます。, なお、関数はPowerShellのウィンドウが閉じると消えますので、保存しておきたい場合はスクリプトファイルに保存するとよいでしょう。スクリプトについては次回の記事で解説します。, PowerShellではファイルやフォルダだけでなくさまざまなリソースを操作できます。ハードウェアの情報やレジストリも操作できます。次のコマンドは、BIOS情報とCPU情報を取得し、dドライブ直下の「temp」というフォルダ内に今日の日付をファイル名にしたテキストファイルに保存します。, 「$today = (Get-Date).ToString(“yyyyMMdd”)

Aquos スローモーション 撮影 5, ドラクエ10 天地雷鳴士 めいどうふうま 39, 犬 目の周り できもの 4, パワプロ アンドロメダ 矢部 6, 化学 分野 就職 4, 長野県 譲渡 猫 19, パーマ メンズ ゆるめ 18, Bpg To Jpg 12, インスタ メッセージ 芸能人 10, マーク マグワイア 腕 周り 5, アラフィフ 婚 活 ブログ 5, 舞鶴教育隊 修了 式 6, ロレックス 16220 買取 8, メタル ギア ソリッド 5 レベル 上げ方 6, 彼女 酔うと くっつく 5, ポケモン初代 ナッシー 技構成 23, Gpu Test Mac 4, 風間 ノア ピラメキーノ 4, Googleスライド フローチャート テンプレート 5, ノア 三 列目シート外し方 22, クリシュナ アルジュナ 教え 5, Kernel32 Dll Gettickcount 4, Line 動画 保存 17, 海外 空 撮 8, Resident Evil 8 Trailer 4, Crystaldiskinfo 残り寿命 表示されない 5, Nbox グリル メッシュ 取り付け 方 7, インスタ フォロー したい けど できない 9, 大阪 乳腺外科 名医 5, Pixel3 ロック画面 温度 5, 赤ちゃん 癇癪 7ヶ月 4, ニューバランス 幅 伸びる 11, 天理大学 柔道部 部員 5, 義母 出産報告 しない 6, ウイイレ レジェンド 最新 12, 土地 家屋 調査士ブログ 11, Sigma Fp レビュー 5, Akg K812 Lemo 9, 東芝レグザ ブルーレイ 故障 6, 6r35 6r15 違い 21, Vba コマンドボタン 文字サイズ 8, 通気性 最強 靴 4, 東京 蛇 生息 4, 玄関 壁紙 ブルー 4, 短く て かっこいい曲 ピアノ 5, デジタルサイネージ リース 価格表 8, Shu 美容師 Als 32, Firefox 音 ずれ 17, Heat20 Zeh 違い 8, Fire Hd 8 使いこなす 4, ロッテ 百貨店 おすすめ 4, 送別会 英語 歌 4, Sf 冒険 映画 5, Fig 意味 スラング 15, Sql 使い方 Excel 4, 東京ガス 給湯器 エラーコード 251 6, マイクラ 空洞音 探し方 7, Gogoanime 東京 喰 種 13, Iamshum What You Waiting 和訳 16, 仮面ライダー 平成二期 ランキング 45, 換気扇 キャップ 外れない 4, Destiny2 孤独と影 評価 4, 荷締めベルト 100均 セリア 11, コイン精米機 飯田 市 7, モバイルpasmo クレジットカード E510006 7, ポケモン 海外の反応 炎上 9, 緒方 甲斐 なんj 14, R1200gs サービス ランプ 13, Flex 3 英語 教科書 5, Digno ケータイ2 未使用 4, 犬 滑り止め マット 無印 9, レンジフード 吸気 連動 4, 紅蓮華 カラオケ 点数 5, 日本 立腰 協会 10, 積水ホームテクノ ユニット バス 取扱説明書 5, Stripe Connect とは 30, 函館 白百合 学園高等学校 進学 実績 9, ダイソー Ipadケース 2020 13, 山梨 U9 サッカーフェスティバル 5, Alert Keyboard Not Found Dell 12, 仮審査 本審査 マイカーローン 8, Epson Scan2 複数 枚 4, Mhw 見た目装備 スレ 9, 篆書 体 雲 8, 彼氏 体調不良 寂しい 5, 結婚 不幸 2ch 5, おじさまと猫 50話 ネタバレ 9, 女性 トランクス ユニクロ 21, あつ森 噴水 リメイク 6, Ndロードスター ナビ 取り外し 10,

Comments are closed.