Сообщение об ошибке четко говорит, что вам нужно JOIN
:
SELECT TOP (1) T.*, D.*
from [ADatabase].[dbo].[Tracking] T INNER JOIN
[ADatabase].[dbo].[Drivers] D
ON D.[DriverId] = T.[DriverId]
WHERE T.[UTCEventTime] > '2019-02-27' -- DON'T KNOW ABOUT TABLE WHERE IT COMES FROM
ORDER BY T.[Id] desc; -- DON'T KNOW ABOUT TABLE WHERE IT COMES FROM
Если Вы разбираетесь в своем текстовом файле, таким образом, что каждый dll находится на отдельной строке, Вы могли использовать команду Get-Content и передать каждого по каналу к фильтру, который сделал Вашу команду:
filter gac-item { C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\gacutil.exe /nologo /i $_}
get-content fileOfDlls.txt | ?{$_ -like "*.dll"} | gac-item
Если Вы создаете псевдоним в своем профиле (просто вводят $profile при подсказке PS для определения этого расположения файла) как так new-alias "gac" ($env:ProgramFiles+"\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe")
затем можно использовать gac как так:
get-childitem $basedirectory "*$filter.dll" | foreach-object -process{ WRITE-HOST -FOREGROUND GREEN "Processing $_"; gac /i $_.FullName /f}
последняя часть является самой важной. это называет gacutil с переключателями, которые Вы хотите.
Надеюсь, это поможет.
Я предложил бы вызвать функцию для добавления блока к GAC, который что-то после инструкций PowerShell любит, Добавляют-GacItem. Также местоположение gacutil.exe варьируется на основе Вашей системы. Если Вам установили VS 2008, это должно быть в местоположении, показанном ниже.
function Add-GacItem([string]$path) {
Begin {
$gacutil="$env:ProgramFiles\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe"
function AddGacItemImpl([string]$path) {
"& $gacutil /nologo /i $path"
}
}
Process {
if ($_) { AddGacItemImpl $_ }
}
End {
if ($path) { AddGacItemImpl $path }
}
}
Get-Content .\dlls.txt | Split-String | Add-GacItem
Обратите внимание, что Строка Разделения cmdlet прибывает из Pscx. Функция не супер устойчива (никакая подстановочная поддержка не проверяет на странные типы как DateTime), но по крайней мере это может обработать регулярный вызов и конвейерно обработать вызов.