鷲ノ巣

C# とか PowerShell とか。当ブログの記事は(特に公開直後は)頻繁に改定される場合があることをご了承ください。

PowerShell の Cmdlet を開発するときに使う NuGet パッケージ

.NET で PowerShell のバイナリ モジュールを作成する際に参照する NuGet パッケージが、いろいろあってよくわからんのでまとめました。

なお、以下のパッケージには、System.Management.Automation.dll や、その他いくつかのアセンブリが含まれますが、これらは実装を含まない参照アセンブリなので、モジュールと一緒に配布すべきものではありません。
配布先で利用されるときには、その配布先に既にインストールされている(はずの)アセンブリが使用されます。
また、System.Management.Automation.dll 以外のアセンブリは、自動的にプロジェクトの参照に追加されたないため、必要であれば手動で追加する必要があります。

続きを読む

Update-Module の罠

いや、別に PowerShell の罠シリーズをやろうとしているわけではないのですが。
あと、今回の罠は、はまる人はあまりいないと思います…。

私は時々、PowerShellGet でインストールしたモジュールを最新版にするために、

Get-InstalledModule | Update-Module

というのをやります。

ところが今回、新しいバージョンが既にリリースされているのに、これをやっても、モジュールが更新されないという現象が起きて、ちょっと調べていました。

続きを読む

異なるバージョンの PowerShell に対して Invoke-Command する時の注意点

さっき Issue を上げたんだが、Google 翻訳と格闘し過ぎて気力が尽き果てたので、とりあえずこっちを見ておくれ。
んで英語が変なところがあったら補足してください。お願いします。

github.com

修正してもらえるかなぁ…

セキュリティ記述子の中身を見てみる

前回のおさらい

前回は、ファイルのセキュリティ情報としてどんなものがあるか、ということを概観しました。
ざっとおさらいしますと、

  • ファイルのセキュリティ情報は「セキュリティ記述子(Security Descriptor)」という領域に記録されている。
  • セキュリティ記述子には、アクセス制御のための「DACL(随意アクセス制御リスト)」、監査のための「SACL(システム アクセス制御リスト)」と、ファイルの所有者の情報がある
  • DACL と SACL の中身は「ACE(アクセス制御エントリ)」というもの
  • ACE や所有者情報は、アカウント名の代わりに「SID(セキュリティ ID)」という形式で記録されている

という感じでしたね。

今回はコードを書いて、ファイルのセキュリティ記述子の中身を見ていきます。

サンプル コードは GitHub にあるので、適宜参照しながらお読みください。*1
github.com

*1:C++ わかんないなりに頑張りました! ネーミングが C++ 風と Win32 風でちゃんぽんですが勘弁してください。

続きを読む