Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 附加到对象中已存在值的对象_Powershell - Fatal编程技术网

Powershell 附加到对象中已存在值的对象

Powershell 附加到对象中已存在值的对象,powershell,Powershell,因此,我有以下代码,这是我的spoof数据库创建者的一部分,它可以工作: $Start_dateMin = get-date -year 2015 -month 1 -day 1 $Start_dateMax = get-date for ( $i = 0; $i -le (Get-Random -Minimum 1 -Maximum 2); $i++ ) { <# Create job data array #> $jobData = @{ Re

因此,我有以下代码,这是我的spoof数据库创建者的一部分,它可以工作:

$Start_dateMin = get-date -year 2015 -month 1 -day 1 
$Start_dateMax = get-date

for ( $i = 0; $i -le (Get-Random -Minimum 1 -Maximum 2); $i++ ) {
    <# Create job data array #>
    $jobData = @{
        ReceivedDate  = (new-object datetime (Get-Random -min $Start_dateMin.ticks -max $Start_dateMax.ticks)).ToString("yyyy/MM/dd")
    }

    <# Add to job data array #>
    $jobData += @{
        StartDate   = (Get-Date $jobData.ReceivedDate).AddDays((Get-Random -Minimum 20 -Maximum 50)).ToString("yyyy/MM/dd")
        EndDate     = (Get-Date $jobData.ReceivedDate).AddDays((Get-Random -Minimum 100 -Maximum 500)).ToString("yyyy/MM/dd")
        ClosingDate = (Get-Date $jobData.ReceivedDate).AddDays((Get-Random -Minimum 30 -Maximum 100)).ToString("yyyy/MM/dd")
        UpdatedDate = (Get-Date $jobData.ReceivedDate).AddDays((Get-Random -Minimum 5 -Maximum 30)).ToString("yyyy/MM/dd")
        JobStatusID = if (( Get-Date $jobData.ReceivedDate ) -ge ((Get-Date).AddDays(-100))) { 5 } else { 1 }
    }
    <# Add to job data array #>
    $jobData += @{
        jobOutcomeID    =   if ( $jobData.JobStatusID -eq 1 -and (Get-Random -Minimum 0 -Maximum 100) -lt 70 ) { 1 }
                            elseif ( $jobData.JobStatusID -eq 1 -and (Get-Random -Minimum 0 -Maximum 100) -lt 85 ) { 2 }
                            else { (Get-Random -InputObject $JobOutcomeList -count 1).itemArray[0] }
    }
}
$jobData | format-table
它正确地使用声明中的接收日期,并基于该日期创建日期

第二段代码不起作用:

for ( $i = 0; $i -lt (Get-Random -Minimum 1 -Maximum 2); $i++) {
    $jobCandData = @{
        DateSelected = (Get-Date).AddDays((Get-Random -Minimum 1 -Maximum 30)).ToString("yyyy/MM/dd");
        JobCanOutcome = 7
    }


    $jobCandData += @{
        CandNote =  if ( $jobCandDate.JobCanOutcome -eq  7 ) { "test" };
        DateSubmitted = if ((Get-Random -Minimum 1 -Maximum 100) -gt 80) { (Get-Date $jobCandData.DateSelected).AddDays((Get-Random -Minimum 1 -Maximum 30)).ToString("yyyy/MM/dd") }; 
    }
    $jobCandData | Format-Table
}   
这不起作用,append调用中的所有内容都不会填充,下面是一个示例结果:

Name                           Value                                                                                                                                                                                                         
----                           -----                                                                                                                                                                                                         
DateSubmitted                                                                                                                                                                                                                                
CandNote                                                                                                                                                                                                                                     
DateSelected                   2018/03/16                                                                                                                                                                                                    
JobCanOutcome                  7            
就我所知没有什么不同。第二段代码在
foreach循环中运行,foreach(job in jobs){}
这些作业是从第一段代码创建的。两个变量DateSubmittedCandNote不包含或不包含此foreach循环


基本上,我只是想了解我在这里遗漏了什么,以及为什么它没有正确填充。

这是一个简单的打字错误,第1版(或更高版本)可能会发现它,正如在对问题的评论中建议的那样:

Set-StrictMode -Version 1 原始变量名是
$jobCandData
-最后一个
a
-但您尝试将其称为
$jobCandDate
-最后一个
e

默认情况下,在没有严格模式的情况下,引用如
$jobCandDate.JobCanOutcome
——即尝试访问不存在的变量的属性只会产生
$null
,在您的情况下,这意味着有条件的
$jobCandDate.JobCanOutcome-eq 7
始终返回
$False
,因此从不为
CandNote
哈希表项赋值


相比之下,分配给
DateSubmitted
条目效果很好-只是当
(Get Random-Minimum 1-Maximum 100)-gt 80
恰好是
$True
时,它才会分配一个值,它的平均值只有19%左右。

请考虑提供一个.@ MKLMunt0。我已经修改了代码,因此它不依赖于文件/数据库中的数据。您现在可以运行这两个示例,希望这会使事情变得更简单。顺便说一句,Get Random-Minimum 1-Maximum 2
始终返回
1
Set StrictMode-Version Latest
将使所有相关错误迎刃而解。@PetSerAi感谢Set StrictMode的提示,这个命令对我来说是新的,看起来在将来会非常有用。 Set-StrictMode -Version 1