読者です 読者をやめる 読者になる 読者になる

Windowsでオープン拡張辞書を利用して改行を含む文字列を辞書登録する

Windows

WindowsIMEに複数行の文字列を登録したい場合は、オープン拡張辞書を作成する。 Microsoftから配布されているオープン拡張辞書を作成するためのエクセルファイルを利用して作成できる。 ただし、一部制限事項はあるので注意が必要。

ダウンロードとインストール

  1. Download Microsoft Office IME 2010 オープン拡張辞書作成用 Excel テンプレート from Official Microsoft Download Centerからテンプレートをダウンロードする
  2. ダウンロードしたファイル内のsetup.exeを実行し必要なツールをインストールする

使い方

  1. ダウンロードしたファイル内のIME Open Extended Dictionary Builder.xltxを開く
  2. 画面右の作業タブで入力中によみを自動入力のチェックをはずす
  3. 内容を記入する([変換後の文字列]にALT+ENTERで改行入力できる)
  4. 画面右の作業タブで辞書の作成ボタンを押す

注意点

  1. [変換後の文字列]には字数制限があるようで、長い言葉は登録できなかった
  2. [変換後の文字列]内の改行はCRとなるので、メモ帳では反映されない
  3. Windows10ではOfficeIMEを導入できないので、辞書生成前のエラーチェックができない(実際に辞書を作ってから取り込んでみるしかない)
  4. こちらによると[変換後の文字列]に;(セミコロン) を2回使用することはできないようだ

その他

ユーザー提供のオープン拡張辞書:TechNetフォーラム内にあるユーザーが作成したオープン拡張辞書公開のためのページ

Download Microsoft Office IME 2010 オープン拡張辞書作成用 Excel テンプレート from Official Microsoft Download Center:Microsoftダウンロードセンターで公開されているオープン拡張辞書を作成するためのExcelテンプレート

Microsoft Office IME 2010 オープン拡張辞書 | Microsoft Office IME 2010 | Microsoft Office 2010:Microsoftによるオープン拡張辞書の概要

辞書登録で複数行(改行)の入力をしたい! - gooブログはじめました!

Markdownでかっこをエスケープする

Markdown

バックスラッシュ[]を使って特殊記号をエスケープできる。

