2017年1月31日

【PowerShell】ユーザーからの入力を受け付ける


ユーザーからの入力を受け付けるには、Read-Hostを使用します。

構文
Read-Host [[-Prompt] <プロンプト>] [-AsSecureString]

PS C:\work> $a = Read-Host "IDを入力してください。"
IDを入力してください。: 1002308
PS C:\work> Write-Host $a
1002308
この例では、変数$aに入力した文字列を格納しています。

セキュア文字列

AsSecureStringパラメータを使用すると、入力文字が*で表されようになります。
PS C:\work> $pass = Read-Host -AsSecureString "パスワーを入力してください"
パスワードを入力してください: *******
PS C:\work> Write-Host $pass
System.Security.SecureString
入力した文字列はSecureStringオブジェクトで返されます。


2017年1月30日

【PowerShell】メッセージボックスを表示させる


PowerShellは.Net Frameworkを利用することができますので、メッセージボックスを表示させることも出来ます。

まずは、アセンブリをロードさせます。
PS C:\work> [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

GAC    Version        Location
---    -------        --------
True   v4.0.30319     C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System....

次にMessageBoxクラスのShowメソッドを使って表示させます。
PS C:\work> [System.Windows.Forms.MessageBox]::Show("Hello World.")




メッセージボックスのボタンとアイコンを指定する

メッセージボックスのボタンやアイコンを指定するには次のようにします。
PS C:\work> [System.Windows.Forms.MessageBox]::Show("保存が完了しました。", "情報", "OK", "Information")




[System.Windows.Forms.MessageBox]::Show("あなたが落としたのはこの金の斧ですか?", "質問", "YesNoCancel", "Question")



Yes!



2017年1月29日

【本】僕らが毎日やっている最強の読み方;新聞・雑誌・ネット・書籍から「知識と教養」を身につける70の極意



僕らが毎日やっている最強の読み方;新聞・雑誌・ネット・書籍から「知識と教養」を身につける70の極意』 著者:池上 彰、 佐藤 優

元NHKのキャスターでジャーナリストの池上彰氏と、元外務省主任分析官で作家の佐藤優氏の共著です。この本もまた電車内の広告を見て面白そうだったので買ってしまいました。

テレビでもお馴染みの池上氏ですが、なんであんなにいろいろなことを知っているのかと思っていましたが、この本を読んで謎が解けました。すごいですこの二人。毎日半端ない量の書物を読んでいます。

毎日読んでいる新聞は、定期購読や駅の売店で購入するものなどを合わせて池上氏が11紙、佐藤氏が10紙。これプラス地方紙、海外紙が数紙。
そして、ほぼ毎号目を通す雑誌が池上氏が29誌、佐藤氏が55誌。
さらにチェックしている国内・海外のサイトが数十サイト。
それとこのほかに書籍を月に数百冊読んでいます。

2017年1月28日

【PowerShell】Shift-JisのXMLファイルのデータを書き換える


Shift-JisのXMLファイルのデータを書き換える方法です。

例えば次のようなXMLファイルがあったとします。
ファイル名は、users.xmlで、文字コードはShift-Jisで保存されています。
<User>
    <Person>
        <Name>佐藤</Name>
        <Phone>111-222-333</Phone>
        <Email>sato@nantoka.com</Email>
    </Person>
    <Person>
        <Name>鈴木</Name>
        <Phone>444-555-6666</Phone>
        <Email>suzuki@nantoka.com</Email>
    </Person>
</User>


このXMLファイルのデータを書き換えるには次のようにします。
PS C:\work> $person = $x.User.Person[0]
PS C:\work> $person.Phone = "888-888-8888"
PS C:\work> $Encoding = [System.Text.Encoding]::GetEncoding("Shift_Jis")
PS C:\work> $xmlWriter = New-Object System.Xml.XmlTextWriter("C:\work\users.xml", $Encoding)
PS C:\work> $xmlWriter.Formatting = "Indented"
PS C:\work> $xmlWriter.Indentation = "4"
PS C:\work> $x.Save($xmlWriter)
PS C:\work> $xmlWriter.Close()
PowerShellでは扱う文字コードがデフォルトでUTF-8になっていますので、XmlTextWriterのエンコーディングでShift-Jisを指定して読み込む必要があります。
そして、Formatting で「Indented」を指定してあげることにより改行が行われ見やすくなります。6行目の「Indentation」は改行幅です。あとは、Saveで保存して、最後に Close()メソッドでXmlTextWriterをクローズしています。


Get-Contentで確認すると、確かに書き換えられてることが確認できます。
PS C:\work> Get-Content .\users.xml
<?xml version="1.0" encoding="shift_jis"?>
<User>
    <Person>
        <Name>佐藤</Name>
        <Phone>888-888-8888</Phone>
        <Email>sato@nantoka.com</Email>
    </Person>
    <Person>
        <Name>鈴木</Name>
        <Phone>444-555-6666</Phone>
        <Email>suzuki@nantoka.com</Email>
    </Person>
</User>



2017年1月27日

【PowerShell】XMLファイルのデータを書き換える


XMLファイルのデータを書き換えるには次のようにします。

例えば、test.xmlというXMLファイルがあったとします。
ちなみに文字コートはUTF-8とします。
<User>
    <Person>
        <Name>佐藤</Name>
        <Phone>111-222-3333</Phone>
        <Email>sato@nantoka.com</Email>
    </Person>
    <Person>
        <Name>鈴木</Name>
        <Phone>444-555-6666</Phone>
        <Email>suzuki@nantoka.com</Email>
    </Person>
</User>

書き換えて保存

このXMLファイルのデータを書き換えるには次のようにします。
ここでは、佐藤さんの電話番号を「777-888-999」に変更しています。
PS C:\work> [xml]$x = Get-Content .\test.xml -Encoding UTF8
PS C:\work> $person = $x.User.Person[0]
PS C:\work> $person.Phone = "777-888-999"
PS C:\work> $x.Save("C:\work\test.xml")


書き変わったか確認
PS C:\work> Get-Content .\test.xml -Encoding UTF8
<User>
  <Person>
    <Name>佐藤</Name>
    <Phone>777-888-999</Phone>
    <Email>sato@nantoka.com</Email>
  </Person>
  <Person>
    <Name>鈴木</Name>
    <Phone>444-555-6666</Phone>
    <Email>suzuki@nantoka.com</Email>
  </Person>
</User>
「777-888-999」に変更されているのが確認できると思います。



2017年1月26日

【PowerShell】XMLファイルのデータを読み込む


XMLファイルのデータを読み込むには次のようにします。

例えば、test.xmlというXMLファイルがあったとします。
<User>
    <Person>
        <Name>佐藤</Name>
        <Phone>111-222-3333</Phone>
        <Email>sato@nantoka.com</Email>
    </Person>
    <Person>
        <Name>鈴木</Name>
        <Phone>444-555-6666</Phone>
        <Email>suzuki@nantoka.com</Email>
    </Person>
</User>

このXMLファイルのデータを読み込むには次のようにします。
PS C:\work> [xml]$x = Get-Content .\test.xml
PS C:\work> $person = $x.User.Person[0]
PS C:\work> $person.Name
佐藤
PS C:\work> $person.Phone
111-222-3333
PS C:\work> $person.Email
sato@nantoka.com
PS C:\work>
PS C:\work> $person = $x.User.Person[1]
PS C:\work> $person.Name
鈴木
PS C:\work> $person.Phone
444-555-6666
PS C:\work> $person.Email
suzuki@nantoka.com


2017年1月25日

【PowerShell】環境変数を設定する






環境変数を設定するには以下のようにします。

一時的に設定する

一時的に環境変数に値を設定するには、「$env:変数名」に「=」で値を設定するだけです。
PS C:\work> $env:MYENV = "This is my env."
この例では、「MYENV」という名前の変数に「This is my env.」という値を設定しています。

PS C:\work> $env:MYENV
This is my env.
実際に値を確認してみると、このように先ほど設定した値が表示されます。

ちなみに、この設定した変数は、現在起動しているプロンプト内だけで使うことが出来ます。


永続的に設定する

現在のユーザーで使えるユーザー環境変数、またはマシン上のすべてのユーザーで使えるシステム環境変数に値を設定するには次のようにします。
PS C:\work> [System.Environment]::SetEnvironmentVariable("MyUserEnv", "This is my user env.", "User")
この例では、「MyUserEnv」という名前のユーザー環境変数に「This is my user env.」という値を設定しています。
SetEnvironmentVariableメソッドの3つ目のパラメータは、ターゲットとなる環境変数を表しています。
ユーザー環境変数をターゲットとする場合は、"User"、システム環境変数をターゲットとする場合は、"Machine"とします。

ちなみに設定した値はすぐには使えません。
新たにプロンプト画面を起動したりプロセスを起動したあとに使えるようになります。


システム環境変数のPathに値を追加する

システム環境変数のPathに新たなパスを追加するには次のようにします。
PS C:\work> $oldSystemPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
PS C:\work> $oldSystemPath += ";c:\work"
PS C:\work> [System.Environment]::SetEnvironmentVariable("Path", $oldSystemPath, "Machine")
GetEnvironmentVariableメソッドで現在の設定値を取得して、そこに新たなパスを追加して、それをSetEnvironmentVariableメソッドで環境変数に設定しています。


<関連記事>
【PowerShell】環境変数を表示する
【PowerShell】インストールされているプログラムの一覧を取得する
【PowerShell】現在の日付と時刻を取得する
【PowerShell】システム時刻を指定した時刻に変更する

2017年1月24日

【PowerShell】環境変数を表示する



環境変数を表示するには次のようにします。

一覧表示

環境変数の一覧を表示するには「Get-ChildItem env:」と実行します。
PS C:\work> Get-ChildItem env:

Name                           Value
----                           -----
ALLUSERSPROFILE                C:\ProgramData
APPDATA                        C:\Users\hosopro\AppData\Roaming
CommonProgramFiles             C:\Program Files\Common Files
CommonProgramFiles(x86)        C:\Program Files (x86)\Common Files
CommonProgramW6432             C:\Program Files\Common Files
COMPUTERNAME                   PC01
ComSpec                        C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK               NO
FPS_BROWSER_APP_PROFILE_STRING Internet Explorer
FPS_BROWSER_USER_PROFILE_ST... Default
HOMEDRIVE                      C:
HOMEPATH                       \Users\hosopro
LOCALAPPDATA                   C:\Users\hosopro\AppData\Local
LOGONSERVER                    \\PC01
MOZ_PLUGIN_PATH                C:\Program Files\Tracker Software\PDF Viewer\Win32\
NUMBER_OF_PROCESSORS           8
OneDrive                       C:\Users\hosopro\OneDrive
OS                             Windows_NT
Path                           C:\Program Files (x86)\Embarcadero\Studio\18.0\bin;C:\Users\Public\Documents\Embarcadero\Studio\18.0\Bpl;C:\Program Files (x86)\Embarcadero\Studio\18.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\18.0\Bpl\Win64;C:\...
PATHEXT                        .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
PROCESSOR_ARCHITECTURE         AMD64
PROCESSOR_IDENTIFIER           Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL                6
PROCESSOR_REVISION             2a07
ProgramData                    C:\ProgramData
ProgramFiles                   C:\Program Files
ProgramFiles(x86)              C:\Program Files (x86)
ProgramW6432                   C:\Program Files
PSModulePath                   C:\Users\hosopro\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\PowerShell\Modules\...
PUBLIC                         C:\Users\Public
SESSIONNAME                    Console
SystemDrive                    C:
SystemRoot                     C:\WINDOWS
TEMP                           C:\Users\hosopro\AppData\Local\Temp
TMP                            C:\Users\hosopro\AppData\Local\Temp
USERDOMAIN                     PC01
USERDOMAIN_ROAMINGPROFILE      PC01
USERNAME                       hosopro
USERPROFILE                    C:\Users\hosopro
VS140COMNTOOLS                 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\
windir                         C:\WINDOWS
windows_tracing_flags          3
windows_tracing_logfile        C:\BVTBin\Tests\installpackage\csilogfile.log
コマンドプロンプトのsetのようなものですが、長い値のものは途中で切られてしまいます。例えばPathなどはかなり長いので途中までしか表示されていません。

変数を指定して表示

特定の環境変数の値を表示したい場合は、「$env:変数名」と実行します。
PS C:\work> $env:Path
C:\Program Files (x86)\Embarcadero\Studio\18.0\bin;C:\Users\Public\Documents\Embarcadero\Studio\18.0\Bpl;C:\Program Files (x86)\
Embarcadero\Studio\18.0\bin64;C:\Users\Public\Documents\Embarcadero\Studio\18.0\Bpl\Win64;C:\Program Files (x86)\NVIDIA Corporat
ion\PhysX\Common;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Share
d\Windows Live;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
この例では、「Path」の値を表示しています。
一覧表示したときには途中までしか表示されてませんでしたが、値のすべてが表示されています。


<関連記事>
【PowerShell】環境変数を設定する
【PowerShell】インストールされているプログラムの一覧を取得する
【PowerShell】現在の日付と時刻を取得する
【PowerShell】システム時刻を指定した時刻に変更する

2017年1月23日

【PowerShell】指定したドライブのシステム復元機能を無効にする


指定したドライブのシステム復元機能を無効にするには、Disable-ComputerRestoreを使用します。

構文
Disable-ComputerRestore [-Drive] <ドライブ>

Cドライブを無効化する

Cドライブのシステム復元機能を無効化するには、次のように実行します。
PS C:\work> Disable-ComputerRestore -Drive "C:\"

システム復元の状態を確認する

実際、システム復元機能が無効化されているか確認するには、rstrui.exeを使います。
PS C:\work> rstrui.exe


rstrui.exeを実行して、このような画面が表示されてくれば無効化されています。



2017年1月22日

【PowerShell】指定したドライブのシステム復元機能を有効にする


指定したドライブのシステム復元機能を有効にするには、Enable-ComputerRestoreを使用します。

構文
Enable-ComputerRestore [-Drive] <ドライブ>

Cドライブを有効化する

Cドライブのシステム復元機能を有効化するには、次のように実行します。
ちなみにこのシステムの復元機能はデフォルトで有効になっています。
PS C:\work> Enable-ComputerRestore -Drive "C:\"

システム復元の状態を確認する

実際、システム復元機能が有効化されているか確認するには、rstrui.exeを使います。
PS C:\work> rstrui.exe


rstrui.exeを実行して、このような画面が表示されてくれば有効化されています。



2017年1月21日

【PowerShell】ローカルコンピューターを指定されたシステム復元ポイントに復元する


ローカルコンピューターを指定されたシステム復元ポイントに復元するには、Restore-Computerを使用します。

構文
Restore-Computer [-RestorePoint] <シーケンス番号>

指定したシステム復元ポイントに復元

RestorePointパラメータで復元ポイントのシーケンス番号を指定して復元を行います。
(シーケンス番号は、Get-ComputerRestorePointコマンドレットで確認できます。)
PS C:\work> Restore-Computer -RestorePoint 27
この例では、シーケンス番号27の復元ポイントに復元を行っていますが、注意してほしいのは実行するとすぐに復元が始まる点です。シーケンス番号は慎重に入力してください。

実行する前に確認する

Confirmパラメータを使用すれば、実際に復元を実行する前に確認することも出来ます。
PS C:\work> Restore-Computer -RestorePoint 27 -Confirm

確認
この操作を実行しますか?
対象 "PC01" に対して操作 "Restore-Computer" を実行しています。
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"):

実行

実際に実行すると、私の環境(Windows10)で約10分ぐらいで復元が完了しました。

完了すると自動的にパソコンが再起動され、次のようなメッセージが表示されてきます。


実行後

実行後にGet-ComputerRestorePointコマンドレットで確認すると、シーケンス番号28に「復元の操作」が追加されています。
PS C:\work> Get-ComputerRestorePoint

CreationTime           Description                    SequenceNumber    EventType         RestorePointType
------------           -----------                    --------------    ---------         ----------------
2017/01/02 15:59:59    スケジュールされたチェック...  22                BEGIN_SYSTEM_C... 7
2017/01/09 11:32:31    ebi.BookReader4 をインスト...  23                BEGIN_SYSTEM_C... APPLICATION_INSTALL
2017/01/10 22:04:07    Installed EpsonNet Print       24                BEGIN_SYSTEM_C... APPLICATION_INSTALL
2017/01/17 22:24:26    スケジュールされたチェック...  26                BEGIN_SYSTEM_C... 7
2017/01/20 19:43:49    Test Check Point               27                BEGIN_SYSTEM_C... APPLICATION_INSTALL
2017/01/21 17:44:26    復元の操作                     28                BEGIN_SYSTEM_C... 6


2017年1月20日

【PowerShell】ローカルコンピュータ上にシステムの復元ポイントを作成する


ローカルコンピュータ上にシステムの復元ポイントを作成するには、Checkpoint-Computerを使用します。

構文
Checkpoint-Computer [-Description] <説明> [[-RestorePointType] <復元ポイントタイプ>]

復元ポイントの作成

復元ポイントを作成するには、Descriptionパラメータを使って「説明」を設定する必要があります。この「説明」は必須です。
PS C:\work> Checkpoint-Computer -Description "Test Check Point"

では、Get-ComputerRestorePointで確認してみます。
PS C:\work> Get-ComputerRestorePoint

CreationTime           Description                    SequenceNumber    EventType         RestorePointType
------------           -----------                    --------------    ---------         ----------------
2017/01/02 15:59:59    スケジュールされたチェック...  22                BEGIN_SYSTEM_C... 7
2017/01/09 11:32:31    ebi.BookReader4 をインスト...  23                BEGIN_SYSTEM_C... APPLICATION_INSTALL
2017/01/10 22:04:07    Installed EpsonNet Print       24                BEGIN_SYSTEM_C... APPLICATION_INSTALL
2017/01/17 22:24:26    スケジュールされたチェック...  26                BEGIN_SYSTEM_C... 7
2017/01/20 19:43:49    Test Check Point               27                BEGIN_SYSTEM_C... APPLICATION_INSTALL
最後の行に先ほど作成した「Test Check Point」があるのが分かります。


タイプを指定して作成

復元ポイントのタイプを指定して作成することも出来ます。デフォルトはAPPLICATION_INSTALLです。
PS C:\work> Checkpoint-Computer -Description "Test Check Point 2" -RestorePointType MODIFY_SETTINGS

ちなみに復元ポイントのタイプは下記の5つです。
タイプ 説明
APPLICATION_INSTALLアプリケーションのインストール
APPLICATION_UNINSTALLアプリケーションのアンインストール
DEVICE_DRIVER_INSTALLデバイスドライバのインストール
MODIFY_SETTINGSシステムの設定変更
CANCELLED_OPERATION復元ポイントの設定取り消し


2017年1月19日

【PowerShell】ローカルコンピュータ上の復元ポイントを取得する


ローカルコンピュータ上の復元ポイントを取得するには、Get-ComputerRestorePointを使用します。

構文
Get-ComputerRestorePoint [[-RestorePoint] <シーケンス番号>]

Get-ComputerRestorePoint [-LastStatus]

全ての復元ポイントを取得

パラメータ無しでGet-ComputerRestorePointと実行すると全ての復元ポイントを取得できます。
PS C:\work> Get-ComputerRestorePoint

CreationTime           Description                    SequenceNumber    EventType         RestorePointType
------------           -----------                    --------------    ---------         ----------------
2017/01/02 15:59:59    スケジュールされたチェック...  22                BEGIN_SYSTEM_C... 7
2017/01/09 11:32:31    ebi.BookReader4 をインスト...  23                BEGIN_SYSTEM_C... APPLICATION_INSTALL
2017/01/10 22:04:07    Installed EpsonNet Print       24                BEGIN_SYSTEM_C... APPLICATION_INSTALL
2017/01/17 22:24:26    スケジュールされたチェック...  26                BEGIN_SYSTEM_C... 7

指定の復元ポイントを取得

RestorePointパラメータを使用すると、指定したシーケンス番号の復元ポイントを取得出来ます。
PS C:\work> Get-ComputerRestorePoint -RestorePoint 24, 26

CreationTime           Description                    SequenceNumber    EventType         RestorePointType
------------           -----------                    --------------    ---------         ----------------
2017/01/10 22:04:07    Installed EpsonNet Print       24                BEGIN_SYSTEM_C... APPLICATION_INSTALL
2017/01/17 22:24:26    スケジュールされたチェック...  26                BEGIN_SYSTEM_C... 7

最後に試行したときのステータスを表示

最後に試行したときのステータスを表示するには、LastStatusパラメータを使用します。
PS C:\work> Get-ComputerRestorePoint -LastStatus
最後に試行したコンピューターの復元は失敗しました。



2017年1月18日

【PowerShell】コンピュータを再起動する



コンピュータを再起動するには、Restart-Computerを使用します。

構文
Restart-Computer

ローカルコンピュータを再起動する

Restart-Computerと実行するだけで再起動が始まります。
PS C:\work> Restart-Computer

確認のメッセージを表示

再起動する際に確認のメッセージを表示させるには、Confirmパラメータを使用します。
PS C:\work> Restart-Computer -Confirm

確認
この操作を実行しますか?
対象 "localhost (PC01)" に対して操作 "ローカル シャットダウン アクセス権
を有効にしてコンピューターを再起動します。" を実行しています。
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): 

