0

我想将用户从 AD 插入 SQL 我找到了执行此主题的代码,代码是

$ErrorActionPreference = 'Stop'
Set-StrictMode -Version 3

$DataArray = @(Get-ADUser -AuthType 0 -ResultSetSize 10 -filter {Name -eq 'user name'})


$DataTable = [System.Data.DataTable]::new()

$DataTable.Columns.Add([System.Data.DataColumn]::new('name', [String]))
$DataTable.Columns.Add([System.Data.DataColumn]::new('ObjectClass', [String]))

$ColumnNamesArray = @($DataTable.Columns.ColumnName)

foreach ($DataElement in $DataArray) {
    $NewRow = $DataTable.NewRow()

    foreach ($ColumnName in $ColumnNamesArray) {
        $NewRow.$ColumnName = $DataElement.$ColumnName
    }

    $DataTable.Rows.Add($NewRow)
}

$NumOfRows = $DataTable.Rows.Count 

if ($NumOfRows -ne 0)
{
    $SqlServerName = 'localhost'
    $SqlDatabaseName = 'test'
    $BatchSizeRows = 1000
    $BulkCopyTimeOutSeconds = 60
    # $SqlServerUserName = 'SqlAdmin'
    # $SqlServerUserPassword = ''

    $SqlTableName= '[dbo].[TableName]'

    # $SqlServerUserPasswordSecureString = ConvertTo-SecureString $SqlServerUserPassword -AsPlainText -Force
    # $SqlServerUserPsCredential = New-Object System.Management.Automation.PSCredential ($SqlServerUserName, $SqlServerUserPasswordSecureString)

    $WriteDbaDataTableParameters = @{
        'SqlInstance'     = $SqlServerName
        'Database'        = $SqlDatabaseName
        # 'SqlCredential'   = $SqlServerUserPsCredential
        'BatchSize'       = $BatchSizeRows
        'BulkCopyTimeOut' = $BulkCopyTimeOutSeconds
        'EnableException' = $true
    }

    Write-DbaDataTable @WriteDbaDataTableParameters -Table $SqlTableName -InputObject $DataTable
}

我非常了解 POWERSHELL 命令,我很乐意帮助您了解这些命令的语言和作用:[System.Data.DataColumn] 我很乐意通过 POWERSHELL 提供指向 SQL 连接命令解释的链接的帮助

4

0 回答 0