Добавить машину CentOS в домен с помощью PowerShell?

Я хочу добавить свой компьютер CentOS в свой домен Windows с помощью команды PowerShell (после установки PowerShell на сервере centos).

Я могу сделать это с помощью собственных команд Linux с областью, но мне не нужен этот метод.

У меня есть решение с использованием команды unix, но Мне нужна команда как для unix, так и для Windows, поскольку установлен powershell.


person Sonu    schedule 26.02.2018    source источник
comment
Приведенный ниже URL-адрес предоставляет решение winsysblog.com/2018/ 01 /, но я не хочу, чтобы в него входила какая-либо команда unix. вместо этого мне нужна командная команда как для unix, так и для Windows, поскольку установлен PowerShell.   -  person Sonu    schedule 26.02.2018
comment
PS 6 довольно новый. Я серьезно сомневаюсь, что для этого существует способ .Net Core. Даже если кто-нибудь когда-нибудь напишет это в какой-нибудь будущий выпуск PS, есть довольно хороший шанс, что это будет просто оболочка для команд posix. Почему для вас это проблема?   -  person EBGreen    schedule 26.02.2018
comment
Нет такой команды (пока). Найдите командлет Add-Computer и вернитесь к коду, который обнаруживает Linux и выдает альтернативные команды, когда его нет. Вы даже можете экспортировать свой собственный Add-Computer для этого, если хотите, чтобы ваши скрипты были единообразными. Если Add-Computer будет когда-либо добавлен к основным командлетам Unix, вы сможете это использовать.   -  person Jeroen Mostert    schedule 26.02.2018
comment
У вас не будет для этого ни одной команды, лучшее, что вы получите, - это создать сценарий, который может обнаруживать ОС и запускать соответствующие команды для Linux и Windows. Ссылка в вашем вопросе относится к Linux, поэтому, если вы также используете PS6 на своих компьютерах с Windows, лучше всего добавить что-то вроде if ($IsWindows) { Add-Computer [...] }.   -  person James C.    schedule 26.02.2018
comment
Мне нужно это часть моего скрипта для соединения как Linux, так и Windows с помощью одного скрипта на платформе Azure   -  person Sonu    schedule 26.02.2018
comment
Итак, как было предложено, пусть ваш сценарий обнаружит ОС, а затем добавьте его с соответствующим кодом.   -  person EBGreen    schedule 26.02.2018
comment
да, я сделал это, но просто смотрел, возможно ли это еще с помощью собственных команд PowerShell. Если наткнетесь, просто разместите здесь. в то же время я буду использовать существующий скрипт с условием if для окон или Linux и запускать его соответственно.   -  person Sonu    schedule 26.02.2018
comment
Powershell имеет открытый исходный код. Вам нужно сделать запрос на перенос и написать эти командлеты :)   -  person EBGreen    schedule 26.02.2018


Ответы (1)


Вот быстрый пример, показывающий простой if elseif else тест для запуска специальной функции ОС для присоединения к домену ...

Я использовал Join-LinuxToAD из вашей ссылки (так что он не проверялся мной), вам нужно будет адаптировать Join-WindowsToAD для удовлетворения ваших конкретных потребностей домена / безопасности.

function Join-LinuxToAD {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string]$DomainName,
        [Parameter(Mandatory = $true)]
        [string]$UserName 
    )
    #Is this host Linux?
    if (!$IsLinux) {Write-Error -Message 'This host is not Linux. Exiting'; exit}

    #Ensure you can lookup AD DNS
    nslookup $DomainName | Out-Null
    if ($LASTEXITCODE -ne 0) {Write-Error -Message 'Could not find domain in DNS. Checking settings'; exit}

    #Ensure Samba and dependencies installed
    yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python -y | Out-Null
    if ($LASTEXITCODE -ne 0) {Write-Error -Message 'Could not install one or more dependencies'; exit}

    #Join domain with realm
    realm join $DomainName --user=$UserName
    if ($LASTEXITCODE -ne 0) {Write-Error -Message "Could not join domain $DomainName. See error output"; exit}
    if ($LASTEXITCODE -eq 0) {Write-Output 'Yay! Your host is joined!'}
}

function Join-WindowsToAD {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [string]$DomainName,
        [Parameter(Mandatory = $true)]
        [System.Management.Automation.PSCredential]$Credential
    )
    #Is this host Windows?
    if (!$IsWindows) {Write-Error -Message 'This host is not Windows. Exiting'; exit}

    Add-Computer -DomainName $DomainName -Credential $Credential
}

if ($IsLinux) {Join-LinuxToAD}
elseif ($IsWindows) {Join-WindowsToAD}
else { Write-Error -Message 'Unknown OS Type' ; exit}
person James C.    schedule 26.02.2018