強制的に再起動する

強制的に再起動するには、Forceパラメータを使います。
このForceパラメータを付けると、未保存のファイルがあっても有無を言わさず再起動されます。
PS C:\work> Restart-Computer -Force


<関連記事>
【PowerShell】コンピュータをシャットダウンする
【PowerShell】ローカルコンピューターを指定されたシステム復元ポイントに復元する
【PowerShell】ローカルコンピュータ上にシステムの復元ポイントを作成する
【PowerShell】ローカルコンピュータ上の復元ポイントを取得する
【PowerShell】現在の日付と時刻を取得する

2017年1月17日

【PowerShell】コンピュータをシャットダウンする



コンピュータをシャットダウンするには、Stop-Computerを使用します。

構文
Stop-Computer

ローカルコンピュータをシャットダウン

Stop-Computerと実行するだけでシャットダウン出来ます。
PS C:\work> Stop-Computer

確認のメッセージを表示

ただ、Stop-Computerと実行するといきなりシャットダウンが始まってしまいます。
もし、シャットダウンの際に確認のメッセージを出したいときは次のようにします。
PS C:\work> Stop-Computer -Confirm

確認
この操作を実行しますか?
対象 "localhost (PC01)" に対して操作 "Stop-Computer" を実行しています。
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): 

強制的にシャットダウン

