String 检查.CSV文件中是否存在字符串,以及该字符串是否不存在';t然后使用Powershell附加它

String 检查.CSV文件中是否存在字符串,以及该字符串是否不存在';t然后使用Powershell附加它,string,powershell,csv,search,append,String,Powershell,Csv,Search,Append,我有一个.csv文件,它使用两列,两列都有标题: 老师,频道 教师栏下方为教师用户名,频道栏下方为教师指定频道 我正在尝试让一个脚本工作,它将通过.csv检查登录的教师用户名,然后用他们的频道回复,如果他们的用户名不存在,则将其追加,并为其分配一个比以前的教师频道高1个数字的频道。脚本添加登录用户的新用户名后,应使用新分配的频道 到目前为止,我有: $strCSV = "\\SEVERNAME\SHARE\FOLDER" $strCurrentUser = Get-WmiObject -Clas

我有一个.csv文件,它使用两列,两列都有标题: 老师,频道

教师栏下方为教师用户名,频道栏下方为教师指定频道

我正在尝试让一个脚本工作,它将通过.csv检查登录的教师用户名,然后用他们的频道回复,如果他们的用户名不存在,则将其追加,并为其分配一个比以前的教师频道高1个数字的频道。脚本添加登录用户的新用户名后,应使用新分配的频道

到目前为止,我有:

$strCSV = "\\SEVERNAME\SHARE\FOLDER"
$strCurrentUser = Get-WmiObject -Class Win32_ComputerSystem
$strChannel = Import-Csv $strCSV\teachers.csv | where {$_.Teacher -eq $strCurrentUser.UserName.TrimStart("DOMAIN\")} | % channel

虽然不多,但我对Powershell还是很陌生,所以请提供任何帮助。

类似的方法都会奏效。它为现有用户导入CSV检查。如果找到,则执行其他操作如果未找到,则获取最后一个通道添加一个通道,并将新教师导出到文件末尾

$file = "\\SEVERNAME\SHARE\FOLDER\teachers.csv"
$teachers = Import-Csv $file
$strCurrentUser = (Get-WmiObject -Class Win32_ComputerSystem).UserName.TrimStart("DOMAIN\")
$strChannel = $teachers | where {$_.Teacher -eq $strCurrentUser} | % channel
if($strChannel){
#dostuff with channel
}
else{
$lastChannel = [int]$teachers[$teachers.length-1].channel + 1
"{0},{1}" -f $strCurrentUser,$lastChannel | add-content -path $file
}

谢谢Dane,你能给我解释一下“{0},{1}”-f部分的作用吗?我以前看过,但不太明白它为什么会在那里,我宁愿肯定地知道,也不愿猜测。“{0},{1}”-f只是一个格式运算符。所以基本上说,将输出格式化为“$strCurrentUser,$lastChannel”,然后将其添加到文件末尾。因为您的文件只是一个两列逗号分隔的csv,所以它应该匹配得很好。如果您希望它采用不同的格式,如var1-var2,您可以执行“{0}-{1}”-f如果您愿意,请参阅这篇ms文章以了解更多信息: