Add-Computer

将本地计算机添加到域或工作组中。

语法

Domain (默认值)

Add-Computer
    [-DomainName] <String>
    -Credential <PSCredential>
    [-ComputerName <String[]>]
    [-LocalCredential <PSCredential>]
    [-UnjoinDomainCredential <PSCredential>]
    [-OUPath <String>]
    [-Server <String>]
    [-Unsecure]
    [-Options <JoinOptions>]
    [-Restart]
    [-PassThru]
    [-NewName <String>]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Workgroup

Add-Computer
    [-WorkgroupName] <String>
    [-ComputerName <String[]>]
    [-LocalCredential <PSCredential>]
    [-Credential <PSCredential>]
    [-Restart]
    [-PassThru]
    [-NewName <String>]
    [-Force]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

说明

Add-Computer cmdlet 将本地计算机或远程计算机添加到域或工作组,或将它们从一个域移动到另一个域。 如果将计算机添加到没有帐户的域,它还会创建域帐户。

可以使用此 cmdlet 的参数来指定组织单位(OU)和域控制器,或者执行不安全的联接。

若要获取命令的结果,请使用 VerbosePassThru 参数。

示例

示例 1:将本地计算机添加到域,然后重新启动计算机

Add-Computer -DomainName Domain01 -Restart

此命令将本地计算机添加到 Domain01 域,然后重启计算机以使更改生效。

示例 2:将本地计算机添加到工作组

Add-Computer -WorkgroupName WORKGROUP-A

此命令将本地计算机添加到 Workgroup-A 工作组。

示例 3:将本地计算机添加到域

Add-Computer -DomainName Domain01 -Server Domain01\DC01 -PassThru -Verbose

此命令使用 Domain01\DC01 域控制器将本地计算机添加到 Domain01 域。

该命令使用 PassThruVerbose 参数获取有关命令结果的详细信息。

示例 4:使用 OUPath 参数将本地计算机添加到域

Add-Computer -DomainName Domain02 -OUPath "OU=testOU,DC=domain,DC=Domain,DC=com"

此命令将本地计算机添加到 Domain02 域。 它使用 OUPath 参数为新帐户指定组织单位。

示例 5:使用凭据将本地计算机添加到域

$addComputerSplat = @{
    ComputerName = 'Server01'
    LocalCredential = 'Server01\Admin01'
    DomainName = 'Domain02'
    Credential = 'Domain02\Admin02'
    Restart = $true
    Force = $true
}
Add-Computer @addComputerSplat

此命令将 Server01 计算机添加到 Domain02 域。 它使用 LocalCredential 参数指定有权连接到 Server01 计算机的用户帐户。 它使用 Credential 参数指定有权将计算机加入域的用户帐户。 它使用 Restart 参数在联接操作完成后重新启动计算机,强制 参数禁止显示用户确认消息。

示例 6:将一组计算机移动到新域

$addComputerSplat = @{
    ComputerName = 'Server01', 'Server02', 'localhost'
    DomainName = 'Domain02'
    LocalCredential = 'Domain01\User01'
    UnjoinDomainCredential = 'Domain01\Admin01'
    Credential = 'Domain02\Admin01'
    Restart = $true
}
Add-Computer @addComputerSplat

此命令将 Server01 和 Server02 计算机以及本地计算机从 Domain01 移动到 Domain02。

它使用 LocalCredential 参数指定有权连接到三台受影响的计算机的用户帐户。 它使用 UnjoinDomainCredential 参数指定有权从 Domain01 域取消加入计算机的用户帐户,并使用 Credential 参数指定有权将计算机加入 Domain02 域的用户帐户。 它使用 Restart 参数在移动完成后重新启动所有三台计算机。

示例 7:将计算机移动到新域并更改计算机的名称

$addComputerSplat = @{
    ComputerName = 'Server01'
    DomainName = 'Domain02'
    NewName = 'Server044'
    Credential = 'Domain02\Admin01'
    Restart = $true
}
Add-Computer @addComputerSplat

此命令将 Server01 计算机移动到 Domain02,并将计算机名称更改为 Server044。

该命令使用当前用户的凭据连接到 Server01 计算机,并从其当前域取消加入该计算机。 它使用 Credential 参数指定有权将计算机加入 Domain02 域的用户帐户。

示例 8:将文件中列出的计算机添加到新域

$addComputerSplat = @{
    ComputerName = (Get-Content Servers.txt)
    DomainName = 'Domain02'
    Credential = 'Domain02\Admin02'
    Options = 'Win9xUpgrade'
    Restart = $true
}
Add-Computer @addComputerSplat

