我有一个脚本可以创建随机密码,并将其存储在具有不同信息标题(例如)的csv文件中$username, $system, $password
。该脚本在新环境中运行,以为服务帐户创建随机生成的密码。每90天,管理此环境的人员将需要更改这些密码,因此我试图创建一个脚本,然后将其更改为密码并使用新的密码更新csv文件。我可以毫无问题地更改密码,但是修改csv文件一直是另一回事。
我的功能,Function UpdatePassword ($username,$system,$password)
将收到以下行:
$result = UpdatePassword $entry.Name "Active Directory" "${account_password}"
我想搜索csv文件,并将正在编辑的用户名与CSV文件中的相应用户名进行匹配。但是,由于某些用户名可能相同(只需接受此名称),因此我还需要检查$ system变量,在本例中为“ Active Directory”。如果这两个值都匹配一行,那么我想用新的替换$ password。
function UpdatePassword($username,$system,$password) { if($(hostname)
-eq "Machine") { New-PSDrive -Name AdminShare -PSProvider FileSystem -Root $LOCALPASSWORDFILE | Out-Null } else { New-PSDrive -Name AdminShare -PSProvider FileSystem -Root $REMOTEPASSWORDFILE | Out-Null } $PASSWORDFILE = "AdminShare:\Passwords.csv"
##########
#Checking for required values
##########
if(!$username -or !$system) { write-host "username, system, and special characters fields are required" return "invalid arguments" }
$pwFile = import-csv $PASSWORDFILE
foreach ($user in $pwFile) {
if($user.username.tolower() -eq $username.tolower() -and $system.tolower() -eq $userem.tolower()) {
$_ -replace $user.Password, $password | Set-Content $pwFile;
}
return 0
}
Remove-PSDrive -Name AdminShare | out-null }
使用时,Import-Csv
您将CSV文件读入PowerShell自定义对象的数组中,其中CSV的每个字段均由每个自定义对象上的一个属性表示。您不想将其视为字符串,而是尝试将字符串写回到CSV文件。而是修改对象的属性,例如在内部if
执行以下操作:
$user.Password = $password
然后在foreach循环之外,将对象导出回CSV文件,例如:
$pwFile | Export-File $PASSWORDFILE -NoTypeInformation
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句