雑記+備忘録

OS中心の技術情報と趣味について(最近は主に将棋)。備忘録なのでここに書かれたことを試すのは自己責任でお願いします。

対局数減速中

ここ1年ほどは、全般的に対局数が減っています。 個人的に24の対局記録をデータ化しているのでデータを見てみると、2015年の73局に比べ、2016年は61局と減っています(12月は2局のみ)。ウォーズもほとんど指していません。 原因ははっきりしており、他に優先して時間をつかっていることがあるためです。将棋熱が冷めているわけではないので、そちらが落ち着いたらまた増やしていく見込みです。

決して、昨年末の連盟のダメさに嫌気がさしたのが影響しているわけではありません。連盟は嫌いになっても、将棋は嫌いにならないでください、です。

三浦九段に対する疑惑は不当なものだった

第三者委員会の調査の結果、カンニングを疑うに足る事実なし。三浦九段に対する疑惑は不当なものでした。

三浦九段を気の毒に思っていた者として、ささやかながら拡散に協力します。プロ棋士達は、パワハラまがいの集団という汚名をそそぐべく努めてほしいです。 

 

twitterでも書きましたが、こちらにも記載。

 

マスコミは、「疑惑」の時は盛大におもしろおかしく取り上げるのに、訂正については全く力を入れないので、個人のちっぽけな力ですが、ここに記しておきます。

 

未だすっきりしない部分については、窪田六段のtwitterで紹介されていたこの記事が鋭いと思います。

 

http://d.hatena.ne.jp/akisaito/20161226

PowerShellで表示が切れるのを防ぐ

PowerShellで表示が切れるのを防ぐ

PowerShellでコンソール上に値を表示させたり、テキストとして出力させたりするときに、 一定の長さで表示が切れて「...」となってしまうのを防ぎたい。

長く不便に感じていたにも関わらず全然情報を見つけられなかったのですが、 別件の調べものをしていた際に偶然発見しました。

こちらのブログに情報がありました。(ありがとうございます) http://cncn-us.hatenablog.com/entry/2016/10/18/175657

たとえば

PS > Get-EventLog Application -Newest 1

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
    4981 12 13 22:30   Warning     EventSystem            2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が...

となり、「Message」が全て表示されません。 これはOut-Fileでテキストに表示させても同じで(改善される場合もある)、 「Export-Csv」を使ってcsvファイルに出力することで、何とか回避していました。

「...」にせずに全て表示させるにはこのようにします。

PS > Get-EventLog Application -Newest 1 | Format-Table -AutoSize -Wrap

Index Time        EntryType Source      InstanceID Message
----- ----        --------- ------      ---------- -------
 4981 12 13 22:30 Warning   EventSystem 2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が見つかりません。必要
                                                   なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コ
                                                   ンピューターに存在しない可能性があります。または、これらのデータへのアクセス許
                                                   可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'
                                                   80010105', 'ConnectionMade', '{D5978620-5B9F-11D1-8DD2-00AA004ABD5E}', '', '',
                                                    'ConnectionMade', ''

上記参考にさせていただいたブログでは「-Wrap」オプションを使わず、「| Out-String -Width 4096」としていました。 もちろんそれでもOKです。「-Wrap」オプションは、長い場合にその項目の欄に改行して表示してくれるオプションです。

PS > Get-EventLog Application -Newest 1 | Format-Table -AutoSize | Out-String -Width 4096

Index Time        EntryType Source      InstanceID Message                                                                                                                                                                                                          
----- ----        --------- ------      ---------- -------                                                                                                                                                                                                          
 4981 12 13 22:30 Warning   EventSystem 2147488002 ソース 'EventSystem' のイベント ID '-2147479294' の説明が見つかりません。必要なレジストリ情報またはメッセージを表示するメッセージ DLL ファイルがローカル コンピューターに存在しない可能性があります。または、これらのデータへのアクセス許可がユーザーに与えられていない可能性があります。次の情報はイベントの一部です:'80010105', 'ConnectionMade', '{D5978620-5B9F-11D1-8DD2-00AA004ABD5E}', '', '', 'ConnectionMade', ''

PowerShellでADのオブジェクト検索(メンバサーバーから)

ドメインコントローラーから検索する場合は「Get-ADUser」や「Get-ADComputer」を使えばよいのですが、 DCを触れない、AD管理PowerShellもインストールできない場合かつ単純に「ユーザーが存在するかだけ知りたい」 といったシチュエーションで、手軽にユーザーと存在するOUを表示させます。

参考URL、というか今回の記事はここをまとめただけ https://gallery.technet.microsoft.com/scriptcenter/767d313c-645c-4c62-b021-3772091a8c61

◇ ユーザー一覧を表示

PS > ([ADSISearcher]"ObjectCategory=user").FindAll() | Select Path

こんな感じで出力されます。

