PowerShell脚本-如果不存在则创建组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerShell脚本-如果不存在则创建组相关的知识,希望对你有一定的参考价值。

使用简单的PowerShell脚本在AD中创建计算机组。如果该组存在,则打印已经存在,否则创建新的。但是出了点问题,并且没有创建新的组。

Import-Module ActiveDirectory
Import-Module Centrify.DirectControl.PowerShell

Clear-Variable -Name "Result"
Clear-Variable -Name "JSONOutput"
Clear-Variable -Name "ErrorMessage"
Clear-History

$username='<>';
$password='<>';
$computerGroup = 'Sample-New-Role';


# ************* SET CREDENTIALS *************************************
$Password = ConvertTo-SecureString $password -AsPlainText -Force
$global:Cred = New-Object System.Management.Automation.PSCredential($username,$Password)
Set-CdmCredential -Domain (Get-WmiObject Win32_ComputerSystem).Domain -Credential $Cred
$global:DomainController = Get-ADDomain -Current LocalComputer
Set-CdmPreferredServer -Domain (Get-WmiObject Win32_ComputerSystem).Domain -Server $global:DomainController.InfrastructureMaster
$global:OUPath = Get-ADOrganizationalUnit -Filter 'Name -like "Role Groups-Computer"'

# ************************ Create Zone ******************************
try{
    if(Get-ADGroup -filter {Name -eq $computerGroup} -ErrorAction Continue)
    {
            $Result = "Already_Exists"
    } else 
        {
            New-ADGroup -Name $computerGroup -GroupScope Global -GroupCategory Security -Path $global:OUPath -Credential $Cred
            $Result = 'Success'
        }
}
catch{
$ErrorMessage = $_.Exception
}

# ************************* Result *********************************
$JSONOutput = @{"result"=$Result;"error"=$ErrorMessage} | ConvertTo-Json -Compress
Write-Output $JSONOutput

输出:如果组已经存在,则只需创建新的else打印'Already_Exists'如果组已经存在但失败并且在创建新组时出错,则工作正常。它应该创建组,而不是错误。条件有任何问题。请提出建议。

{"error":{"Message":"Cannot find an object with identity: u002709328-Sample-New-Roleu0027 ....
答案
Import-Module ActiveDirectory
Import-Module Centrify.DirectControl.PowerShell

Clear-Variable -Name "Result"
Clear-Variable -Name "JSONOutput"
Clear-Variable -Name "ErrorMessage"
Clear-History

$username='<>';
$password='<>';
$computerGroup = 'Sample-New-Role';


# ************* SET CREDENTIALS *************************************
$Password = ConvertTo-SecureString $password -AsPlainText -Force
$global:Cred = New-Object System.Management.Automation.PSCredential($username,$Password)
Set-CdmCredential -Domain (Get-WmiObject Win32_ComputerSystem).Domain -Credential $Cred
$global:DomainController = Get-ADDomain -Current LocalComputer
Set-CdmPreferredServer -Domain (Get-WmiObject Win32_ComputerSystem).Domain -Server $global:DomainController.InfrastructureMaster
$global:OUPath = Get-ADOrganizationalUnit -Filter 'Name -like "Role Groups-Computer"'

# ************************ Create Zone ******************************
try{
    if(Get-ADGroup -filter {Name -eq $computerGroup} -ErrorAction Continue)
    {
            $Result = "Already_Exists"
    } else 
        {
            New-ADGroup -Name $computerGroup -GroupScope Global -GroupCategory Security -Path $global:OUPath -Credential $Cred
            $Result = 'Success'
        }
}
catch{
$ErrorMessage = $_.Exception
}

# ************************* Result *********************************
$JSONOutput = @{"result"=$Result;"error"=$ErrorMessage} | ConvertTo-Json -Compress
Write-Output $JSONOutput

以上是关于PowerShell脚本-如果不存在则创建组的主要内容,如果未能解决你的问题,请参考以下文章

Shell 脚本 - 如果目录不存在则创建目录

如何使用 CSV 创建本地用户并将它们放在一个组中

PowerShell脚本来计算多个组的成员而不重复

powershell 测试电源外壳中是否存在Azure帐户,如果不存在则添加它

Shell 脚本检查 dir 目录是不是存在然后更改路径,如果不存在则使用该名称创建 dir 并检查文件名不存在

如果尚不存在则创建存储过程,但是不要更改并且不要删除现有的存储过程