使用具有动态值的 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)"
您好,我正在尝试比较两个 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)"