PowerShell:如果输出与字符串匹配,则在CSV列中设置值
首先,这是我的第一篇堆栈溢出帖子,所以如果有人在其他地方回答了这个问题,而我找不到它,我表示歉意,但以下是我想要弄明白的 我正在循环浏览一个CSV用户名列表,获取每个用户的Office 365许可证状态,我想根据许可证状态将一个字符串写回该用户的CSV。例如,CSV如下所示:PowerShell:如果输出与字符串匹配,则在CSV列中设置值,powershell,Powershell,首先,这是我的第一篇堆栈溢出帖子,所以如果有人在其他地方回答了这个问题,而我找不到它,我表示歉意,但以下是我想要弄明白的 我正在循环浏览一个CSV用户名列表,获取每个用户的Office 365许可证状态,我想根据许可证状态将一个字符串写回该用户的CSV。例如,CSV如下所示: Username License1 License2 user1 user2 user3 Username License1 License2 user1 XYZ user2
Username License1 License2
user1
user2
user3
Username License1 License2
user1 XYZ
user2 XYZ
user3
$users = Import-Csv .\users.csv
foreach ($user in $users) {
$licenses = (Get-MsolUser -UserPrincipalName $_.Username).Licenses.AccountSkuId
if ($licenses -match "XYZ") {
$user.License1 = "XYZ"
}
}
$users | Export-Csv .\users.csv -NoTypeInformation
下面是代码:
$users = Import-Csv .\users.csv
foreach ($user in $users) {
$licenses = (Get-MsolUser -UserPrincipalName $_.Username).Licenses.AccountSkuId
if ($licenses -match "XYZ") {
$_License1 = "XYZ" | Export-Csv .\users.csv -NoTypeInformation
}
}
因此,如果前两个用户拥有“XYZ”许可证,则CSV将更新为如下所示:
Username License1 License2
user1
user2
user3
Username License1 License2
user1 XYZ
user2 XYZ
user3
$users = Import-Csv .\users.csv
foreach ($user in $users) {
$licenses = (Get-MsolUser -UserPrincipalName $_.Username).Licenses.AccountSkuId
if ($licenses -match "XYZ") {
$user.License1 = "XYZ"
}
}
$users | Export-Csv .\users.csv -NoTypeInformation
它不起作用,我确信问题与我如何尝试将数据导出回原始CSV有关,但我不知道如何以正确的方式进行。非常感谢您的帮助,如果有更好的方法,我将洗耳恭听
提前谢谢 试试这样的方法:
Username License1 License2
user1
user2
user3
Username License1 License2
user1 XYZ
user2 XYZ
user3
$users = Import-Csv .\users.csv
foreach ($user in $users) {
$licenses = (Get-MsolUser -UserPrincipalName $_.Username).Licenses.AccountSkuId
if ($licenses -match "XYZ") {
$user.License1 = "XYZ"
}
}
$users | Export-Csv .\users.csv -NoTypeInformation