微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

嗨,我正在尝试比较两个 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)"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。