LDAP://CN=Administrator,CN=Users,DC=hoge,DC=local
LDAP://CN=Guest,CN=Users,DC=hoge,DC=local
LDAP://CN=krbtgt,CN=Users,DC=hoge,DC=local
LDAP://CN=testUser,OU=TestOU,DC=hoge,DC=local

"ObjectCategory=user" を"ObjectClass=user"にすると、コンピューターオブジェクトも出力されます。 純粋にコンピューターオブジェクトだけを出力する場合は、次項のコマンドです。

◇ コンピューターオブジェクト一覧を表示(ABC順でソートもしてみます)

PS > ([ADSISearcher]"ObjectClass=Computer").FindAll() | Select Path | sort Path

ダブルクォートで囲まれているところは検索のフィルターを記述できます。(詳しくは参考URL) 名前に「test」を含むユーザーで検索してみます。

PS > ([ADSISearcher]"(&(ObjectCategory=user)(Name=*test*))").FindAll() | Select Path

もう一つ、上記は「[ADSISercher]型アクセラレーター」というのを使っています。 それを使わずにオブジェクトを作成する場合は、このようになります。 (出力内容、形式は同じです)

$hoge = New-Object DirectoryServices.DirectorySearcher
$hoge.Filter = "(&(ObjectCategory=user)(Name=*test*))"
$hoge.FindAll() | Select Path

1行で書くこともできます。

(New-Object DirectoryServices.DirectorySearcher "(&(ObjectCategory=user)(Name=*test*))").FindAll() | Select Path

どーでもいい情報ですが、参考URLの「Scripting Guy」は冒頭と末尾にちょっとひねった挨拶を入れるので、 なかなか面白いです。

Windows Serverの各種パラメーターを調べるPowerShellコマンドレット

◇ 役割と機能

Get-WindowsFeature | Out-File "C:\work\Yakuwari.txt" -Encoding Default
Get-WindowsFeature | Export-Csv "C:\work\Yakuwari.csv" -Encoding Default

「Out-File」で出力するのと「Export-Csv」で出力するので出力される項目が違うので注意。 追加されている/いないを見たいだけなら「Out-File」の形式が見やすくてよいです。

以降は原則どちらかのみ記載していきます。

◇ 更新プログラム一覧

Get-Hotfix | Select-Object HotFixID | Out-File "C:\work\Hotfix.txt" -Encoding Default

環境変数一覧

Get-ChildItem env: | Select-Object Name,Value | Export-Csv "C:\work\Env.csv" -Encoding Default

「Out-File」で出力すると、Value欄が切れてしまうのが残念。(項目の桁数を増やす方法を知らんので) 「Export-Csv」で出力するとすべて出力されます。

◇ インストールされたプログラム一覧

Get-WmiObject -Class Win32_Product | Select Name,Version,Vendor | Out-File "C:\work\Program.txt" -Encoding Default

GUIの「プログラムと機能」に近い形式で出力されます。

PowerShellでGrepっぽいこと

以下例とします。

あるフォルダ下すべての「.txt」ファイルのうち記載内容に「Get」を含むファイルとその行数を表示する
ただし、「Test.txt」は対象外とする

◇ コマンド
PS > dir -Recurse .\*.txt -Exclude "Test.txt" | Select-String "Get"

◇ 表示
Test1.txt:2:GetGoal
Test2.txt:3:Get-Command

「次の一手」で覚える432を解いた

他の方のブログに触発されて正答率をカウントしつつ解いた
「次の一手」で覚える将棋基本手筋コレクション432
ようやく1周目が終了しました。
章ごとではなく総数しかカウントしていませんでしたが、
 181問/432問 正解で、正答率約42%。
正答の基準として、「その後の手はよく分からないけれどたまたま当たった」
は不正解扱いとしました。


大体半分の200問の時点ではちょうど50%正解だったのですが、
後半の「中盤編Part2」がやたら難しく、一気に正答率が下がりました。
「寄せが見える本」を読んでいたせいか、
中盤編よりも終盤編のほうが正答率が高い感じでした。


この「正答率をカウントしつつ解く」やり方、
最後まで続けるモチベーション、繰り返し解くモチベーションにもなって
いいですね。


「次の一手」で覚える将棋基本手筋コレクション432の感想としては、
キラーパスとなる手を探す訓練」といった感じで、
実戦でいかにそのチャンスを逃しているか、を実感します。
(本の表紙に「基本手筋」「比較的易しい次の一手問題」と書いてあった気がするが、
 多分気のせいだな)
一方で、ではそういった手が見当たらなかったときに
どんな手を指せば一方的に悪くならないか、
自分のレベルだとまずそちらのほうが重要な気もします。


そして長かった・・・
買ったのは発売直後なので、およそ5か月コツコツと。
上記のブログに刺激を受けていなかったら、10問ぐらいでお蔵入りでした。
感謝です。
あと、短期間に一気に解ける分量ではなかったので、
かえって力が抜けて良かったかもしれません。