Powershell 扩展PsCredential类

Powershell 扩展PsCredential类,powershell,powershell-4.0,Powershell,Powershell 4.0,我想扩展PsCredential类(在PowerShell v4模块中)以包含服务器名称,然后能够使用类似的脚本序列化/反序列化该类。这(扩展类)可以在PowerShell模块中轻松完成吗?是的,可以!您可以使用updatetypedata,然后更新它,或者更好的是,您可以在模块清单中指定此权限,以便在导入模块时完成此操作 也许这方面最好的例子是从中选择,这样它们就可以很容易地进行分类 <?xml version="1.0" encoding="utf-8" ?> <Type

我想扩展
PsCredential
类(在PowerShell v4模块中)以包含服务器名称,然后能够使用类似的脚本序列化/反序列化该类。这(扩展类)可以在PowerShell模块中轻松完成吗?

是的,可以!您可以使用
updatetypedata
,然后更新它,或者更好的是,您可以在模块清单中指定此权限,以便在导入模块时完成此操作

也许这方面最好的例子是从中选择,这样它们就可以很容易地进行分类

<?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>

System.Management.Automation.PSCredential
服务器名
(注意,我还没有测试上述内容)


当您可以使用文件名指定
-TypesToProcess
参数时。

@craig我必须查找该术语,但是是的,它与您在Ruby中可以做的类似。此方法更改类的每个实例,而使用
addmember
可用于在运行时向单个实例添加属性和方法。非常好!此新属性是否包含在由
Get Credential
生成的对话框中?如果没有,你会建议如何填充它?@craig no该对话框中不会包含它。填充它应该和分配给它一样简单:
$cred.ServerName=$myServerValue
,但如何提示该值取决于您自己的情况。在函数中,我会使用一个参数。如果我需要自由形式的交互式文本输入,
Read Host
,如果我想从列表中选择运行时交互式,我会使用
Out GridView-OutputMode Single
。在定义类型(即在ps1xml文件中)时,似乎需要分配
Value
属性<代码>$cred.ServerName='foobar'生成一个错误,指示该属性是只读的。我必须多读一些关于这个功能的文章。@craig啊,我很害怕。我通常将其用于脚本属性。您可以这样做并定义一个getter和setter方法。问题是,我不知道在setter中使用什么作为持久存储。我还没有机会真正测试它。Keith Hill的博客示例是一个脚本属性,但只使用getter,因为它从另一个属性计算其值。