UPDATE: Изменен скрипт для работы в пределах PS1, как требуется SQLPS.Powershell от SQL Server Agent Job не распознает ConvertTo-CSV
Изменено:
IF($property.Value -match $regex){
$currentBadLine = (ConvertTo-Csv $_ -NoTypeInformation -Delimiter $delimiter);
$badLines += $currentBadLine[1,2]
};
To:
IF($property.Value -match $regex){
$badLines += $_ | Select-Object | ft -autoSize;
};
печать новый заголовок для каждой плохой линии, но это не конец света, и не стоит усилий, чтобы предотвратить.
У меня есть сценарий Powershell, который предварительно обрабатывает CSV-файлы, прежде чем они есть шанс испортить мой импорт данных.
На двух серверах в строке теперь я подтвердил, что основная версия PS не менее 2, и что следующий снимок кода отлично работает в PowerShell ISE. Цель кода - прочитать в каждой строке CSV, а затем пропустить столбцы, которые ищут шаблон регулярного выражения в переменной $ regex. Когда он находит один, я хочу, чтобы он отслеживал ошибку до ее исправления, поэтому я могу написать журнал ошибок позже, прежде чем выводить очищенный файл, готовый для импорта.
%{
Foreach($Property in $_.PSObject.Properties){
IF($property.Value -match $regex){
$currentBadLine = (ConvertTo-Csv $_ -NoTypeInformation -Delimiter $delimiter);
$badLines += $currentBadLine[1,2]
};
$property.Value = $property.Value -replace $regex;
}
$_
}
Но когда я поставить этот код в работу агента агент жалуется:
«Термин„ConvertTo-Csv“не распознается как имя командлета, функции, файл сценария , или действующей программы. Проверьте правильность написания имени или если был указан путь, убедитесь, что путь верен, и повторите попытку. '
Вопрос в этом заключается в следующем: Является ли подсистема Powershell Agents другой версией Powershell, чем остальная система? Если да, то каким образом я могу узнать, какую версию использует подсистема, и, если возможно, обновить ее, чтобы я мог это исправить.
Сервер работает под управлением:
Windows Server 2008 R2 Enterprise
PS Основная версия 2, Minor 0 Сложение -1 редакция -1
SQL Server 2008 R2 SP1 10.5.2500.0 64 бит
Спасибо!
Awesome. Я слышал, что интеграция PS-SQL Server была странной на некоторое время, но я думал, что ее в основном сгладили. Думаю нет. Благодарю. –