此命令将 Servers.txt 文件中列出的计算机添加到 Domain02 域。 它使用 Options 参数来指定 Win9xUpgrade 选项。 在联接操作完成后,Restart 参数将重新启动所有新添加的计算机。

示例 9:使用预定义的计算机凭据将计算机添加到域

第一个命令应由已加入域 Domain03 的计算机的管理员运行:

$newADComputerSplat = @{
    Name = "Server02"
    AccountPassword = (ConvertTo-SecureString -String 'TempJoinPA$$' -AsPlainText -Force)
}
New-ADComputer @newADComputerSplat

# Then this command is run from `Server02` which is not yet domain-joined:

$joinCred = New-Object pscredential -ArgumentList ([pscustomobject]@{
    UserName = $null
    Password = (ConvertTo-SecureString -String 'TempJoinPA$$' -AsPlainText -Force)[0]
})
$addComputerSplat = @{
    DomainName = "Domain03"
    Options = 'UnsecuredJoin', 'PasswordPass'
    Credential = $joinCred
}
Add-Computer @addComputerSplat

此命令组合使用已加入域的现有计算机在域中创建一个具有预定义名称和临时加入密码的新计算机帐户。 然后,具有预定义名称的计算机仅使用该计算机名和临时加入密码加入域。 预定义的密码仅用于支持加入操作,并在计算机完成加入后作为正常创建计算机帐户过程的一部分进行替换。

示例 10:将计算机添加到具有新名称的域

使用这种命令组合可避免在计算机使用新名称加入域时为同一对象多次重新启动和多次写入 Active Directory 写入。

Rename-Computer -NewName "MyNewPC" -Force
$addComputerSplat = @{
    DomainName = 'Contoso.com'
    Credential = 'contoso\administrator'
    Options = 'JoinWithNewName', 'AccountCreate'
}
Add-Computer @addComputerSplat

参数

-ComputerName

指定要添加到域或工作组的计算机。 默认值为本地计算机。

键入 NetBIOS 名称、Internet 协议 (IP) 地址或每个远程计算机的完全限定域名。 若要指定本地计算机,请键入计算机名称、句点 (.) 或“localhost”。

此参数不依赖于 Windows PowerShell 远程处理。 即使计算机未配置为运行远程命令,也可以使用 参数中的 Add-Computer

此参数在 Windows PowerShell 3.0 中引入。

参数属性

类型:

String[]

默认值:Local computer
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:True
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Confirm

在运行 cmdlet 之前,提示你进行确认。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Credential

指定有权将计算机加入新域的用户帐户。 默认值为当前用户。

键入用户名(如“User01”或“Domain01\User01”),或输入 PSCredential 对象,例如由 Get-Credential cmdlet 生成的用户名。 如果键入用户名,系统会提示输入密码。

若要指定有权从当前域中删除计算机的用户帐户,请使用 UnjoinDomainCredential 参数。 若要指定有权连接到远程计算机的用户帐户,请使用 LocalCredential 参数。

参数属性

类型:PSCredential
默认值:None
支持通配符:False
不显示:False
别名:DomainCredential

参数集

Domain
Position:Named
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False
Workgroup
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-DomainName

指定将计算机添加到的域。 将计算机添加到域时,此参数是必需的。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:DN, 域名

参数集

Domain
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Force

取消用户确认提示。 如果没有此参数,Add-Computer 要求确认添加每台计算机。

此参数在 Windows PowerShell 3.0 中引入。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-LocalCredential

指定有权连接到由 ComputerName 参数指定的计算机的用户帐户。 默认值为当前用户。

键入用户名(如“User01”或“Domain01\User01”),或输入 PSCredential 对象,例如由 Get-Credential cmdlet 生成的用户名。 如果键入用户名,系统会提示输入密码。

若要指定有权将计算机添加到新域的用户帐户,请使用 Credential 参数。 若要指定有权从当前域中删除计算机的用户帐户,请使用 UnjoinDomainCredential 参数。

此参数在 Windows PowerShell 3.0 中引入。

参数属性

类型:PSCredential
默认值:Current user
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-NewName

为新域中的计算机指定一个新名称。 仅当添加或移动一台计算机时,此参数才有效。

此参数在 Windows PowerShell 3.0 中引入。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):True
来自剩余参数的值:False

-Options

Add-Computer 加入操作指定高级选项。 在逗号分隔的字符串中输入一个或多个值。

