객체가 함수에 전달되면 관련된 유형의 속성을 잃는 것처럼 보입니다 NoteProperty
.
간단한 테스트로이 동작 (아래 코드)을 재현 할 수 있으며 결과는 다음과 같습니다.
기능 외부 확인-
속성이 존재합니다.
함수 내부 확인-
속성이 존재하지 않습니다.
누구든지 PowerShell이이 매너에서 작동하는 이유를 설명 할 수 있으며 추가 한 구성원이 예상대로 함수에 전달되는지 확인하기 위해 어떻게 해결할 수 있습니까?
function Out-Object
{
param(
[parameter(Mandatory=$true)]
[object[]]$Object
)
Write-Output "Checking inside of function -"
if ( Get-Member -InputObject $Object -Name "PropertyOne" -MemberType "NoteProperty" ) {
Write-Output " Property exists."
} else {
Write-Output " Property does not exist."
}
}
$newObject = New-Object -TypeName PSCustomObject
$newObject | Add-Member -NotePropertyName "PropertyOne" -NotePropertyValue "ValueOne"
Write-Output "Checking outside of function -"
if ( Get-Member -InputObject $newObject -Name "PropertyOne" -MemberType "NoteProperty" ) {
Write-Output " Property exists."
} else {
Write-Output " Property does not exist."
}
Out-Object $newObject
Ansgar가 말했듯이 Out-Object 함수의 배열처럼 처리합니다. 당신은 변경할 수 있습니다
[object[]]$Object
...에
[object]$Object
또는 함수 내에서 $ object를 인덱싱해야합니다.
if ( Get-Member -InputObject $Object[0] -Name "PropertyOne" -MemberType "NoteProperty" ) {
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다