2018年11月

指定した文字列を含まない行を検索する正規表現

覚えられないのでメモ

指定した文字列を含まない行

^(?!.*検索文字列).+$

PowerShellでキー入力を感知

PowerShellでキー入力を感知して(キー入力を待ち受けることなく)処理を中断する方法


    while($true)
    {
        write-host "何かボタンが押されるまで続行"
        if ($host.ui.rawui.KeyAvailable)
        {
            write-host "終了"
            break
        }
    }

$hostは自動変数

以下マイクロソフト about_Automatic_Variables)から引用

Windows PowerShell の現在のホスト アプリケーションを表すオブジェクトが格納されます。この変数を使用すると、コマンド内で現在のホストを表すか、$Host.version、$Host.CurrentCulture、$host.ui.rawui.setbackgroundcolor("Red") など、ホストのプロパティを表示または変更することができます。

$host | Get-Member

Name                   MemberType Definition                                                                                                
----                   ---------- ----------                                                                                                
EnterNestedPrompt      Method     void EnterNestedPrompt()                                                                                  
Equals                 Method     bool Equals(System.Object obj)                                                                            
ExitNestedPrompt       Method     void ExitNestedPrompt()                                                                                   
GetHashCode            Method     int GetHashCode()                                                                                         
GetType                Method     type GetType()                                                                                            
NotifyBeginApplication Method     void NotifyBeginApplication()                                                                             
NotifyEndApplication   Method     void NotifyEndApplication()                                                                               
PopRunspace            Method     void PopRunspace(), void IHostSupportsInteractiveSession.PopRunspace()                                    
PushRunspace           Method     void PushRunspace(runspace runspace), void IHostSupportsInteractiveSession.PushRunspace(runspace runspace)
SetShouldExit          Method     void SetShouldExit(int exitCode)                                                                          
ToString               Method     string ToString()                                                                                         
CurrentCulture         Property   cultureinfo CurrentCulture {get;}                                                                         
CurrentUICulture       Property   cultureinfo CurrentUICulture {get;}                                                                       
DebuggerEnabled        Property   bool DebuggerEnabled {get;set;}                                                                           
InstanceId             Property   guid InstanceId {get;}                                                                                    
IsRunspacePushed       Property   bool IsRunspacePushed {get;}                                                                              
Name                   Property   string Name {get;}                                                                                        
PrivateData            Property   psobject PrivateData {get;}                                                                               
Runspace               Property   runspace Runspace {get;}                                                                                  
UI                     Property   System.Management.Automation.Host.PSHostUserInterface UI {get;}                                           
Version                Property   version Version {get;}

$host.UI | Get-Member

