У меня есть список пользователей, которые я храню в текстовом файле.Я пытаюсь обновить текстовый файл, чтобы он удалял любого пользователя, который соответствует переменной $ NotExpiring users, которая является коллекцией.Я просто не могу понять, как правильно обновить текстовый файл, если нужно удалить более одного пользователя из текстового файла.
Ниже приведена полная функция.Вы можете проигнорировать большую часть этого. Просто посмотрите в #Stuck Здесь, чтобы перейти к сути.
function Get-NotExpiring{
$NotExpiring=New-Object System.Collections.Generic.List[System.Object]
$MatchedUser=New-Object System.Collections.Generic.List[System.Object]
$textfiles = Get-ChildItem $email_dir
#Day of Span
$Days="20"
#Settings
$Date=Get-Date ((Get-Date).adddays($Days))
$Users=Get-ADUser -filter {(Enabled -eq $True) -and (PasswordNeverExpires -eq $False)} -Properties SamAccountName, DisplayName, msDS-UserPasswordExpiryTimeComputed, Mail | Where-Object { $_.DisplayName -ne $nul -and ($_."msDS-UserPasswordExpiryTimeComputed" -gt ($NotExpDate.ToFileTime()))} | Select SamAccountName, Mail, DisplayName,@{Name="ExpiryDate";Expression={([datetime]::fromfiletime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime}}
#Magic
foreach ($Entry in $Users) {
$EntryDate = Get-date($Entry.ExpiryDate)
if ($EntryDate -gt $Date){
$Account = $Entry.SamAccountName
$ExpDate = $Entry.ExpiryDate
$NotExpiring.add($Account)
}
}
#STUCK HERE
foreach($file in $textfiles){
foreach ($user in $NotExpiring){
if((Get-Content "$email_dir\$file") -contains $user){
$temp_get = Get-Content $email_dir\$file | where {$_ -notmatch $user}
}}}
$temp_get}
Я попробовал ниже, но это не работает, если более одного пользователя имеют $ NotExpiring, которые также находятся всуществующий текстовый файл.Любая помощь будет оценена.Я знаю, что это простое исправление, но я не могу понять это.
Get-Content $email_dir\$file | where {$_ -notmatch $user} | Set-Content <path>.txt
Я смог достичь именно того, что мне было нужно, используя следующее решение.
foreach($file in $textfiles){ foreach ($user in $NotExpiring){
if((Get-Content "$email_dir\$file") -contains $user){
$MatchedUser.add($user)
}}
Get-Content "$email_dir\$file" | Where {$MatchedUser -NotContains $_ } | Set Content "$temp_dir\$file"
Copy-Item -path "$temp_dir\$file" -Destination "$email_dir\$file" -ErrorAction SilentlyContinue }