使用具有动态值的 powershell 在 csv 中创建新列

Creating new column in csv using powershell with dynamic values

您好,我正在尝试比较两个 csv 并查看它们之间的差值。 我想在 csv 中创建一个新列来捕获停用用户和新用户,比较新旧数据提取。

尽管我能够创建新列,但无法将值填充到新列中。 这里 User_status 是我正在创建的列,它应该包含停用值。

这是我的一小部分代码,用于查看已停用的用户:

if ($csv2.UserID -match $user.UserID)
{
    Write-Verbose "$user.UserID is in both files"
}
else
{
    Write-Verbose "$user.UserID is missing from csv2"
    $missing += $user
    $user_status = 'Deactivated'
    #Set-Variable -Name "user_status" -Value "Deactivated"
    $missing | Select-Object *,@{Name='User_Status';Expression= { $_.user_status  } } |Export-Csv -path "C:\Users\test.csv" -NoTypeInformation 

}

您设置了变量 $user_status,但在尝试调用它时又添加了 $_。相反,只需使用您填充的变量

if ($csv2.UserID -match $user.UserID)
{
    Write-Verbose "$user.UserID is in both files"
}
else
{
    Write-Verbose "$user.UserID is missing from csv2"
    $missing += $user
    $user_status = 'Deactivated'
    #Set-Variable -Name "user_status" -Value "Deactivated"
    $missing | Select-Object *,@{Name='User_Status';Expression= { $user_status  } } |Export-Csv -path "C:\Users\test.csv" -NoTypeInformation 

}

正如@zett42 所指出的,基变量在引号内扩展得很好,而访问变量的属性需要一个子表达式

工作正常

"string with a simple $variable"

需要子表达式

"string with complex $($variable.property)"