誤:[Resolve\-DnsName](https://technet.microsoft.com/ja-jp/library/jj590781(v=wps.630).aspx)
正:[Resolve\-DnsName](https://technet.microsoft.com/ja-jp/library/jj590781\(v=wps.630\).aspx)

誤の場合は「~(v=wps.630).aspx)」の一つ目の閉じかっこでリンクが切れてしまう。

Powershellで名前解決する

Powershell network

なにも考えずにResolve-DnsNameする

PS C:> Resolve-DnsName google.com

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
google.com                                     AAAA   204   Answer     2404:6800:4004:80f::200e
google.com                                     A      204   Answer     216.58.197.238

(≒nslookup)

単純な名前解決だけでなく、リソースレコードを指定して名前解決することもできる。 以下はIPv6IPv4、MTAのリストの表示

PS C:\> Resolve-DnsName google.com -type AAAA

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
google.com                                     AAAA   231   Answer     2404:6800:4004:80f::200e


PS C:\> Resolve-DnsName google.com -type A

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
google.com                                     A      177   Answer     172.217.24.142


PS C:\> Resolve-DnsName google.com -type MX

Name                                     Type   TTL   Section    NameExchange                              Preference
----                                     ----   ---   -------    ------------                              ----------
google.com                               MX     2     Answer     alt4.aspmx.l.google.com                   50
google.com                               MX     2     Answer     alt3.aspmx.l.google.com                   40
google.com                               MX     2     Answer     aspmx.l.google.com                        10
google.com                               MX     2     Answer     alt2.aspmx.l.google.com                   30
google.com                               MX     2     Answer     alt1.aspmx.l.google.com                   20

参考

Powreshellでnetstatする

何も考えずにGet-NetTCPConnectionする

#外部の80番ポートに対する通信を表示する
Get-NetTCPConnection | where {$_.RemotePort -eq 80 }                                               

2016年を振り返る

今年も残業が多かった 仕事をして技術的に得られたことはあまりなく、会議や調整ばかりしていたなあ。

来年はもう少し頑張りたい。

Powershellでローカルユーザーを管理する(Microsoft.PowerShell.LocalAccounts)

Powershell bash

昨日の「Hey, Scripting Guy」!*1を読んでいて知ったのだが、最新のPowershell*2ではローカルユーザーを管理できる。

実行環境

Microsoft Windows 10 Pro (10.0.14393)

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14393  576

実際のコマンド

まずはどんなコマンドがあるか、手元の環境で確認してみる。

PS D:\SandBox> # とりあえずコマンドを引く

PS D:\SandBox> Get-Command Get-LocalUser

CommandType     Name                                               Version    Source                                                                                           
-----------     ----                                               -------    ------                                                                                           
Cmdlet          Get-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               



PS D:\SandBox> # 同じSourceに似たようなコマンドがないか調べる

PS D:\SandBox> get-command -Module  Microsoft.PowerShell.LocalAccounts

CommandType     Name                                               Version    Source                                                                                           
-----------     ----                                               -------    ------                                                                                           
Cmdlet          Add-LocalGroupMember                               1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Disable-LocalUser                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Enable-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Get-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Get-LocalGroupMember                               1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Get-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          New-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          New-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Remove-LocalGroup                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Remove-LocalGroupMember                            1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Remove-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Rename-LocalGroup                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Rename-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Set-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                               
Cmdlet          Set-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                                                

続けていくつか使ってみる。

PS D:\SandBox>  #ローカルユーザーの一覧から最初3つを取得
PS D:\SandBox> (Get-LocalUser)[1..3]

Name           Enabled Description
----           ------- -----------
DefaultAccount False   システムで管理されるユーザー アカウントです。
Guest          False   コンピューター/ドメインへのゲスト アクセス用 (ビルトイン アカウント)
HomeGroupUser$ True    コンピューターへのホームグループ アクセス用のビルトイン アカウント


PS D:\SandBox>  #ローカルグループの一覧から最初3つを取得
PS D:\SandBox> (Get-LocalGroup)[1..3]

Name                                Description
----                                -----------
WinRMRemoteWMIUsers__               Members of this group can access WMI resources over management protocols (such a...
__vmware__                          VMware User Group
Access Control Assistance Operators このグループのメンバーは、このコンピューター上のリソースの認証属性およびアクセス...

PS D:\SandBox>  #Administratorsグループのメンバーを取得
PS D:\SandBox> Get-LocalGroupMember Administrators

ObjectClass Name                   PrincipalSource
----------- ----                   ---------------
ユーザー    examplePC\Administrator Local

もっと詳しい使い方は公式のリファレンスを読めばよい。 Microsoft.PowerShell.LocalAccounts

参考

PowerTip: Get a list of local Users in Windows 10 / Windows Server 2016 – Hey, Scripting Guy! Blog ⇒元ネタ

Tech TIPS:Windowsのnet userコマンドでユーザーアカウントを管理する - @IT ⇒該当コマンドレットが利用できない場合、昔ながらのnet user コマンドを使う。

余談

bashならどうするの?というメモ

ユーザーの情報を取得したいだけならgetentコマンドを利用する。/etc/groupだけではわからないようなLDAP連携の値も持ってこれる。

変更を加えたいなら

  • user(add|del|mod)
  • group(add|del|mod)

Powershellでループを書かずに指定回数処理を繰り返す

Powershell

範囲演算子(..)とパイプ(|)でループ処理のようなことができる

普通にループで書くなら以下のようになる。

#forループの場合
for ($i=0; $i -lt 10; $i++){ echo "hoge" }
#foreachループの場合
foreach($cnt in 1..10){ echo "hoge" }

でも下のほうがすっきりしていると思う

PS D:\SandBox> 1..10 | %{ echo "hoge"}

変数も使える(一応実行例も載せた)

PS D:\SandBox> $limit=10
PS D:\SandBox> 1..$limit | %{ echo "hoge"}
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge

何が起こっているのか

  • 範囲演算子で指定個数の整数が生成される
  • パイプで渡してforeach-object(=%)する際は、普通は渡したオブジェクト($_)に対して処理をする
  • が、あえてそれをしないことで渡したオブジェクトの数だけ処理を実行させる

参考

05.範囲演算子 < 演算子 Tips メニュー < PowerShell Tips < HIRO's.NET ⇒範囲演算子の簡単な説明