显示错误“ 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 访问权限和本地管理员权限的凭据登录时执行此逻辑。
与您之前使用的相比,这里有几个不同之处……
这使用
Get-CimInstance -Class Win32_UserProfile
以及Remove-CimInstance
而不是Remove-LocalUser -InputObject
通过
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;
}
};
支持资源
- 获取 CIM 实例
- 删除-CIMInstance
- ForEach 对象
标准别名对于 Foreach 对象:'
%
' 符号,ForEach - 哪里对象
'
?
' 符号和 Where 都是 Where-Object 的别名。如果您