[PowerShell小ネタ] コマンドレットのリストなどをテキストファイルに落としてみよう

皆さんごきげんよう。ういこです。
お風呂に入って寝たいんですが、旦那さまがゆっくりつかっていらっしゃるのでお風呂待ちな午前一時。
仕事も明日のお弁当の支度も手につかないので(世間は今春休み、お弁当を毎日作らないといけない学童クラブ…)、なんとなく最近外国の同僚よりちょい聞きした小ネタを。

【今日のネタ】
(1) PowerShell ネイティブのコマンドレットのリストをテキストファイルに落としてみる

PowerShell は良くできたもので、コマンドレットのヘルプがすごく判りやすいです。が、だーっと出力しても、一部だけ検索したいとか色々ありませんか。
そんな時にテキストに一覧を落とせたら…と思ったあなた。こんな風にやってみます。

get-help -category helpfile |
Foreach-object {
$a=Get-help $_.name; $name=$_.Name;
if ($Name.length -lt 27)
{$pad = " " * (27- $Name.length)}
else {$pad=" "};
$b=$name + $pad + $a.synopsis;
echo $b >> HelpFile.txt}
notepad.exe HelpFile.txt

get-help -category Cmdlet |
Foreach-object {
$a=Get-help $_.name; $name=$_.Name;
if ($Name.length -lt 27)
{$pad = " " * (27- $Name.length)}
else {$pad=" "};
$b=$name + $pad + $a.synopsis;
echo $b >> CMDList.txt}
notepad.exe CMDList.txt

とても便利ですので、試してみてください。

(2) Windows Server 2008 R2 (Windows 7) 上で AD 系のコマンドレットを見てみる
Windows Server 2008 R2 からは Active Directory の機能がコマンドレットに追加されています。
さっそく見てみましょう。

1. AD のコマンドレットをロードする
PowerShell を起動し、以下のコマンドを実行します。

Import-Module ActiveDirectory

あるいは、Domain Controller など、Windows Server 上では、管理ツール上に Active Direcotry の PowerShell のショートカットがあります。([管理ツール]ー[Active Directory PowerShell])

2. AD 関連のコマンドレットをリストアップしてみよう
PowerShell は、動詞 + "-" + 機能名 + なんかやりたいこと みたいな感じでコマンド名が出来ています。おかげで長いのですが、タブによる補完があるのでよしとしてください。以下のように指定すると、-ad、つまり Active Directory 系のコマンドレットが列挙できます。(もしかしたら、サードパーティなどのコマンドレットでそういう名前のものがあったらごめんなさい、混じっちゃうかも)

get-help *-ad* | ft -wrap -auto

以下のように指定すれば、テキストファイルに出力した一覧を落とせます。

get-help *-ad* | ft -wrap -auto | out-file -filepath <ファイルのフルパス、例 : c:\temp\adcmdlet.txt など> -append

おまけ :"スクリプトの実行がシステムで無効になっているため、ファイル **.ps1(← 実際はファイル名) を読み込めません。詳細については、「gethelp about_signing」と入力してヘルプを参照してください。" みたいなエラーがでたら

image

Get-ExecutionPolicy で現状の設定を確認してみてください。

image

Restricted であるなど、RemoteSigned になっていない場合は、以下のスクリプトを実行します。

Set-ExecutionPolicy RemoteSigned

すると、以下のように言われます。

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピックで説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"):

ここで、Y にしてください。
なお、Restricted は Windows PowerShell を対話モードでだけ実行することを許容している状態です。
セキュリティのためなど、一時的に上記の実行のために解除する場合は、後で直しておいてください。

Set-ExecutionPolicy Restricted

ではそろそろ旦那も風呂から上がったので、お風呂入って寝ます。
ごきげんよう、皆様…

ういこう@眠い