強制的にシャットダウンするには、Forceパラメータを使います。
このForceパラメータを付けると、未保存のファイルがあっても有無を言わさずシャットダウンされます。
PS C:\work> Stop-Computer -Force


<関連記事>
【PowerShell】コンピュータを再起動する
【PowerShell】ローカルコンピューターを指定されたシステム復元ポイントに復元する
【PowerShell】ローカルコンピュータ上にシステムの復元ポイントを作成する
【PowerShell】ローカルコンピュータ上の復元ポイントを取得する
【PowerShell】現在の日付と時刻を取得する

2017年1月16日

【PowerShell】指定した期間動作を一時停止する



Start-Sleep コマンドレットを使うことにより、指定した期間動作を一時停止することが出来ます。

構文
Start-Sleep [-Seconds] <秒数>

Start-Sleep -Milliseconds <ミリ秒数>

指定した秒数動作を停止

秒数を指定するにはSecondsパラメータ(省略形:s)を使います。
PS C:\work> Start-Sleep -s 10
この例では、10秒停止しています。


指定したミリ秒数動作を停止

ミリ秒数を指定するにはMillisecondsパラメータ(省略形:m)を使います。
PS C:\work> Start-Sleep -m 300
この例では、300ミリ秒停止しています。


<関連記事>
【PowerShell】コマンドの実行時間を計測する
【PowerShell】コマンド履歴からコマンドを実行する
【PowerShell】コマンド履歴に追加する
【PowerShell】コマンド履歴をクリアする
【PowerShell】入力されたコマンドの履歴を取得する

