Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell:如果输出与字符串匹配,则在CSV列中设置值_Powershell - Fatal编程技术网

PowerShell:如果输出与字符串匹配,则在CSV列中设置值

PowerShell:如果输出与字符串匹配,则在CSV列中设置值,powershell,Powershell,首先,这是我的第一篇堆栈溢出帖子,所以如果有人在其他地方回答了这个问题,而我找不到它,我表示歉意,但以下是我想要弄明白的 我正在循环浏览一个CSV用户名列表,获取每个用户的Office 365许可证状态,我想根据许可证状态将一个字符串写回该用户的CSV。例如,CSV如下所示: Username License1 License2 user1 user2 user3 Username License1 License2 user1 XYZ user2

首先,这是我的第一篇堆栈溢出帖子,所以如果有人在其他地方回答了这个问题,而我找不到它,我表示歉意,但以下是我想要弄明白的

我正在循环浏览一个CSV用户名列表,获取每个用户的Office 365许可证状态,我想根据许可证状态将一个字符串写回该用户的CSV。例如,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
下面是代码:

$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