Powershell 修改CSV行数据
每个月我都会手动运行一些PS命令并手动修改导出的CSV 我已经自动完成了这项工作,但不知道如何修改“许可证”列 每行应显示特定的测试,在本例中为“LICENSE=TYPE1” Type1是一个内部使用名,所以我不能从任何地方提取它 生成文件时,“System.Collections”被放在“Licenses”列中。我需要替换文本 如果我的CSV文件包含列标题“LICENSE”,我如何修改该列中的每个单元格以包含文本“LICENSE=TYPE1” 我试过这个:Powershell 修改CSV行数据,powershell,Powershell,每个月我都会手动运行一些PS命令并手动修改导出的CSV 我已经自动完成了这项工作,但不知道如何修改“许可证”列 每行应显示特定的测试,在本例中为“LICENSE=TYPE1” Type1是一个内部使用名,所以我不能从任何地方提取它 生成文件时,“System.Collections”被放在“Licenses”列中。我需要替换文本 如果我的CSV文件包含列标题“LICENSE”,我如何修改该列中的每个单元格以包含文本“LICENSE=TYPE1” 我试过这个: Get-MsolUser | Whe
Get-MsolUser | Where-Object {($_.Licenses).AccountSkuId -contains "ENTRPRISEPACK"}
| Select DisplayName, UserPrincipalName, Office, City, State, Licenses | Export-Csv -Path "C:\Scripts\LICENSES.csv" -Delimiter "," -NoTypeInformation
Import-Csv -Path "C:\Scripts\LICENSE.CSV" | ForEach-Object {
If ($_.Licenses -like "System.Collections") {
$_.Licenses = "LICENSE=TYPE1"
}
$_
} | Export-Csv -Path "C:\Scripts\LICENSE123.csv" -NoTypeInformation
我错过了什么
以下是创建CSV文件的方式:
Get-MsolUser |
Where {$_.IsLicensed -eq $true } |
Select DisplayName, UserPrincipalName, Office, City, State, @{n="Licenses";e={$_.Licenses.AccountSKUid}} |
Export-Csv -Path "C:\Scripts\LICENSES.CSV" -Delimiter "," -NoTypeInformation
'当我生成文件“System.Collections”时,它被放置在“Licenses”中'column'-首先如何生成它?既然您想修改CSV文件中该列的每一行,为什么不显式指定列,而不是设置所需的许可证列值。
$\u许可证
不是字符串,而是类型为System.Collections
的对象。请尝试:If($\.Licenses-是[System.Collections]){…
。找不到类型[System.Collections]。第2行字符:24+If($\.Licenses-是[System.Collections]){+~~~~~~~~~~~~~~~~~~~~~+CategoryInfo:InvalidOperation:(System.Collections:TypeName)[],RuntimeException+FullyQualifiedErrorId:TypeNotFoundSystem.Collections
是一个命名空间。您只看到类型名称的一部分。如果找到完整的类型名称,您可以按照前面的建议使用-is
运算符。'当我生成文件“System.Collections”时,它被放在“Licenses”中column'-您首先如何生成它?既然您想修改CSV文件中该列的每一行,为什么不直接指定列,而不是License列来设置所需的值。$\u.Licenses
不是字符串,而是类型为System.Collections
的对象。请尝试:如果($\u.Licenses-是[System.Collections]{…
。找不到类型[System.Collections]。第2行字符:24+If($\.Licenses-是[System.Collections]){+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+CategoryInfo:InvalidOperation:(System.Collections:TypeName)[],RuntimeException+FullyQualifiedErrorId:TypeNotFound系统。Collections
是一个命名空间。您只看到类型名称的一部分。如果找到完整的类型名称,可以使用前面建议的-is
运算符。