2017年1月15日

【PowerShell】コンソール画面で計算を行う


PowerShellのコンソール画面上で計算が出来ます。

以前からあるコマンドプロンプトでは出来ませんでしたが、PowerShellのコンソール上では出来るようになっています。ちょっとした計算をするには便利ですね。

足し算

PS C:\work> 2 + 3
5

引き算

PS C:\work> 10 - 6
4

掛け算

PS C:\work> 5000 * 1.08
5400

割り算(商)

PS C:\work> 600 / 3
200

剰余

剰余とは割ったときの余りです。
PS C:\work> 20 % 7
6
20を割った余りは6になります。

べき乗

PS C:\work> [Math]::Pow(2,4)
16
この例では、2の4乗を行っています。
答えは16です。

平方根

PS C:\work> [Math]::Sqrt(3)
1.73205080756888
この例では、ルート3の平方根を求めています。
答えは、「ひとなみにおごれや」ですね。



2017年1月14日

【PowerShell】新しいWindowsイベントログを取得する


Windows Vistaで新しく導入された Windowsイベントログ技術により生成されるイベントログを取得するには、Get-WinEventを使用します。

構文
Get-WinEvent -LogName <ログ名>

Get-WinEvent -ListLog <ログ名>


ログの一覧を取得する

ListLogパラメータでログの一覧を取得できます。
PS C:\work> Get-WinEvent -ListLog *

