Add-Computer

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

语法

Add-Computer
   [-ComputerName <String[]>]
   [-LocalCredential <PSCredential>]
   [-UnjoinDomainCredential <PSCredential>]
   -Credential <PSCredential>
   [-DomainName] <String>
   [-OUPath <String>]
   [-Server <String>]
   [-Unsecure]
   [-Options <JoinOptions>]
   [-Restart]
   [-PassThru]
   [-NewName <String>]
   [-Force]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
Add-Computer
   [-ComputerName <String[]>]
   [-LocalCredential <PSCredential>]
   [-Credential <PSCredential>]
   [-WorkgroupName] <String>
   [-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 参数在加入操作完成后重新启动计算机,并使用 Force 参数取消用户确认消息。

示例 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-ComputerComputerName 参数。

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

类型:String[]
Position:Named
默认值:Local computer
必需:False
接受管道输入:True
接受通配符:False

-Confirm

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

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Credential

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

键入用户名,如“User01”或“Domain01\User01”;或输入 PSCredential 对象,例如 Get-Credential cmdlet 生成的对象。 如果键入用户名,则将提示你输入密码。

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

类型:PSCredential
别名:DomainCredential
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-DomainName

指定要向其中添加计算机的域。 在将计算机添加到域时需要使用此参数。

类型:String
别名:DN, Domain
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:False

-Force

取消用户确认提示。 如果不使用此参数,则 Add-Computer 会要求你确认每次计算机的添加操作。

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

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-LocalCredential

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

键入用户名,如“User01”或“Domain01\User01”;或输入 PSCredential 对象,例如 Get-Credential cmdlet 生成的对象。 如果键入用户名,则将提示你输入密码。

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

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

类型:PSCredential
Position:Named
默认值:Current user
必需:False
接受管道输入:False
接受通配符:False

-NewName

在新域中指定计算机的新名称。 此参数仅在一台计算机被添加或移动时有效。

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

类型:String
Position:Named
默认值:None
必需:False
接受管道输入:True
接受通配符:False

-Options

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

此参数的可接受值为:

  • AccountCreate:创建域帐户。 Add-Computer cmdlet 在将计算机添加到域中时自动创建一个域帐户。 包含此选项以提高完整性。

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

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

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

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

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

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

已在 Windows PowerShell 3.0 中引入了此参数。

类型:JoinOptions
接受的值:AccountCreate, Win9XUpgrade, UnsecuredJoin, PasswordPass, DeferSPNSet, JoinWithNewName, JoinReadOnly, InstallInvoke
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-OUPath

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

类型:String
别名:OU
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-PassThru

返回一个代表你所处理的项目的对象。 默认情况下,此 cmdlet 将不产生任何输出。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Restart

重启已添加到域或工作组中的计算机。 若要更改生效,通常需要重新启动。

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

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Server

指定向域中添加计算机的域控制器的名称。 以 DomainName\ComputerName 格式输入该名称。 默认情况下,将不指定域控制器。

类型:String
别名:DC
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-UnjoinDomainCredential

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

键入用户名,如“User01”或“Domain01\User01”;或输入 PSCredential 对象,例如 Get-Credential cmdlet 生成的对象。 如果键入用户名,则将提示你输入密码。

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

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

类型:PSCredential
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Unsecure

执行不安全的加入指定域的操作。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-WorkgroupName

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

类型:String
别名:WGN
Position:0
默认值:None
必需:True
接受管道输入:False
接受通配符:False

输入

String

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

输出

ComputerChangeInfo

如果使用的是 PassThru 参数,则 Add-Computer 将返回 ComputerChangeInfo 对象。 否则,此 cmdlet 将不生成任何输出。

备注

  • 在 Windows PowerShell 2.0 中,即使存在服务器,Add-ComputerServer 参数也会失败。 在 Windows PowerShell 3.0 中,将更改 Server 参数的实现方式,以便它能够稳定运行。