2016-10-04 11 views
1

PsCredentialクラス(PowerShell v4モジュール内)を拡張してサーバー名を含めるようにしてから、Export-PsCredentialのようなスクリプトを使用してクラスをシリアル化/逆シリアル化することができます。これは(クラスを拡張する)PowerShellモジュールで簡単に行うことができますか?PsCredentialクラスを拡張する

答えて

1

はい、できます。 define your extension in XML, in a .ps1xml fileを入力してUpdate-TypeDataに更新するか、モジュールのマニフェストでこの権限を指定することで、モジュールをインポートするときにこの権限を指定することができます。

恐らく最も良い例はKeith Hill's blog where he adds a BigEndianAddress property to [System.Net.IPAddress]ですから、簡単に並べ替えることができます。あなたはファイル名で-TypesToProcessパラメータを指定することができますcreate a New-ModuleManfifestとき

<?xml version="1.0" encoding="utf-8" ?> 
<Types> 
    <Type> 
    <Name>System.Management.Automation.PSCredential</Name> 
    <Members> 
     <NoteProperty> 
     <Name>ServerName</Name> 
     <Value></Value> 
     </NoteProperty> 
    </Members> 
    </Type> 
</Types> 

(ノート、私は上記のテストしていません)。

+0

@craig私はその言葉を調べなければなりませんでしたが、Rubyでできることに似ています。このメソッドはクラスのすべてのインスタンスを変更しますが、 'Add-Member'を使用すると、実行時に単一のインスタンス_にプロパティとメソッドを追加できます。それはかなり良いです! – briantist

+0

この新しいプロパティは 'Get-Credential'によって生成されるダイアログに含まれますか?そうでない場合は、それをどのように埋め込むことを提案しますか? – craig

+0

@craigいいえ、それはダイアログには含まれません。値を代入するのは、 '$ cred.ServerName = $ myServerValue'と同じくらい簡単なはずですが、その値を入力する方法はあなた次第であり、状況によって異なります。ある関数では、パラメータを使用します。フリーフォームのインタラクティブなテキスト入力、 'Read-Host'が必要な場合、リストから実行時インタラクティブ選択をしたい場合、' Out-GridView -OutputMode Single'を使います。 – briantist

関連する問題