LogMode   MaximumSizeInBytes RecordCount LogName
-------   ------------------ ----------- -------
Circular            20971520       20832 Application
Circular             1052672         268 ESRV_SVC_WILLAMETTE
Circular            20971520       20126 GoProDesktopApp
Circular            20971520           0 HardwareEvents
Circular             1052672           0 Internet Explorer
Circular            20971520           0 Key Management Service
Circular             8388608           0 Media Center
Circular             1052672          57 OAlerts
Circular             1052672           0 PreEmptive
Circular            20971520       24058 Security
Circular            20971520        7569 System
Circular             1052672           0 USER_ESRV_SVC_WILLAMETTE
Circular            15728640          35 Windows PowerShell
Circular            20971520             ForwardedEvents
Circular            10485760           0 Microsoft-AppV-Client/Admin
Circular            10485760           0 Microsoft-AppV-Client/Operational
Circular            10485760           0 Microsoft-AppV-Client/Virtual Applications
Circular             1052672        2005 Microsoft-Client-Licensing-Platform/Admin
Circular             1052672             Microsoft-IIS-Configuration/Administrative
Circular             1052672             Microsoft-IIS-Configuration/Operational
Circular             1052672             Microsoft-IIS-Logging/Logs
Circular             1052672             Microsoft-SQLServerDataTools/Operational
・・・


-LogName

LogNameにログ名を指定するとそのログのイベントログが表示されます。
PS C:\work> Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational"


   ProviderName: Microsoft-Windows-Windows Defender

TimeCreated                     Id LevelDisplayName Message
-----------                     -- ---------------- -------
2017/01/14 22:23:56           1011 情報             Windows Defender で検疫から項目が削除されました。...
2017/01/14 22:23:56           1011 情報             Windows Defender で検疫から項目が削除されました。...
2017/01/14 22:23:55           1013 情報             Windows Defender でマルウェアおよび他の望ましくない可能性のあるソフトウェアの履歴が削除されました。...
2017/01/14 22:23:48           1000 情報             Windows Defender スキャンが開始されました。...
2017/01/14 10:16:17           1000 情報             Windows Defender スキャンが開始されました。...
2017/01/13 23:59:44           2000 情報             Windows Defender の定義のバージョンが更新されました。...
・・・



2017年1月13日

2017年1月12日

【PowerShell】イベントログの削除またはイベントソースの登録を解除する


イベントログの削除またはイベントソースの登録を解除するには、Remove-EventLogを使用します。

構文
Remove-EventLog -LogName <ログ名>

Remove-EventLog -Source <ソース名>

イベントログの削除

PS C:\work> Get-EventLog -LogName "TestLog"
この例では、「TestLog」という名前のログを削除しています。


イベントソースの登録の解除

PS C:\work> Remove-EventLog -Source "TestApp"
この例では、「TestApp」という名前のイベントソースの登録を解除しています。


2017年1月11日

【PowerShell】イベントログのサイズとエントリの有効期限を制限する


イベントログのサイズとエントリの有効期限を制限するには、Limit-EventLogを使用します。

構文
Limit-EventLog -LogName <ログ名> -MaximumSize <最大サイズ> -RetentionDays <エントリの保持日数>

PS C:\work> Limit-EventLog -LogName "TestLog" -MaximumSize 4MB -RetentionDays 30
この例では、「TestLog」というログの最大サイズを4MB、保持日数を30日に設定しています。


PS C:\work> Get-EventLog -List

  Max(K) Retain OverflowAction        Entries Log
  ------ ------ --------------        ------- ---
  20,480      0 OverwriteAsNeeded      19,913 Application
     512      7 OverwriteOlder            253 ESRV_SVC_WILLAMETTE
  20,480      0 OverwriteAsNeeded      19,844 GoProDesktopApp
  20,480      0 OverwriteAsNeeded           0 HardwareEvents
     512      7 OverwriteOlder              0 Internet Explorer
  20,480      0 OverwriteAsNeeded           0 Key Management Service
   8,192      0 OverwriteAsNeeded           0 Media Center
     128      0 OverwriteAsNeeded          57 OAlerts
     512      7 OverwriteOlder              0 PreEmptive
  20,480      0 OverwriteAsNeeded      24,907 Security
  20,480      0 OverwriteAsNeeded       7,235 System
   4,096     30 OverwriteOlder              2 TestLog
     512      7 OverwriteOlder              0 USER_ESRV_SVC_WILLAMETTE
  15,360      0 OverwriteAsNeeded          21 Windows PowerShell
Get-EventLog -Listでそのとおりに設定されていることが確認できます。




2017年1月10日

【PowerShell】イベントログにイベントを書き込む


イベントログにイベントを書き込むには、Write-EventLogを使用します。

構文
Write-EventLog -LogName <ログ名> -Source <ソース名> -EventID <イベントID> -Message <イベントメッセージ>

PS C:\work> Write-EventLog -LogName "TestLog" -Source "TestApp" -EventID 1001 -Message "This is a test message."


PS C:\work> Get-EventLog -LogName "TestLog"

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
       4 1 09 18:48    Information TestApp                      1001 This is a test message.
Get-EventLogで確認すると、エントリが追加されているのが分かります。



2017年1月9日

【PowerShell】新しいイベントログの作成とイベントソースの登録を行う


新しいイベントログの作成とイベントソースの登録を行うには、New-EventLogを使用します。

構文
New-EventLog -Source <ソース名> -LogName <ログ名> -MessageResourceFile <リソースファイル名>

PS C:\work> New-EventLog -Source "TestApp" -LogName "TestLog" -MessageResourceFile "C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll"
この例では、「TestLog」というイベントログを作成し、「TestApp」というイベントソースを登録しています。

ちなみにMessageResourceFileパラメータで指定しているファイルは、.NET Frameworkで用意されているダミーのメッセージリソースDLLです。
<参考>EventLog.WriteEvent メソッドを使ってイベントログを出力する - 補足



HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\TestLog\TestApp

レジストリエディターで確認すると、「TestLog」の下に「TestApp」というソースが出来ています。



2017年1月8日

【PowerShell】イベントログをクリアする


指定したログのすべてのエントリを消去するには、Clear-EventLogを使用します。

構文
Clear-EventLog [-LogName] <ログ名>