此参数的可接受值为:

  • AccountCreate:创建域帐户。 Add-Computer cmdlet 在将计算机添加到域时自动创建域帐户。 此选项是出于完整性而包含的。

  • Win9XUpgrade:指示联接操作是 Windows 操作系统升级的一部分。

  • UnsecuredJoin:执行不安全的联接。 若要请求不安全的联接,请使用 不安全 参数或此选项。 如果要传递计算机密码,则必须将此选项与 PasswordPass 选项结合使用。

  • PasswordPass:执行不安全联接后,将计算机密码设置为 Credential(DomainCredential) 参数的值。 此选项还指示 Credential(DomainCredential) 参数的值是计算机密码,而不是用户密码。 仅当指定了 UnsecuredJoin 选项时,此选项才有效。 使用此选项时,提供给 -Credential 参数的凭据必须具有 null 用户名。

  • JoinWithNewName:将新域中的计算机名称重命名为由 NewName 参数指定的名称。 使用 NewName 参数时,将自动设置此选项。 此选项旨在与 Rename-Computer cmdlet 一起使用。 如果使用 Rename-Computer cmdlet 重命名计算机,但不重新启动计算机以使更改生效,则可以使用此参数将计算机加入具有新名称的域。

  • JoinReadOnly:使用现有计算机帐户将计算机加入只读域控制器。 计算机帐户必须添加到密码复制策略的允许列表中,并且必须在加入操作之前将帐户密码复制到只读域控制器。

  • InstallInvoke:设置 JoinDomainOrWorkgroup 方法的 FJoinOptions 参数的 create (0x2) 和 delete (0x4) 标志。 有关 JoinDomainOrWorkgroup 方法的详细信息,请参阅 Win32_ComputerSystem 类的 JoinDomainOrWorkgroup 方法。 有关这些选项的详细信息,请参阅 NetJoinDomain 函数

此参数是在 Windows PowerShell 3.0 中引入的。

参数属性

类型:JoinOptions
默认值:None
接受的值:AccountCreate, Win9XUpgrade, UnsecuredJoin, PasswordPass, DeferSPNSet, JoinWithNewName, JoinReadOnly, InstallInvoke
支持通配符:False
不显示:False

参数集

Domain
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-OUPath

为域帐户指定组织单位 (OU)。 在引号中输入 OU 的完全可分辨名称。 默认值为域中计算机对象的默认 OU。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:OU

参数集

Domain
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-PassThru

返回一个对象,该对象表示你正在处理的项目。 默认情况下,此 cmdlet 不生成任何输出。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Restart

重启已添加到域或工作组的计算机。 通常需要重启才能使更改生效。

此参数在 Windows PowerShell 3.0 中引入。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Server

指定将计算机添加到域的域控制器的名称。 以 FQDN 格式输入名称。 默认情况下,未指定任何域控制器。

从 2024 年 8 月开始,域加入的安全性强化要求使用域控制器的 FQDN。 例如: DC1.contoso.com。 有关详细信息,请参阅 NetJoin 域加入硬化更改

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:DC

参数集

Domain
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-UnjoinDomainCredential

指定有权从当前域中删除计算机的用户帐户。 默认值为当前用户。

键入用户名(如“User01”或“Domain01\User01”),或输入 PSCredential 对象,例如由 Get-Credential cmdlet 生成的用户名。 如果键入用户名,系统会提示输入密码。

将计算机移动到其他域时,请使用此参数。 若要指定有权加入新域的用户帐户,请使用 Credential 参数。 若要指定有权连接到远程计算机的用户帐户,请使用 LocalCredential 参数。

此参数在 Windows PowerShell 3.0 中引入。

参数属性

类型:PSCredential
默认值:None
支持通配符:False
不显示:False

参数集

Domain
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Unsecure

执行到指定域的不安全联接。

参数属性

类型:SwitchParameter
默认值:None
支持通配符:False
不显示:False

参数集

Domain
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 命令脚本未运行。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WorkgroupName

指定将计算机添加到的工作组的名称。 默认值为“WORKGROUP”。

参数属性

类型:String
默认值:None
支持通配符:False
不显示:False
别名:WGN

参数集

Workgroup
Position:0
必需:True
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

String

可以通过管道将计算机名称和新名称传递给 Add-Computer Cmdlet。

输出

ComputerChangeInfo

使用 PassThru 参数时,Add-Computer 返回 ComputerChangeInfo 对象。 否则,此 cmdlet 不会生成任何输出。

备注

  • 在 Windows PowerShell 2.0 中,即使服务器存在,Add-Computer 参数也会失败。 在 Windows PowerShell 3.0 中,Server 参数的实现已更改,以便可靠地工作。