powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сделать выборку по условию в PowerShell
15 сообщений из 15, страница 1 из 1
Как сделать выборку по условию в PowerShell
    #40102445
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго здоровья!
Задалась мне такая задача.
В таблице БД Cisco есть таблица dbo.DHCP , в которую я выгрузил все записи сервера DHCP.
Работать с заполнением и апдейтом из PS я научился, но вот как выполнять поиск по выбранной таблице никак не могу подобрать синтаксис. Подобного автоматически создаваемого скрипта для таблицы для поиска там нет, но написал сам и он отработал. В SQL Studio , по памяти, вроде такой был пример (точно не помню, но он выполнился с студии успешно, вернув строку).
SELECT * FROM [dbo].[DHCP]
(ClientId ,HostName,IPAddress,AddressState,LeaseExpiryTime,ID)
WHERE (HostName = 'c8339')

Осталось приспособить его к формату PS. Но не поддается.
Поскольку ругался на параметры from , взял из в верхние одиночные кавычки -
SELECT * FROM [dbo].[DHCP] ('ClientId' ,'HostName','IPAddress','AddressState','LeaseExpiryTime','ID') WHERE (HostName = 'c8339')"
(или по условию поиска по MAC-адресу, например)


Теперь ругается на [dbo].[DHCP] - пишет что-то про dbo.DHCP .

По-разному пробовал, и без [], и без * , и без FROM ... В инете ничего подходящего не нашел.

В общем, нужна ваша помощь.
Специалистом по скулю явно не стану, но задача стоит, доделать нужно, значительная часть ее уже сделана.
И еще бы синтаксис такой же записи выборки по условию для PHP бы )).
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102448
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT ClientId ,HostName,IPAddress,AddressState,LeaseExpiryTime,ID FROM [dbo].[DHCP] WHERE HostName = 'c8339'
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102471
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, завтра внедрю. )
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102759
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выполняется без ошибок. Но как взять теперь в переменные значения из выделенной строки? HostName, IPAddress и т.д...
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102775
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
$SqlCmd.Commandtext = "SELECT IPAddress FROM [dbo].[DHCP] WHERE HostName = 'c8339'"
$SqlCmd.ExecuteNonQuery()

В ответе консоли - -1 или пусто.

Ну как еще, попробовал
$selection = $SqlCmd.ExecuteNonQuery()
Write-Host $selection

-тоже получаю -1

В Sql Management Studio схожая команда печатает нужные значения.
В PS снова затык.
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102777
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЮрийК,

NonQuery говорит само за себя
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102778
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮрийК
Выполняется без ошибок. Но как взять теперь в переменные значения из выделенной строки? HostName, IPAddress и т.д...

гугл знает ответы на многие вопросы - надо только спросить

https://www.google.com/search?q=powershell get value from sql query
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102793
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ой, спасибо, парни!!))
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102799
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну ок.

$SqlCmd.CommandText = "SELECT IPAddress FROM cisco.dbo.DHCP WHERE HostName = 'c107212'"

$selection = $SqlCmd.ExecuteReader()

while ($selection.Read()) {
$selection.GetValue(0)
}

$SqlConnection.close()


Значение напечатал в консоли. А в примере https://stackoverflow.com/questions/22714531/powershell-sql-select-output-to-variable я не вижу, как все-таки $selection станет переменной-операндом?
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102805
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я пишу
$i=0
while ($selection.Read()) {
$fff = $selection.GetValue(0)
$i=$i+1
}
Write-Host $fff
, то возвращает пустое значение, а $i=1 (т.е. это не массив, а строка)
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102811
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЮрийК,

А если выполнить так:
...
$SqlCmd.CommandText = "SELECT TOP 10 IPAddress FROM cisco.dbo.DHCP"
...

$i=0
while ($selection.Read()) {
$fff = $selection.GetValue(0)
Write-Host $i ":" $fff
$i=$i+1
}

Выйдет 10 пар значений?
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102862
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Меня напрягло что это цикл и в нем еще и вот это
GetValue( 0 )
Пока чтение тру, выводим значение. А без цикла ничего не выводит. Вай?
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40102991
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЮрийК,

GetValue([НОМЕР КОЛОНКИ/СТОЛБЦА/ПОЛЯ])
0 - первое поле, 1 - второе (если есть) и тд
Цикл нужен, чтобы пробежаться по набору ("строкам")
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40103068
ЮрийК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за объяснения и советы.
Пока удалось выполнить задачу через метод Scalar. Попробую с ним работать.


автор Oleg_SQL
Цикл нужен, чтобы пробежаться по набору ("строкам")
Я это понял, но не понял, почему
$fff = $selection.GetValue(0)
вернул в переменной пустое значение. Хотя в консоль $selection.GetValue(0) так и выводит правильное значение.
...
Рейтинг: 0 / 0
Как сделать выборку по условию в PowerShell
    #40103369
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЮрийК,

в PS прекрасно .NET работает типа System.Data.DataTable
куда с подключения данные по идее зальются без особых танцев с бубном
так-же как и с LINQ для операций в стиле SQL
если уж есть желание resultset из SQL запроса грузить в PSObject тип
то и оперируй родными средствами PowerShell
(Where-Object , Select-Object, ForEach, Get-Unique и пр. или их алиасами ?, select, % и т.д.)
так-же если скрипты серверные то Write-Host безопаснее поменять на Write-Output,
хотя если просто указать переменную то он и так её выведет без всяких Write-...
да и с выводом на консоль хватает опций Format-Table, Format-List, Out-GridView (ft,fl) и др.
с учётом явной смены контекста вопросов - по любому тема уже давно не для этого раздела
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как сделать выборку по условию в PowerShell
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]