例えば、ログ一覧が以下のようだとします。
PS C:\work> Get-EventLog -List

  Max(K) Retain OverflowAction        Entries Log
  ------ ------ --------------        ------- ---
  20,480      0 OverwriteAsNeeded      19,744 Application
     512      7 OverwriteOlder            253 ESRV_SVC_WILLAMETTE
  20,480      0 OverwriteAsNeeded      19,518 GoProDesktopApp
  20,480      0 OverwriteAsNeeded           0 HardwareEvents
     512      7 OverwriteOlder              0 Internet Explorer
  20,480      0 OverwriteAsNeeded           0 Key Management Service
   8,192      0 OverwriteAsNeeded           0 Media Center
     128      0 OverwriteAsNeeded          56 OAlerts
     512      7 OverwriteOlder              0 PreEmptive
  20,480      0 OverwriteAsNeeded      24,724 Security
  20,480      0 OverwriteAsNeeded       7,181 System
     512      7 OverwriteOlder              0 TestLog
     512      7 OverwriteOlder              0 USER_ESRV_SVC_WILLAMETTE
  15,360      0 OverwriteAsNeeded       1,244 Windows PowerShell
いま、「Windows PowerShell」ログのエントリは1,244あります。


ここで、「Windows PowerShell」ログのエントリを消去してみたいと思います。
PS C:\work> Clear-EventLog -LogName "Windows PowerShell"


もう一度ログ一覧を表示してみます。
PS C:\work> Get-EventLog -List

  Max(K) Retain OverflowAction        Entries Log
  ------ ------ --------------        ------- ---
  20,480      0 OverwriteAsNeeded      19,744 Application
     512      7 OverwriteOlder            253 ESRV_SVC_WILLAMETTE
  20,480      0 OverwriteAsNeeded      19,518 GoProDesktopApp
  20,480      0 OverwriteAsNeeded           0 HardwareEvents
     512      7 OverwriteOlder              0 Internet Explorer
  20,480      0 OverwriteAsNeeded           0 Key Management Service
   8,192      0 OverwriteAsNeeded           0 Media Center
     128      0 OverwriteAsNeeded          56 OAlerts
     512      7 OverwriteOlder              0 PreEmptive
  20,480      0 OverwriteAsNeeded      24,724 Security
  20,480      0 OverwriteAsNeeded       7,183 System
     512      7 OverwriteOlder              0 TestLog
     512      7 OverwriteOlder              0 USER_ESRV_SVC_WILLAMETTE
  15,360      0 OverwriteAsNeeded           0 Windows PowerShell
「Windows PowerShell」ログのエントリが0になっているのが確認できると思います。
これで消去が出来ました。



2017年1月7日

【PowerShell】イベントログのバックアップを取る


イベントログのバックアップを取ることにより、後で見ることが出来たり違うマシンで表示したり出来ます。

では、実際のやり方です。

まず、「System」ログに次のようにエントリが記録されているとします。
PS C:\work> Get-EventLog -LogName "System"

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
    7022 1 07 18:34    Warning     Microsoft-Windows...         1014 名前 rtd.tubemogul.com の名前解決は、構成されたどの DNS サーバーからも応答がなく、タイムアウトしました。
    7021 1 07 12:00    Information EventLog               2147489661 システムの稼働時間は 195648 秒です。
    7020 1 07 10:55    Information Microsoft-Windows...            1 CVE の検出の可能性: 2017-01-07T01:55:08.211000000Z...
    7019 1 07 10:55    Information Microsoft-Windows...           35 システム時刻とタイム ソース time.windows.com,0x9 (ntp.m|0x9|0.0.0.0:123->52.169.179.91:123) の同期をとっています。
    7018 1 07 10:55    Information Microsoft-Windows...            1 CVE の検出の可能性: 2017-01-07T01:55:08.211939300Z...
    7017 1 07 09:54    Information Service Control M...   1073748864 Windows Time サービスの開始の種類は 要求による開始 から 自動的な開始 に変更されました。
    7016 1 07 09:53    Information Microsoft-Windows...           37 タイム プロバイダー NtpClient は現在 time.windows.com,0x9 (ntp.m|0x9|0.0.0.0:123->52.169.179.91:123) から有効な時間データを受信しています。
    7015 1 07 09:53    Information Microsoft-Windows...          158 タイム プロバイダー 'VMICTimeProvider' は、現在のハードウェアおよび操作環境がサポートされないことを示して停止しました。非 HyperV ゲスト環境の VMICTimeProvider では、これは予期された動...
    7014 1 07 09:53    Information Microsoft-Windows...            1 CVE の検出の可能性: 2017-01-07T00:53:53.976000000Z...
    7013 1 07 01:43    Error       DCOM                        10016 ソース 'DCOM' のイベント ID '10016' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります...
    7012 1 07 01:43    Information Microsoft-Windows...         7001 カスタマー エクスペリエンス向上プログラムのユーザー ログオン通知
・・・


これを次にようにしてファイルに出力します。
PS C:\work> Get-EventLog -LogName "System" | Export-Clixml C:\tmp\SystemLogBackup.clixml
この例では、「System」ログをパイプラインでExport-Clixmlコマンドレットに渡し、エントリをC:\tmp\SystemLogBackup.clixmlファイルに格納しています。


次に、出力されたファイルを読み込んでみたいと思います。
Import-Clixmlコマンドレットで先ほど出力したファイルをインポートします。
PS C:\work> $logs = Import-Clixml C:\tmp\SystemLogBackup.clixml
PS C:\work> $logs

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
    7022 1 07 18:34    Warning     Microsoft-Windows...         1014 名前 rtd.tubemogul.com の名前解決は、構成されたどの DNS サーバーからも応答がなく、タイムアウトしました。
    7021 1 07 12:00    Information EventLog               2147489661 システムの稼働時間は 195648 秒です。
    7020 1 07 10:55    Information Microsoft-Windows...            1 CVE の検出の可能性: 2017-01-07T01:55:08.211000000Z...
    7019 1 07 10:55    Information Microsoft-Windows...           35 システム時刻とタイム ソース time.windows.com,0x9 (ntp.m|0x9|0.0.0.0:123->52.169.179.91:123) の同期をとっています。
    7018 1 07 10:55    Information Microsoft-Windows...            1 CVE の検出の可能性: 2017-01-07T01:55:08.211939300Z...
    7017 1 07 09:54    Information Service Control M...   1073748864 Windows Time サービスの開始の種類は 要求による開始 から 自動的な開始 に変更されました。
    7016 1 07 09:53    Information Microsoft-Windows...           37 タイム プロバイダー NtpClient は現在 time.windows.com,0x9 (ntp.m|0x9|0.0.0.0:123->52.169.179.91:123) から有効な時間データを受信しています。
    7015 1 07 09:53    Information Microsoft-Windows...          158 タイム プロバイダー 'VMICTimeProvider' は、現在のハードウェアおよび操作環境がサポートされないことを示して停止しました。非 HyperV ゲスト環境の VMICTimeProvider では、これは予期された動...
    7014 1 07 09:53    Information Microsoft-Windows...            1 CVE の検出の可能性: 2017-01-07T00:53:53.976000000Z...
    7013 1 07 01:43    Error       DCOM                        10016 ソース 'DCOM' のイベント ID '10016' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります...
    7012 1 07 01:43    Information Microsoft-Windows...         7001 カスタマー エクスペリエンス向上プログラムのユーザー ログオン通知
