如何使用PowerShell 5.1将SQL中的数据与目录中的数据进行比较



数据库中的两列MAFNVersion,当与点";CCD_ 3";与目录中的文件夹名称具有(几乎相同(格式。列中的数据MAFN123Version1文件夹的名称如下:001234.001,789.011等我能够从目录文件夹名称中删除前导零。我还能够连接两列中的数据。

我想将查询中的连接项目与目录中的(新(文件夹名称进行比较,如果它们匹配,我想做点什么。

问题是我如何比较这两者,SQL中连接的数据和文件夹名称。

我曾尝试将SQL中的数据存储在一个变量中,但它不起作用。假设数据存储为$sqlData,则Write-Host $sqlData给出以下输出System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow System.Data.DataRow Syste m.Data.DataRow

代码为:

#SQL connection and concat columns
Invoke-Sqlcmd -ServerInstance "Sidney9.sidney.nii" -Database "NML_Sidney" -Query "SELECT  TOP (10) MAFN,Version,(Convert(varchar(50),MAFN)+'.'+Convert(varchar(50),Version))
FROM [NML_Sidney].[dbo].[vNML_MAFN_CNCP_ByPartResource]"
#Split, trim, and join folder names to match concated data from SQL
$aidLibPath = "C:UsersuserNameDesktopCNC_Transfer_Test_FoldersAidLib_Test*"
Get-Item -Path $aidLibPath | ForEach-Object{
$splitFileName = $_.Name.Split('.')
$trimSplitFileName = $splitFileName.trimstart("0")-join(".")
write-host $trimSplitFileName
}

基本上,我如何将数据存储在一个变量中,并对它们进行循环比较?

我使用的是MSSQL 2005和PowerShell 5.1,其中加载了SQL Server和SQLPS模块。

感谢您的帮助。

TSQL中的字符串串联是不需要的,如果你有一个不错的脚本语言,如PowerShell可用。

如果sql返回所需的值,我将如何做到这一点:

#SQL connection and concat columns
$dbResult = Invoke-Sqlcmd -ServerInstance "Sidney9.sidney.nii" -Database "NML_Sidney" -Query "SELECT  TOP (10) MAFN,Version
FROM [NML_Sidney].[dbo].[vNML_MAFN_CNCP_ByPartResource]"
$dbFolders = $dbResult | ForEach-Object { "$( $_.MAFN ).$( $_.Version )" }
#Split, trim, and join folder names to match concated data from SQL
$aidLibPath = 'C:UsersuserNameDesktopCNC_Transfer_Test_FoldersAidLib_Test'
$folders = ( Get-ChildItem -Path $aidLibPath -Directory ).Name | Where-Object { 
$_.IndexOf( '.' ) -gt 0 } | ForEach-Object {
$parts = $_.Name -split '.'
"$( $parts[0].TrimStart('0') ).$( $parts[1].TrimStart('0') )"        
}
# compare the lists to see what the intersect is
$result = Compare-Object -ReferenceObject $dbFolders -DifferenceObject $folders -IncludeEqual -ExcludeDifferent
if ( $result ) {
$result.InputObject
}

最新更新