我试图让所有在我的域中被禁用的用户并将其放入SQL表中。我试图使用SSIS来做到这一点。现在我可以使用以下代码获取正确的输出并将其放入CSV文件中:
Search-ADAccount -AccountDisabled -UsersOnly |
Select Name |
Export-CSV -Path C:\Users\hou\Downloads\Test.csv
但是,由于我要在不同的服务器上运行该软件包,因此我无法通过固定的位置来存储文件并加载到SQL Table中。因此,我要在执行流程任务(我运行Powershell脚本)中使用变量来存储CSV文件,或者使用SSIS将输出直接存储在SQL表中。
但我不知道那些。我怎么能这样做?
答案 0 :(得分:0)
位置应在脚本中定义,即:
$Path = Get-Location
“$路径\ Test.csv”
#Option 1 just a Name
$Path = Get-Location ; Get-ChildItem C:\temp | Select-Object Name | Export-CSV -Path "$Path\Test.csv"
## Option 2 Name, with other property
$Path = Get-Location ; Get-ChildItem C:\temp | Select-Object Name,mode | Export-CSV -Path "$Path\Test.csv"
对于一个班轮脚本,请使用“; ”分隔命令。
答案 1 :(得分:0)
我建议使用PowerShell将数据加载到SQL中。 Microsoft提供了一个免费的PowerShell模块,称为“ sqlserver”,它允许PowerShell直接与SQL通信。您可能已经安装了它。
## Check if installed:
Get-InstalledModule -Name SqlServer
## If installed you can Update (you may need to run as local admin):
Update-Module -Name SqlServer
## If not installed (only need admin if you want all users to have access to this module):
Install-Module SqlServer
一旦安装了模块,就会有一个名为“ Write-SqlTableData”的cmdlet将数据批量复制到SQL中。假设是(1)该表已经存在于SQL中。 (2)PowerShell Select中的所有列都与SQL表中存在的顺序和数据类型匹配。在这种情况下,将有一个带有单个[Name]列的SQL表。 (3)您正在使用AD凭据访问SQL,否则,您将不得不向cmdlet添加凭据。
实际的PowerShell代码,更新引号中的变量:
## Input Variables
$SqlServerName = ""
$SqlDatabaseName = ""
$SqlTableSchemaName = ""
$SqlTableName = ""
## Insert into SQL
Search-ADAccount -AccountDisabled -UsersOnly | Select-Object Name | Write-SqlTableData -ServerInstance $SqlServerName -DatabaseName $SqlDatabaseName -SchemaName $SqlTableSchemaName -TableName $SqlTableName -Force
请注意,如果您打算做很多PowerShell / SQL工作,则可能还需要安装“ WFTools”模块,因为它还具有许多其他SQL cmdlet。
希望这会有所帮助。