・・・
インポートした変数$logsの内容を表示しています。
最初にGet-EventLogで表示した内容と全く同じということが確認できると思います。



2017年1月6日

【PowerShell】イベントログの取得をする


イベントログを取得するには、Get-EventLogを使用します。

構文
Get-EventLog [-LogName] <ログ名>

Get-EventLog [-List]


ログの一覧を取得する

Listパラメータでログの一覧を取得できます。
PS C:\work> Get-EventLog -List

  Max(K) Retain OverflowAction        Entries Log
  ------ ------ --------------        ------- ---
  20,480      0 OverwriteAsNeeded      19,233 Application
     512      7 OverwriteOlder            241 ESRV_SVC_WILLAMETTE
  20,480      0 OverwriteAsNeeded      19,212 GoProDesktopApp
  20,480      0 OverwriteAsNeeded           0 HardwareEvents
     512      7 OverwriteOlder              0 Internet Explorer
  20,480      0 OverwriteAsNeeded           0 Key Management Service
   8,192      0 OverwriteAsNeeded           0 Media Center
     128      0 OverwriteAsNeeded          56 OAlerts
     512      7 OverwriteOlder              0 PreEmptive
  20,480      0 OverwriteAsNeeded      24,609 Security
  20,480      0 OverwriteAsNeeded       7,001 System
     512      7 OverwriteOlder              0 TestLog
     512      7 OverwriteOlder              0 USER_ESRV_SVC_WILLAMETTE
  15,360      0 OverwriteAsNeeded       1,228 Windows PowerShell


LogName

LogNameにログ名を指定するとそのログのイベントログが表示されます。
PS C:\work> Get-EventLog -Newest 5 -LogName "Application"

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
   19233 1 06 21:22    Information SecurityCenter                 15 状態が Windows Defender から SECURITY_PRODUCT_STATE_ON に正常に更新されました。
   19232 1 06 21:22    Information SecurityCenter                 15 状態が Windows Defender から SECURITY_PRODUCT_STATE_ON に正常に更新されました。
   19231 1 06 21:19    Information Windows Error Rep...         1001 障害バケット -693773534、種類 1...
   19230 1 06 21:18    0           Software Protecti...   1073742727 ソフトウェア保護サービスが停止されました。...
   19229 1 06 21:18    Information Software Protecti...   1073758208 ソフトウェア保護サービスの 2116-12-13T12:18:54Z の再起動をスケジュールしました。理由: RulesEngine。
この例では、Newestパラメータで直近5件のApplicationイベントログを表示しています。


EntryType

EntryTypeパラメータでエントリタイプを指定できます。
PS C:\work> Get-EventLog -LogName "System" -EntryType "Error"

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
    6998 1 06 21:18    Error       Service Control M...   3221232506 NVIDIA Update Service Daemon サービスは予期せぬ原因により終了しました。このサービスの強制終了は 1 回目です。
    6996 1 06 21:14    Error       DCOM                        10016 ソース 'DCOM' のイベント ID '10016' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります...
    6967 1 05 20:24    Error       DCOM                        10016 ソース 'DCOM' のイベント ID '10016' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります...
    6944 1 04 21:00    Error       DCOM                        10016 ソース 'DCOM' のイベント ID '10016' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります...
    6936 1 04 20:40    Error       BugCheck               1073742825 ソース 'BugCheck' のイベント ID '1073742825' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性が...
    6934 1 04 20:39    Error       Service Control M...   3221232473 NetTcpActivator サービスは、次のエラーが原因で開始できなかった NetTcpPortSharing サービスに依存しています: ...
・・・
この例では、SystemイベントログからEntryTypeが「Error」のものだけ表示しています。


Messageに特定の単語が含まれるイベントログを取得する

Messageパラメータを使うことによって、Messageに特定の単語が含まれるイベントログを取得することが出来ます。
PS C:\work> Get-EventLog -LogName "Application" -Message "*failed*"

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
   18850 1 04 20:39    Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   18516 1 03 18:24    Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   18301 1 03 14:28    Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   18119 1 03 00:47    Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   17935 1 02 23:19    Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   17467 12 29 10:05   Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   16614 12 22 21:29   Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   16607 12 22 21:29   Error       DbxSvc                 3221356814 Filter Unload failed with: (-2145452013) 指定されたフィルターが見つかりませんでした。
   16092 12 18 11:41   Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   15915 12 18 02:10   Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   15645 12 17 08:09   Error       DbxSvc                 3221356864 Failed to connect to the driver: (-2147024894) 指定されたファイルが見つかりません。
   15612 12 17 08:48   Information MsiInstaller                11729 Product: Google Update Helper -- Configuration failed.
・・・
この例では、Messageに「failed」が含まれるイベントログを表示しています。


指定の期間のイベントログを取得する

AfterパラメータとBeforeパラメータを使って指定した期間のイベントログを取得できます。
PS C:\work> $Dec15 = Get-Date "2016/12/15"
PS C:\work> $Dec20 = Get-Date "2016/12/20"
PS C:\work> Get-EventLog -LogName "Application" -After $Dec15 -Before $Dec20

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
   16445 12 19 22:38   Information Microsoft-Windows...         1530 レジストリ ファイルは他のアプリケーションまたはサービスで使用されています。ファイルはすぐにアンロードされます。レジストリ ファイルを保持しているアプリケーションまたはサービスはこれ以...
   16444 12 19 22:38   Information Desktop Window Ma...   1073750851 デスクトップ ウィンドウ マネージャー セッション ポートを登録しました。
   16443 12 19 21:53   Information Windows Error Rep...         1001 障害バケット 91225693967、種類 5...
   16442 12 19 21:53   Error       SideBySide             3238068257 "C:\Program Files (x86)\Windows Kits\10\bin\arm\signtool.exe.Manifest" のアクティブ化コンテキストの生成に失敗しました。...
   16441 12 19 21:53   Error       SideBySide             3238068257 "C:\Program Files (x86)\Windows Kits\10\bin\arm64\signtool.exe.Manifest" のアクティブ化コンテキストの生成に失敗しました。...
   16440 12 19 21:53   Error       SideBySide             3238068257 "C:\Program Files (x86)\Windows Kits\10\bin\arm64\filetypeverifier.exe" のアクティブ化コンテキストの生成に失敗しました。...
