如何创建具有选择属性的对象?

时间:2012-11-02 22:44:56

标签: c# powershell

使用Powershell的AD Cmdlet时,您可以执行以下任一操作以返回Microsoft.ActiveDirectory.Management.ADUser类型的对象:

Get-ADUser user
Get-ADUser user -Properties *

但是,第二个将返回一个具有更多属性的对象。

我在C#中使用自己的PowerShell Cmdlet,它将返回自定义对象,类似于此。如何将其设置为仅根据参数返回某些属性?

这是一个将返回的示例类。如何将其设置为有时包括Suspended bool,有时不包括?例如,只有我有一个参数-Suspended

public class User
{
    public string Username { get; set; }
    public string GivenName { get; set; }
    public string FamilyName { get; set; }
    public string Uri { get; set; }
    public bool Suspended { get; set; }

    public GAUser(string username, string givenName,
        string familyName)
    {
        Username = username;
        GivenName = givenName;
        FamilyName = familyName;
    }
}

1 个答案:

答案 0 :(得分:0)

以下是使用开关的简要示例:

$scriptBlock = {
 param ([switch]$Suspended)
 $original = New-Object System.Object
 if ($Suspended)
 {
  $original | Add-Member -MemberType NoteProperty -Name Suspended -Value $true
 }
 Write-Output $original
}

如果使用Suspended开关调用scriptblock,$ new将具有属性:

$new = & $scriptBlock -Suspended

如果您在没有Suspended开关的情况下调用scriptblock,则$ new将不具有该属性:

$new = & $scriptBlock