Name                    MemberType Definition                                                                                                                    
----                    ---------- ----------                                                                                                                    
Equals                  Method     bool Equals(System.Object obj)                                                                                                
GetHashCode             Method     int GetHashCode()                                                                                                             
GetType                 Method     type GetType()                                                                                                                
Prompt                  Method     System.Collections.Generic.Dictionary[string,psobject] Prompt(string caption, string message, System.Collections.ObjectMode...
PromptForChoice         Method     int PromptForChoice(string caption, string message, System.Collections.ObjectModel.Collection[System.Management.Automation....
PromptForCredential     Method     pscredential PromptForCredential(string caption, string message, string userName, string targetName), pscredential PromptFo...
ReadLine                Method     string ReadLine()                                                                                                             
ReadLineAsSecureString  Method     securestring ReadLineAsSecureString()                                                                                         
ToString                Method     string ToString()                                                                                                             
Write                   Method     void Write(string value), void Write(System.ConsoleColor foregroundColor, System.ConsoleColor backgroundColor, string value)  
WriteDebugLine          Method     void WriteDebugLine(string message)                                                                                           
WriteErrorLine          Method     void WriteErrorLine(string value)                                                                                             
WriteInformation        Method     void WriteInformation(System.Management.Automation.InformationRecord record)                                                  
WriteLine               Method     void WriteLine(), void WriteLine(string value), void WriteLine(System.ConsoleColor foregroundColor, System.ConsoleColor bac...
WriteProgress           Method     void WriteProgress(long sourceId, System.Management.Automation.ProgressRecord record)                                         
WriteVerboseLine        Method     void WriteVerboseLine(string message)                                                                                         
WriteWarningLine        Method     void WriteWarningLine(string message)                                                                                         
RawUI                   Property   System.Management.Automation.Host.PSHostRawUserInterface RawUI {get;}                                                         
SupportsVirtualTerminal Property   bool SupportsVirtualTerminal {get;}

$host.UI.RawUI | Get-Member

Name                  MemberType Definition                                                                                                                      
----                  ---------- ----------                                                                                                                      
Equals                Method     bool Equals(System.Object obj)                                                                                                  
FlushInputBuffer      Method     void FlushInputBuffer()                                                                                                         
GetBufferContents     Method     System.Management.Automation.Host.BufferCell[,] GetBufferContents(System.Management.Automation.Host.Rectangle r)                
GetHashCode           Method     int GetHashCode()                                                                                                               
GetType               Method     type GetType()                                                                                                                  
LengthInBufferCells   Method     int LengthInBufferCells(string str), int LengthInBufferCells(string str, int offset), int LengthInBufferCells(char character)   
NewBufferCellArray    Method     System.Management.Automation.Host.BufferCell[,] NewBufferCellArray(string[] contents, System.ConsoleColor foregroundColor, Sy...
ReadKey               Method     System.Management.Automation.Host.KeyInfo ReadKey(System.Management.Automation.Host.ReadKeyOptions options), System.Managemen...
ScrollBufferContents  Method     void ScrollBufferContents(System.Management.Automation.Host.Rectangle source, System.Management.Automation.Host.Coordinates d...
SetBufferContents     Method     void SetBufferContents(System.Management.Automation.Host.Coordinates origin, System.Management.Automation.Host.BufferCell[,] ...
ToString              Method     string ToString()                                                                                                               
BackgroundColor       Property   System.ConsoleColor BackgroundColor {get;set;}                                                                                  
BufferSize            Property   System.Management.Automation.Host.Size BufferSize {get;set;}                                                                    
CursorPosition        Property   System.Management.Automation.Host.Coordinates CursorPosition {get;set;}                                                         
CursorSize            Property   int CursorSize {get;set;}                                                                                                       
ForegroundColor       Property   System.ConsoleColor ForegroundColor {get;set;}                                                                                  
KeyAvailable          Property   bool KeyAvailable {get;}                                                                                                        
MaxPhysicalWindowSize Property   System.Management.Automation.Host.Size MaxPhysicalWindowSize {get;}                                                             
MaxWindowSize         Property   System.Management.Automation.Host.Size MaxWindowSize {get;}                                                                     
WindowPosition        Property   System.Management.Automation.Host.Coordinates WindowPosition {get;set;}                                                         
WindowSize            Property   System.Management.Automation.Host.Size WindowSize {get;set;}                                                                    
WindowTitle           Property   string WindowTitle {get;set;}

PowerShellでモールス信号

以下、サンプル

#無くても良いが名前空間の記述を省略できるので使用する
using namespace Microsoft.VisualBasic
#全角⇒半角の変換にVB.NETの機能を使用するため
Add-Type -AssemblyName Microsoft.VisualBasic

$frequency=800 #音の周波数
$ton=100 #短点の長さ
$too=300 #長点の長さ
$HashTable = @{
    "A"="$ton,$too"
    "B"="$too,$ton,$ton,$ton"
    "C"="$too,$ton,$too,$ton"
    "D"="$too,$ton,$ton"
    "E"="$ton"
    "F"="$ton,$ton,$too,$ton"
    "G"="$too,$too,$ton"
    "H"="$ton,$ton,$ton,$ton"
    "I"="$ton,$ton"
    "J"="$ton,$too,$too,$too"
    "K"="$too,$ton,$too"
    "L"="$ton,$too,$ton,$ton"
    "M"="$too,$too"
    "N"="$too,$ton"
    "O"="$too,$too,$too"
    "P"="$ton,$too,$too,$ton"
    "Q"="$too,$too,$ton,$too"
    "R"="$ton,$too,$ton"
    "S"="$ton,$ton,$ton"
    "T"="$too"
    "U"="$ton,$ton,$too"
    "V"="$ton,$ton,$ton,$too"
    "W"="$ton,$too,$too"
    "X"="$too,$ton,$ton,$too"
    "Y"="$too,$ton,$too,$too"
    "Z"="$too,$too,$ton,$ton"
    "1"="$ton,$too,$too,$too,$too"
    "2"="$ton,$ton,$too,$too,$too"
    "3"="$ton,$ton,$ton,$too,$too"
    "4"="$ton,$ton,$ton,$ton,$too"
    "5"="$ton,$ton,$ton,$ton,$ton"
    "6"="$too,$ton,$ton,$ton,$ton"
    "7"="$too,$too,$ton,$ton,$ton"
    "8"="$too,$too,$too,$ton,$ton"
    "9"="$too,$too,$too,$too,$ton"
    "0"="$too,$too,$too,$too,$too"
}

Write-Host "何か入力して下さい。"
[console]::Beep(37,1) 
$str=Read-Host
# 全角を半角へ変換と小文字を大文字に変換
$str = [Strings]::StrConv($str,[VbStrConv]::Narrow)
$str = $str.toupper()

#Beep音を鳴らす
foreach ($item in $str.ToCharArray()){
    $item
    if ($item -ne " "){
        foreach($morse in $HashTable[$item.ToString()].split(",")){
            [console]::Beep($frequency,$morse) 
        }
        Start-Sleep -m ($ton * 3)
    } else {
        Start-Sleep -m ($ton * 7)
    }
}

[console]::Beep(37,1)について

本来必要ないが、ループ処理時に最初の音だけ鳴らないことがあったため、処理の初めに聞こえない音を一瞬鳴らしておくことで対処。

VSCodeでGitを使用する

VSCodeでGitを使用する手順

  1. gitのインストールと初期設定

    1. Git for Windows
    2. 「スタート」-「Git」-「Git Bash」を起動
      git config --global user.name "gitusr"   
      git config --global user.email gitusr@example.com
      
      ユーザー名とEmailは適当でもよい。
  2. 何かしらソースファイルを配置する
    (ここではc:\work\psproject1\hellow.ps1)

  3. VSCodeから2.で作成したソースフォルダを開く
  4. VSCode画面左端、アクティビティバーの「ソース管理」アイコンをクリック
  5. ソース管理ビュー右上の「リポジトリの初期化」ボタンをクリック
    フォルダを選択するダイアログで対象のフォルダを選択する。キャプチャ2

  6. 「初期化済みのリポジトリを開きますか? または現在のワークスペースへ追加しますか?」とメッセージが表示されるので「ワークスペースへ追加」を選択する
  7. 初期化状態ではまだどのファイルもコミットされていないのでソース管理ビューの「チェックマークのアイコン」をクリックしてコミットを行う
    「コミットするステージされた変更がありません・・・」とメッセージが表示されるが「はい」を選択

その後ファイルの編集・保存を行うとエディタ上に変更内容が、ソース管理ビューには通知が表示される。

キャプチャ5