・・・
この例では、Applicationログの中から、日付が2016/12/15~2016/12/19までの期間のイベントログを取得しています。
注意してほしいのは、Beforeで指定している日付より前までのイベントログが取得されることです。つまりBeforeで指定した日付は含まれなということです。




2017年1月5日

【PowerShell】コマンドレットの一覧を取得する


コマンドレット一覧を取得するには、Get-Commandを使用します。

構文
Get-Command [[-Name] <文字列>]

全てのコマンドレットの一覧を表示する

パラメータを付けずにただGet-Commandを実行すると全てのコマンドレットの一覧が表示されます。
PS C:\work> Get-Command

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Add-ProvisionedAppxPackage                         3.0        Dism
Alias           Apply-WindowsUnattend                              3.0        Dism
Alias           Begin-WebCommitDelay                               1.0.0.0    WebAdministration
Alias           Disable-PhysicalDiskIndication                     2.0.0.0    Storage
Alias           Disable-StorageDiagnosticLog                       2.0.0.0    Storage
Alias           Enable-PhysicalDiskIndication                      2.0.0.0    Storage
Alias           Enable-StorageDiagnosticLog                        2.0.0.0    Storage
Alias           End-WebCommitDelay                                 1.0.0.0    WebAdministration
Alias           Flush-Volume                                       2.0.0.0    Storage
Alias           Get-DiskSNV                                        2.0.0.0    Storage
Alias           Get-PhysicalDiskSNV                                2.0.0.0    Storage
Alias           Get-ProvisionedAppxPackage                         3.0        Dism
・・・

-Name

Nameパラメータを使って特定の文字が含まれるコマンドレットを表示できます。
PS C:\work> Get-Command -Name *Copy*

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           copy -> Copy-Item
Function        Copy-NetFirewallRule                               2.0.0.0    NetSecurity
Function        Copy-NetIPsecMainModeCryptoSet                     2.0.0.0    NetSecurity
Function        Copy-NetIPsecMainModeRule                          2.0.0.0    NetSecurity
Function        Copy-NetIPsecPhase1AuthSet                         2.0.0.0    NetSecurity
Function        Copy-NetIPsecPhase2AuthSet                         2.0.0.0    NetSecurity
Function        Copy-NetIPsecQuickModeCryptoSet                    2.0.0.0    NetSecurity
Function        Copy-NetIPsecRule                                  2.0.0.0    NetSecurity
Cmdlet          Copy-Item                                          3.1.0.0    Microsoft.PowerShell.Management
Cmdlet          Copy-ItemProperty                                  3.1.0.0    Microsoft.PowerShell.Management
Application     BDSFileCopyHelper.exe                              24.0.0.0   C:\Program Files (x86)\Embarcadero\Studio\18.0\bin\BDSFileCopyHelper.exe
Application     CopyDatabaseWizard.exe                             13.0.15... C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\CopyDatabaseWizard.exe
Application     Robocopy.exe                                       10.0.14... C:\WINDOWS\system32\Robocopy.exe
Application     xcopy.exe                                          10.0.14... C:\WINDOWS\system32\xcopy.exe



2017年1月4日

【本】量子力学で生命の謎を解く



量子力学で生命の謎を解く 量子生物学への招待
ジム・アル=カリーリ、ジョンジョー・マクファデン、水谷淳 訳

この年末年始にやっと読み終わったんですが、非常に難解な本でした。

実はこの本を買ったのが2015年の年末です。本屋に行ったらたまたまこの本が目について面白そうだったんで買ったんですが、いやぁー難しかったです。1ページ読むのに5分ぐらいかかったんじゃないかと思います。とにかく1回読んでスッて理解できなくて、何回も読み直してようやくなんとなく理解できるようになる感じで、ちょっとずつ読んでいったので読み終わるまで時間がかかってしまいました。

ただこの本、非常に興味深いことが書かれています。

2017年1月3日

プログラマー手帳術

今日は3日ですが、もう明日か明後日には会社が始まるという方も多いのではないでしょうか。

ところでみなさんは手帳を持っていますか?

実は、私は前々から手帳を使っています。
最近ではグーグルカレンダーなどのアプリなどでスケジュール管理もしてるんですが、打ち合わせでメモを取ったりすることもあるんで手帳は使っています。あと、手で書くというのも好きですし、手帳とかの文具品もけっこう好きだったりするんで、だいたい毎年手帳を買っています。

ただ残念ながら、これまであまり活用しきれてません。大抵3か月ぐらいで挫折してしまい何も手帳に書かなくなってしまいます。まあ、そもそもプログラマーのようなエンジニアって毎日代わり映えのしない日々を送ってるんで特に手帳に書くことがないんでよね。

ではどうすればプログラマーでも手帳を使いこなせるのか。
私はこれまで様々なタイプの手帳を試してきて、挫折と試行錯誤を繰り返してきましたが、昨年ようやく一つの形にたどり着きました。

今日は、私がどんな手帳の使い方をしてるのかをちょっとご紹介したいと思います。

2017年1月2日

2017年の目標

2017年も早くも2日が過ぎようとしていますが、いかがお過ごしでしょうか。
私はこの年末年始の休み中に今年達成したい目標をいろいろと考えてました。

今日はその中からいくつかご紹介したいと思います。


筋力アップ

まずは筋力アップです。昨年も筋トレをしてたんですが、もうちょっと筋肉を付けたいと思っています。目標は体重62kg。いまが57kgぐらいなんで、約5kgアップしようと思っています。

ジョギング 週1回 5km

これも昨年も走っていたのですが、なかなか毎週コンスタントに走れなくて、体調が悪くて1度休んでしまうとしばらく何週間も走らないなんてこともあったので、今年はコンスタントに毎週走りたいと思います。出来れは週に5kmは走りたいと思っているのですが、うーん・・・、まあ頑張ります。

2017年1月1日