2006/07/14
フォルダの作成〜COMコンポーネントの使用II
元記事はhttp://winscript.s41.xrea.com/mt/archives/2005/09/com.htmlです。
PowerShellでは.NETのオブジェクトのほかに、COMのオブジェクトも呼び出すことができます。呼び出し方は$Fs =
new-object -com Scripting.FileSystemObject
のようにします。
このサンプルは、深い階層に新しいフォルダを再帰的に作成していくスクリプトです。
function CreateFolderEx ($Path){ $sParent=$Fs.GetParentFolderName($Path) if ($Fs.FolderExists($sParent) -And !$Fs.FolderExists($Path)) { [void]$Fs.CreateFolder($Path) } elseif ($Fs.FolderExists($Path)) { } else { CreateFolderEx($sParent) [void]$Fs.CreateFolder($Path) } } $Fs = new-object -com Scripting.FileSystemObject CreateFolderEx "C:\test\test\aaaa\wwww\aaa"
FolderExistsと($Path)の間にスペースを入れるとエラーになるのに注意です。(beta 2ではならなかったのに…)
function CreateFolderEx ($Path){
は、
function CreateFolderEx { Param($Path)
と書くこともできますが、個人的にこちらの書き方は冗長じゃないかなあという気がします。betaとの互換性のために残されているだけかもしれません。
ちなみに、.NET FrameworkのSystem.IO.DirectoryInfoクラスを使うならこんな面倒なことは必要ありません。
$di = new-object System.IO.DirectoryInfo("C:\test\test\aaaa\wwww\aaa") $di.Create()元記事:http://blogs.wankuma.com/mutaguchi/archive/2006/07/14/32456.aspx
2006/07/06
使用可能なCmdletを列挙するII
使用可能なCmdletを列挙し、cmdlet.txtに出力します。
get-command -type cmdlet|sort Name|out-file "cmdlet.txt"
使用可能なCmdletの数をカウントするには次のようにします。
get-command -type cmdlet|measure-object
RC1ではCount : 129と出ます。多いですね。これを分類してやろうと思っているのですが、いい分類方法はあるでしょうか。beta2の段階で出ていた書籍、Monad, by Andy Oakley では、
- System
- Objects
- History
- Cmdlet
- Providers
- Operating System Components
- Output Formatters
- Aliases、Miscellaneous
- Variables
- Input/Output
- Security
- Debugging
と分類されていたようです。とりあえずPowerShellをシェルとして使うにはCmdletの知識が不可欠なので、この情報はなるべく早めに提供していこうと思います。とりあえず1日1Cmdletのペースでデータベースを作れたらいいなぁと思います。
元記事:http://blogs.wankuma.com/mutaguchi/archive/2006/07/06/31794.aspx
Copyright © 2005-2018 Daisuke Mutaguchi All rights reserved
mailto: mutaguchi at roy.hi-ho.ne.jp
プライバシーポリシー