2012-05-23 2 views
2

PowerShell 명령의 대부분은 "복잡한"개체를 반환합니다. 예 : Get-ProcessSystem.Diagnostics.Process의 배열을 반환합니다.PowerShell 함수를 사용하여 복잡한 개체를 반환 하시겠습니까?

필자가 작성한 모든 기능은 단순한 유형 또는 기존 종류의 개체를 반환하는 것입니다.

집에서 만든 물건을 반품하려는 경우 지침은 무엇입니까?

예를 들어 다음과 같은 속성을 가진 객체가 있다고 가정 해보십시오. Name, Age C#에서는 내가 썼을 것입니다

public class Person { 
    public string Name { get; set; } 
    public uint Age { get; set; } 
} 

PowerShell 함수에서 이러한 개체를 반환하기위한 옵션은 무엇입니까?

  1. 내 목표는 PowerShell 모듈을 만드는 것이므로 ps1 파일 대신 C# 모듈로 이동해야합니까?
  2. 사용자 정의 DLL에서 이러한 객체를 컴파일하고 내 모듈에서 LoadWithPartialName을 사용하여 참조해야합니까?
  3. 클래스를 powershell 문자열에 넣고 동적으로 컴파일해야합니까?

답변

7

:

New-Object PSObject -Property @{ 
    Name = 'Bob' 
    Age = 32 
} 
3

사용자 지정 속성을 사용하여 개체를 만들려면 몇 가지 옵션이 있습니다. 추가 속성으로 기존 개체를 확장 할 수도 있습니다.

$test = New-Object PSCustomObject 
Add-Member -InputObject $test -Name Name -Value 'Bob' -MemberType NoteProperty 
Add-Member -InputObject $test -Name Age -Value 32 -MemberType NoteProperty 

또한 개체가 선택-Object가 암시 적으로 파이프 라인의 객체에 속성을 추가 할 수 있다는 사실과 함께 확장 될 수 있다는 사실을 사용할 수 있습니다 :

가장 명시적인 방법은 추가 회원 cmdlet을 사용하는 것입니다 이 마법을 흔들며 더 명시 적으로 적은 손을 때문에
$test = '' | Select @{n='Name'; e={'Bob'}}, @{n='Age'; e={32}} 

는 개인적으로 나는 첫 번째 방법을 선호하지만, 하루의 끝에서 그것을 할 수있는 올바른 방법이 작동 그래서 어떤 스크립트 언어입니다.

이 구문을 사용할 수 있습니다
관련 문제