设置脚本执行策略以跳过当前进程的执行策略限制
Set-ExecutionPolicy Bypass -Scope Process -Force
定义变量
\(StaticIP = "192.168.1.100" # 静态 IP 地址 \)SubnetMask = “255.255.255.0” # 子网掩码 \(Gateway = "192.168.1.1" # 网关 \)DNS = “192.168.1.2” # DNS 服务器 \(NewComputerName = "NewPCName" # 新计算机名 \)DomainName = “yourdomain.com” # 域名 \(DomainUser = "yourdomainuser" # 域用户 \)DomainPassword = ConvertTo-SecureString “yourdomainpassword” -AsPlainText -Force # 域密码(创建安全字符串) \(AutoLogonUser = "yourautologonuser" # 自动登录用户名 \)AutoLogonPassword = ConvertTo-SecureString “yourautologonpassword” -AsPlainText -Force # 自动登录密码(创建安全字符串)
封装网络设置为一个函数
function Set-NetworkSettings {
try {
# 获取网络适配器,选择状态为“Up”的在线网络适配器,如果没有则抛出异常。
$Adapter = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' }
if (-not $Adapter) {
throw "无法找到状态为“Up”的网络适配器。"
}
# 配置静态 IP、子网掩码和默认网关
New-NetIPAddress -InterfaceIndex $Adapter.ifIndex -IPAddress $StaticIP -PrefixLength $SubnetMask.Length -DefaultGateway $Gateway
# 配置 DNS 服务器地址
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses $DNS
# 修改计算机名
Rename-Computer -NewName $NewComputerName -Force
} catch {
Write-Error "设置 IP、DNS 或计算机名时出错:$_"
exit 1
}
}
封装自动登录设置为一个函数
function Set-AutoLogon {
try {
# 创建 PSCredential 对象,用于配置自动登录。
$AutoLogonCred = New-Object System.Management.Automation.PSCredential($AutoLogonUser, $AutoLogonPassword)
# 配置自动登录,并强制重启计算机。
$RegPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Set-ItemProperty -Path $RegPath -Name "AutoAdminLogon" -Value "1"
Set-ItemProperty -Path $RegPath -Name "DefaultUserName" -Value $AutoLogonUser
Set-ItemProperty -Path $RegPath -Name "DefaultPassword" -Value $AutoLogonPassword
Restart-Computer -Force
} catch {
Write-Error "设置自动登录或重启计算机时出错:$_"
exit 1
}
}
封装加入域操作为一个函数
function Join-Domain {
try {
# 创建 PSCredential 对象,用于将计算机添加到域。
# 如果用户名和密码包含特殊字符,可以使用 ConvertTo-SecureString 命令创建安全字符串。
$DomainCred = New-Object System.Management.Automation.PSCredential($DomainUser, $DomainPassword)
# 将计算机加入域,并强制重启计算机。
Add-Computer -DomainName $DomainName -Credential $DomainCred -Restart -Force
} catch {
Write-Error "将计算机加入域时出错:$_"
exit 1
}
}
执行网络设置
Set-NetworkSettings
执行自动登录设置
Set-AutoLogon
执行加入域操作
Join-Domain
注释:
- 设置脚本执行策略以跳过当前进程的执行策略限制。
- 定义需要用到的变量。
- 封装网络设置为一个函数,该函数会获取状态为“Up”的在线网络适配器,并配置静态 IP、子网掩码和默认网关,然后配置 DNS 服务器地址并修改计算机名。如果出现异常,则会输出错误信息并退出脚本。
- 封装自动登录设置为一个函数,该函数会创建 PSCredential 对象,并使用该对象配置自动登录。然后强制重启计算机。如果出现异常,则会输出错误信息并退出脚本。
- 封装加入域操作为一个函数,该函数会创建 PSCredential 对象,并使用该对象将计算机添加到域。然后强制重启计算机。如果出现异常,则会输出错误信息并退出脚本。
- 执行网络设置、自动登录设置和加入域操作。
- 在每句代码前添加注释,以便其他人可以更容易地理解代码。