【发布时间】:2011-03-22 18:08:29
【问题描述】:
我使用this article 编写了我自己的第一个 Powershell Cmdlet 和 Snapin。而且效果很好。
但是我从我自己的数据类中返回了一组对象,它有四个属性,我希望 Powershell 默认只显示其中一个属性。所以我用this part of the article创建了这个格式文件:
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<ViewDefinitions>
<View>
<Name>RemoteFile</Name>
<ViewSelectedBy>
<TypeName>MyFullNamespace.RemoteFileData</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader />
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>Filename</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>
</ViewDefinitions>
</Configuration>
并将其链接到 Snapin:
public override string[] Formats
{
get { return new string[] { "MyFormatFilename.ps1xml" }; }
}
但是当我使用 installutil 安装 Snapin,使用 Add-PSSnapin 并调用我的 Cmdlet 时,会显示对象的所有属性。
我做错了什么?
【问题讨论】:
-
以防万一:您是否知道管理单元是一种过时的方法,而首选(实际上更简单)的方法是模块?我创建了许多添加了任何类型的自定义格式的模块,并且从未遇到过问题。注:这绝不是您问题的答案,但也许您仍然想尝试模块,而不是管理单元。
-
@Roman 不,我不知道。你有模块教程的链接吗?为什么 snapins 过时了?微软在其 SharePoint 2010 Cmdlet 中使用了一个……对我来说听起来并不那么古老……
-
插件方法并没有那么古老或过时,但他们只是发明了一种更好的方法——模块。为什么更好?仅仅因为它们更易于开发、配置和部署(xcopy 安装)。这是 MSDN 链接:msdn.microsoft.com/en-us/library/dd878310(VS.85).aspx
-
我去看看,谢谢!
-
@hinek:管理单元是 powershell v1 的唯一选择; sp2010 的人想要 v1 兼容性。模块仅适用于 powershell v2(默认在 windows 7、2008r2 上 - 但 v2 也可以安装在 xp/vista/2003 上)
标签: c# powershell powershell-2.0 pssnapin