我正在课堂上与学生处理一个问题,希望你们中的一些人能够提供帮助。让我尝试解释一下。
我有一个学生可以访问的系统,但他们使用该系统时认为是 RDP 会话,并且每次访问都会记录在我们的服务器中以防止滥用。
我已经为远程访问创建了整个结构并且它正在工作,但我必须每周手动更新近 80 名学生的密码,逐个文件并进行编辑。
这就是我的目录结构
AppAccess(主文件夹)
在每个文件夹中,我都有这些文件
AppAcess.exe
chromedriver.exe
数据.ini
以及每个文件夹中的 data.ini
[LoginData]
Email=student[email protected]
Senha=the_most_secure_password
Browser=Chrome
我有一个包含此列的 Excel 电子表格
我想要实现的是一个脚本,它可以读取此 Excel 电子表格(或 csv 文件)并使用电子表格行/列中的值递归地在每个文件夹中创建 data.ini 文件,因此在文件夹 std 中-01 data.ini 文件应该是
[LoginData]
Email=student1[email protected]
Senha=the_most_secure_password
Browser=Chrome
任何有福的灵魂可以帮助我吗?
我尝试使用 PowerShell 从 Excel 中提取值。我能够将它们作为变量获取,但不能获取单个值,而且我不知道如何将其循环到每个文件夹中并从电子表格中获取正确的值。
您应该考虑使用 ImportExcel 模块,似乎它可以处理解析部分,这给您带来了最大的麻烦。
他们有一个非常可靠的示例部分,包括 Github README 本身中的一些基本内容。
要从 Powershell 安装它,只需运行:
Install-Module -Name ImportExcel
这里有一个快速要点:
$spreadsheetPath = "C:\...\spreadsheet.xls"
# Directory with the students folder
$mainFolderPath = "C:\...\students"
$excel = Import-Excel -Path $spreadsheetPath
# Loop through each row in the spreadsheet, since folder number will be the same as rows
foreach ($row in $excel) {
$folderPath = Join-Path -Path $mainFolderPath -ChildPath $row.Folder
$iniContent = @"
[LoginData]
Email=$($row.Email)
Senha=$($row.Password)
Browser=Chrome
"@
$iniPath = Join-Path -Path $folderPath -ChildPath 'data.ini'
$iniContent | Out-File -FilePath $iniPath -Encoding UTF8
Write-Host "Created $iniPath"
}
在 Windows 11 22H2 上使用 Powershell 7.4.0 进行测试!