Powershell 脚本删除多台服务器上的多个用户配置文件

Powershell 脚本删除多台服务器上的多个用户配置文件

显示错误“ remove-localUser”无法被识别为 cmdlet 的名称....

$hostdetail = Import-CSV C:\Users\jj\Desktop\Test\hosts.csv

ForEach ($item in $hostdetail)
{
$hostname = $($item.hostname)
$username = $($item.username)
$computer = $hostname

#Test network connection and Windows version on the remote desktop

If ((!(Test-Connection -comp $computer -count 1 -quiet)) -Or ((Get-WmiObject -ComputerName $computer Win32_OperatingSystem -ea stop).Version -lt 6.0))
{
Write-Warning "$computer is not accessible or The Operating System of the $computer is not supported.`nClient: Vista and above`nServer: Windows 2008 and above."
}
else
{
$User = $username
$SB = {
Remove-LocalUser -InputObject $Using:User
}
Invoke-Command -ComputerName $computer -ScriptBlock $SB
}
}

答案1

无需安装新的 powershell 模块即可删除远程计算机上的本地帐户的常用方法是通过 ADSI WinNT 提供程序,因为它适用于所有 NT 版本的 Windows:

$ADSI = [ADSI]"WinNT://$hostname"
$ADSI.Delete('User',$username)

答案2

我在下面为您集成了一些 PowerShell 逻辑,我已经能够多次成功地使用这些逻辑对远程 Windows 10 机器删除特定的配置文件等。

我假设您PS-Remoting对远程系统没有任何问题,并且您在以具有远程 PS 访问权限和本地管理员权限的凭据登录时执行此逻辑。

与您之前使用的相比,这里有几个不同之处……

  1. 这使用Get-CimInstance -Class Win32_UserProfile以及Remove-CimInstance而不是Remove-LocalUser -InputObject

  2. 通过Invoke-Command-AsJob参数可以在远程系统上以后台作业的形式执行命令,然后对列表中的每个后续服务器执行相同的操作。

电源外壳

$hostdetail = Import-Csv "C:\Users\jj\Desktop\Test\hosts.csv";

$hostdetail | % {
    $usename = $_.username;
    $computer = $_.hostname;
    #Test network connection and Windows version on the remote desktop
    If ((!(Test-Connection -comp $computer -count 1 -quiet)) -or 
       ((Get-WmiObject -ComputerName $computer Win32_OperatingSystem -ea stop).Version -lt 6.0))
    {
        Write-Warning "$computer is not accessible or The Operating System of the $computer is not supported.`nClient: Vista and above`nServer: Windows 2008 and above.";
    }
    Else
    {
        $User = $username;
        $SB = { Get-CimInstance -Class Win32_UserProfile | ? { $_.LocalPath.split("\")[-1] -eq "$Using:User" } | Remove-CimInstance };
        Invoke-Command -ComputerName $computer -ScriptBlock $SB -AsJob;
    }
    };

支持资源

相关内容