2016-05-23 6 views
2

私はC#を使用しています。私はpowershellスクリプトをインポートするためにimport-moduleを使いたいと思います。しかし、私はディスク上に.psm1ファイルを持っていたくありません。私はそれを文字列のように自分のコードにハードコードし、それをインポートしたいと思っています。c#文字列からpowershellモジュールをインポートする方法

これは可能ですか?私は、ディスクからファイルを読みたくない上に、私が言ったしかしとして

var ps = PowerShell.Create(myRS); 
ps.Commands.AddCommand("Import-Module").AddArgument(@"g:\...\PowerDbg.psm1") 
ps.Invoke() 

pipeline.Commands.Add("Import-Module"); 
var command = pipeline.Commands[0]; 
command.Parameters.Add("Name", @"G:\PowerShell\PowerDbg.psm1") 

か何かのように:私は見つけることができます

すべての例では、何かのようなものです。私はそれが複数のファイルを避けるためにハードコードしたい。私はexe上のすべてを欲しい、それはそれです。私は道を見つけることができなかった、どんな助けもありがとう。

get-command -module <whatever> 

とそのすべての関数のリストを取得:モジュールをインポートした後、私はのような何かをしたいので、私は、インポート・モジュールを使用したい

理由があります。 スクリプトから関数をリストする他の方法も役立ちます。

ありがとうございました。

+1

多少関連 - [WinDbgのための 'PSExt']をチェックアウト(HTTPS:// githubの.com/powercode/PSExt)WinDbgを自動化しようとしている人 –

+0

申し訳ありませんが、PowerDbgはランダムな例で、別の投稿から貼り付けてコピーしました。とにかくありがとう。 – flexow

答えて

3

あなたが探しているのはNew-Moduleです。それはまさにあなたが求めているものです。

TechNetのページ(言い換え)から:

New-Module -ScriptBlock { 
    $SayHelloHelp="Type 'SayHello', a space, and a name." 
    function SayHello ($name) { 
     "Hello, $name" 
    } 
    Export-ModuleMember -function SayHello -Variable SayHelloHelp 
} -Name PowerDbg 

C#例(試験せず):

string moduleContents = @"..."; 
pipeline.Commands.Add("New-Module"); 
var command = pipeline.Commands[0]; 
command.Parameters.Add("ScriptBlock", moduleContents); 
command.Parameters.Add("Name", "PowerDbg"); 
pipeline.Invoke(); 
+0

素晴らしい! C#の例は動作しませんが、私はその問題を回避します。 New-Moduleはまさに私が必要としているようです。ありがとう。 – flexow

関連する問題