我有一个脚本,用于重置远程机器的本地管理员密码,我在脚本中提到了主机列表。但是我想有什么办法,这样我们就可以在我的脚本中添加一行了,这样就可以了将重置特定子网集中的所有计算机的管理员密码(例如:10.241.1.0和10.241.2.0)?
任何人都可以帮助我吗?
$computers = Get-Content -path C:\hosts.txt
$user = "Administrator"
$pass = "password1"
Foreach($computer in $computers)
{
$user = [adsi]"WinNT://$computer/$user,user"
$user.SetPassword($pass)
$user.SetInfo()
}
答案 0 :(得分:0)
您可以使用范围运算符(a..b
)轻松生成IP子网。我将定义一个函数,然后用特定的子网调用它:
Function Get-SubnetIps($subnet){ 1..254 | %{ $subnet + $_ } }
示例用法是:
$computers = Get-SubnetIps "192.168.1."
$user = "Administrator"
$pass = "password1"
Foreach($computer in $computers)
{
$user = [adsi]"WinNT://$computer/$user,user"
$user.SetPassword($pass)
$user.SetInfo()
}
如果无法访问每个IP,您可能会遇到问题。 try/catch
如果这应该成功,将会为您节省开支。编写这些类型的脚本时,它可以是helpful to report progress。