功能之间的数据变化
Data changing between functions
在查看了我能找到的内容后,我发现的一些罪魁祸首是 return 被展开成一个简单的字符串,或者管道中的其他数据。
我的问题是 cmdlet 运行 针对第一个函数中的数据,在数据到达第二个函数时不处理数据。
function Get-FileInput() {
$fileData = Import-Csv $filePath -Delimiter "`t"
if ($fileData | Get-Member | Where-Object {$_.name -eq "DistinguishedName" -or $_.name -eq "dn" -or $_.name -eq "name"})
{
Write-Host -ForegroundColor Green "Confirmed.
Processing"$fileData.Count"objects."
$invalidFilePath = $false
$fileData
}
$data = Get-FileInput
Write-Host $data
}
$data = Get-FileInput
Set-MultipleComputersEnabledStatus -data $data
到目前为止一切正常。在它被传递到第二个函数之前,它可以与 Format-Table 和 Get-Member 一起使用,一切看起来都很好。但是,在 Set-MultipleComputersEnabledStatus 内部,我无法对 $data 对象执行与在 Get-FileInput
中所做的完全相同的检查
它正在寻找一个名为 "DistinguishedName" 的 属性,它在第一个函数中找到,但在到达第二个函数时无法在数据中识别。
if ($filterType -eq "DistinguishedName" -and $data | Get-Member | Where-Object {$_.Name -eq 'DistinguishedName'})
{
Write-Host -ForegroundColor Green "Valid filters. Processing list."
}
我认为这意味着在作为第二个函数的参数传入后,PowerShell 以某种方式为我更改了数据,但我找不到任何记录它所做的事情或如何防止 it/work 周围。
嵌入式命令部分需要用括号括起来,以便先执行再计算结果:
if ($filterType -eq "DistinguishedName" -and ($data | Get-Member | Where-Object {$_.Name -eq 'DistinguishedName'})) { }
在查看了我能找到的内容后,我发现的一些罪魁祸首是 return 被展开成一个简单的字符串,或者管道中的其他数据。
我的问题是 cmdlet 运行 针对第一个函数中的数据,在数据到达第二个函数时不处理数据。
function Get-FileInput() {
$fileData = Import-Csv $filePath -Delimiter "`t"
if ($fileData | Get-Member | Where-Object {$_.name -eq "DistinguishedName" -or $_.name -eq "dn" -or $_.name -eq "name"})
{
Write-Host -ForegroundColor Green "Confirmed.
Processing"$fileData.Count"objects."
$invalidFilePath = $false
$fileData
}
$data = Get-FileInput
Write-Host $data
}
$data = Get-FileInput
Set-MultipleComputersEnabledStatus -data $data
到目前为止一切正常。在它被传递到第二个函数之前,它可以与 Format-Table 和 Get-Member 一起使用,一切看起来都很好。但是,在 Set-MultipleComputersEnabledStatus 内部,我无法对 $data 对象执行与在 Get-FileInput
中所做的完全相同的检查它正在寻找一个名为 "DistinguishedName" 的 属性,它在第一个函数中找到,但在到达第二个函数时无法在数据中识别。
if ($filterType -eq "DistinguishedName" -and $data | Get-Member | Where-Object {$_.Name -eq 'DistinguishedName'})
{
Write-Host -ForegroundColor Green "Valid filters. Processing list."
}
我认为这意味着在作为第二个函数的参数传入后,PowerShell 以某种方式为我更改了数据,但我找不到任何记录它所做的事情或如何防止 it/work 周围。
嵌入式命令部分需要用括号括起来,以便先执行再计算结果:
if ($filterType -eq "DistinguishedName" -and ($data | Get-Member | Where-Object {$_.Name -eq 'DistinguishedName'})) { }