1
我想擴展PsCredential
類(在PowerShell v4模塊中)以包含服務器名稱,然後能夠使用類似Export-PsCredential的腳本對該類進行序列化/反序列化。這可以(擴展類)在PowerShell模塊中輕鬆完成嗎?擴展PsCredential類
我想擴展PsCredential
類(在PowerShell v4模塊中)以包含服務器名稱,然後能夠使用類似Export-PsCredential的腳本對該類進行序列化/反序列化。這可以(擴展類)在PowerShell模塊中輕鬆完成嗎?擴展PsCredential類
是的,它可以!您可以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]
,以便他們可以很容易地排序。
<?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>
(注意,我沒有測試以上)
當你create a New-ModuleManfifest
您可以指定-TypesToProcess
參數和文件名。
@craig我必須查找這個術語,但是它與Ruby中可以做的相似。此方法更改類的每個實例,而在運行時使用'Add-Member'可用於將屬性和方法_添加到單個實例_。這很好! – briantist
將此新屬性包含在由「Get-Credential」生成的對話框中嗎?如果不是,你會如何建議填充它? – craig
@craig不會包含在對話框中。填充它應該像分配它一樣簡單:'$ cred.ServerName = $ myServerValue',但是如何提示該值取決於您,並取決於您的情況。在一個函數中,我會使用一個參數。如果我需要自由形式的交互式文本輸入,「Read-Host」,如果我想要從列表中選擇運行時交互式選擇,我會使用'Out-GridView -OutputMode Single'。 – briantist