pkfox Ответов: 3

Проблема Powershell для noobie


Я скачал сценарий ниже, чтобы помочь мне удалить проблемную установку SQL Server, когда я пытаюсь запустить его в Редакторе PS, я получаю ошибку

The term 'Select–String' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that 
the path is correct and try again.
At line:1 char:40


msiinv.exe я скачал его по ссылке на том же сайте. Вот скрипт, я никогда раньше не пользовался PS, и Google не нашел большой помощи


$a = msiinv.exe -s | Select–String "SQL Server" -Context 1,1;
$a = $a -replace "Product code:	","msiexec /x """
$a = $a -replace ">", "rem"
$a = $a -replace "\t", ""
$a = $a -replace "}","}"""
$a | Out-File c:\BatFiles\remove.bat -encoding ascii


Что я уже пробовал:

Все вышесказанное и много ругани

Patrice T

Спросите автора этого сценария!

3 Ответов

Рейтинг:
20

Dave Kreskowiak

Select-String не появлялся в PowerShell до версии 3.0. вероятно, вы используете более раннюю версию PowerShell.

Обновите версию PowerShell на компьютере, и вы должны быть готовы к работе.


pkfox

Хорошо спасибо я попробую обновить его

pkfox

Привет, Дэйв, я обновился до версии 4 и все та же ошибка :-(

Dave Kreskowiak

Очень странный. Что возвращается, если вы печатаете $PSVersionTable.PSVersion
в командной строке PowerShell?

pkfox

ПС C:\Users\pjk> $PSVersionTable.PSVersion

Основная Незначительная Ревизия Сборки
----- ----- ----- --------
4 0 -1 -1

Dave Kreskowiak

В таком случае, я понятия не имею, что случилось. Я бы попробовал удалить PowerShell и переустановить его с версии 4.0.

pkfox

Я думал об этом спасибо

pkfox

Привет Дэйв, просто чтобы обновить вас - проблема была двоякой, во - первых , у меня не было установленного фреймворка dotnet 4.5, который является обязательным для Powershell 4, а во - вторых, была проблема копирования вставки ( у меня было это до копирования кода из интернета ) я обнаружил, что если я набирал и выполнял код строка за строкой в нижней панели редактора ps, то он работал, поэтому я просто набрал все это в скрипт и бинго-теперь я одержим Powershell-спасибо, что указали мне правильное направление.

Dave Kreskowiak

Круто. У меня установлены все версии .NET, так что мне даже не пришло в голову, что это может быть проблемой.

Răzvan Muntea

.\msiinv.exe -s | Select-String "SQL Server" -Context 0,1 действительно работал как одна команда, но ни одно из решений abouve для генерации .bat не работало для меня. У меня есть powershell 5

Я удалил компоненты вручную

Рейтинг:
1

Member 10348502

Попробуйте это, это сработало для меня:
$a = d:\temp\msiinv.exe -s | Select-строка "SQL Server" -контекст 0,1
$a = $a -заменить "код продукта: ","msiexec /x """;
$a = $a -заменить ">", "rem";
$a = $a -заменить "\t", "";
$a = $a -замена "}","}""";
$a | Out-файл d:\temp\remove.bat -кодировка ascii;


CHill60

Вы все еще используете Select-String таким образом, ошибка все равно возникнет для OP - у них не было установленного .NET 4.5.
Также полезно объяснить, что вы изменили из исходного кода и почему - например, как изменение контекста помогает

Рейтинг:
1

Member 14817027

Для тех, у кого та же проблема.

Даже с сообщением об ошибке создается файл remove.bat.
Откройте его и замените вручную (я использовал notepad++ для замены файла):

П. Е., В моем досье были написаны такие строки:

rem Microsoft SQL Server System CLR Types
  Product code:{C3F6F200-6D7B-4879-B9EE-700C0CE1FCDA}"

В моем случае мне пришлось заменить код продукта: на msiexec /x "
Для того чтобы код был отформатирован правильно, вот так:
rem Microsoft SQL Server System CLR Types
  msiexec /x "{C3F6F200-6D7B-4879-B9EE-700C0CE1FCDA}"


Теперь, когда вы отформатировали все, просто запустите от имени администратора, и это должно хорошо работать.