У меня есть этот скрипт профиля удаления, который запрашивает имя пользователя и удаляет его с каждого перечисленного компьютера. Элементы удаления и «пользователь вошли в систему» работают, но часть, которая гласит: «Нет профилей, найденных на компьютере с именем $ UserName», нет. Я запустил свой сценарий на двух компьютерах и удалил мой профиль на обоих. Я воссоздал свой профиль (вошел в систему) и остался включенным в один, а не другой. Я запускаю его снова, и он дает мне сообщение «пользователь вошел в систему». Для другого компьютера он просто удалил профиль, не отображая сообщение «no profile found». Он просто пропускает его и ничего не отображает. Я изменил «if» на «else», но когда я это делаю, он отображает несколько строк «без профилей», включая компьютер, на котором он ранее удалял профиль.Powershell Удалить скрипт профиля - проверка ошибок не работает
Вот ссылка, на которой происходит большая часть сценария. http://techibee.com/powershell/powershell-script-to-delete-windows-user-profiles-on-windows-7windows-2008-r2/1556. Просматривая комментарии, у кого-то еще не было никаких проблем с этой частью.
У меня мало знаний в PowerShell, и это только что было собрано из других сценариев, которые я нашел на основе наших потребностей. Наша среда - Windows 7 и Server 2008 R2. Любая помощь очень ценится.
$UserName=Read-host "Please Enter Username: "
$ComputerName= @("computer1","computer2")
foreach($Computer in $ComputerName) {
Write-Verbose "Working on $Computer"
if(Test-Connection -ComputerName $Computer -Count 1 -ea 0) {
$Profiles = Get-WmiObject -Class Win32_UserProfile -Computer $Computer -ea 0
foreach ($profile in $profiles) {
$objSID = New-Object System.Security.Principal.SecurityIdentifier($profile.sid)
$objuser = $objsid.Translate([System.Security.Principal.NTAccount])
$profilename = $objuser.value.split("\")[1]
if($profilename -eq $UserName) {
$profilefound = $true
try {
$profile.delete()
Write-Host -ForegroundColor Green "$UserName profile deleted successfully on $Computer"
} catch {
Write-Host -ForegroundColor Yellow "Failed to delete the profile, $UserName logged on to $Computer"
}
}
}
if(!$profilefound) {
Write-Host -ForegroundColor Cyan "No profiles found on $Computer with Name $UserName"
}
} else {
write-verbose "$Computer Not reachable"
}
}
'$ Profile' является автоматическим переменным, используйте другое имя переменного в цикле Еогеаспа (например,' Еогеасп ($ psprofile в $ профилях) {} ') –
Спасибо за предложение.Я не знал об этом.Я пробовал, и он больше не дает выход вообще.Я вошел в систему на одном из компьютеров, и он должен дать выход, говоря, что" пользователь вошел в систему ». – DavidG
В любом случае это не сработает, 'Win32_UserProfile' не имеет метода' delete() ' –