0

嗨,我希望有人能在这里指出我正确的方向。

我正在尝试创建一些 PS 5.1 代码,这些代码可以将脚本开头的 get-variable 输出与出现错误时生成的 get-variable 输出进行比较。

我只想在创建新变量或者其值与脚本开始时生成的值不同时才显示名称-值对象信息。

我认为使用 compare-object 会很容易,但我很难让它与值变化一起工作:

$PostscriptVar = Get-Variable
$NewVar1 = 1
$Avarchange = Get-Date
$EndscriptVar  = get-variable

#This works for any new variables created.
compare-object $PostscriptVar $EndscriptVar -Property name

#This doesn't work for any change in values - i can't get this to work.
#compare-object $PostscriptVar $EndscriptVar -Property name,value

任何帮助,将不胜感激。

4

2 回答 2

0

我不知道为什么,但如果我只选择NameandValue属性,它似乎工作Get-Variable

Remove-Variable NewVar1 -ErrorAction SilentlyContinue
$Avarchange = Get-Date
$PostscriptVar = Get-Variable | Select-Object Name, Value
$NewVar1 = 1
$Avarchange = $Avarchange.AddDays(1)
$EndscriptVar = Get-Variable | Select-Object Name, Value

Compare-Object $PostscriptVar $EndscriptVar -Property Name, Value
于 2021-06-07T02:57:43.840 回答
0

根据上面丹尼尔斯的评论,我用于任何有兴趣的人的最终代码。

$PrescriptVar = Get-Variable | Select-Object Name, Value
$NewVar6 = 2
$arraytest = "test1","Test2","Test3"
$Avarchange = $Avarchange.AddDays(1)
$EndscriptVar = Get-Variable | Select-Object Name, Value

#Compare-Object $PrescriptVar $EndscriptVar -Property Name, Value
$NewOrChangedVarObj = Compare-Object $PrescriptVar $EndscriptVar -Property Name, Value | ?{$_.sideindicator -eq '=>'} | Where -Property Name -ne "PrescriptVar" | Where -Property Name -ne "EndscriptVar"

$NewOrChangedVarObj | Select-Object Name, Value | fl
于 2021-06-07T08:47:45.867 回答