|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
Доброго здоровья! Задалась мне такая задача. В таблице БД 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 бы )). ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 18:43 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
SELECT ClientId ,HostName,IPAddress,AddressState,LeaseExpiryTime,ID FROM [dbo].[DHCP] WHERE HostName = 'c8339' ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 18:51 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
Спасибо, завтра внедрю. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2021, 20:40 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
Выполняется без ошибок. Но как взять теперь в переменные значения из выделенной строки? HostName, IPAddress и т.д... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 15:22 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
$SqlCmd.Commandtext = "SELECT IPAddress FROM [dbo].[DHCP] WHERE HostName = 'c8339'" $SqlCmd.ExecuteNonQuery() В ответе консоли - -1 или пусто. Ну как еще, попробовал $selection = $SqlCmd.ExecuteNonQuery() Write-Host $selection -тоже получаю -1 В Sql Management Studio схожая команда печатает нужные значения. В PS снова затык. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:02 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
ЮрийК, NonQuery говорит само за себя ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:06 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
ЮрийК Выполняется без ошибок. Но как взять теперь в переменные значения из выделенной строки? HostName, IPAddress и т.д... гугл знает ответы на многие вопросы - надо только спросить https://www.google.com/search?q=powershell get value from sql query ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:07 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
Ой, спасибо, парни!!)) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:43 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
Ну ок. $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 станет переменной-операндом? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 16:55 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
Если я пишу $i=0 while ($selection.Read()) { $fff = $selection.GetValue(0) $i=$i+1 } Write-Host $fff , то возвращает пустое значение, а $i=1 (т.е. это не массив, а строка) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 17:11 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
ЮрийК, А если выполнить так: ... $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 пар значений? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 17:31 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
Меня напрягло что это цикл и в нем еще и вот это GetValue( 0 ) Пока чтение тру, выводим значение. А без цикла ничего не выводит. Вай? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2021, 19:16 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
ЮрийК, GetValue([НОМЕР КОЛОНКИ/СТОЛБЦА/ПОЛЯ]) 0 - первое поле, 1 - второе (если есть) и тд Цикл нужен, чтобы пробежаться по набору ("строкам") ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 11:30 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
Спасибо за объяснения и советы. Пока удалось выполнить задачу через метод Scalar. Попробую с ним работать. автор Oleg_SQL Цикл нужен, чтобы пробежаться по набору ("строкам") Я это понял, но не понял, почему $fff = $selection.GetValue(0) вернул в переменной пустое значение. Хотя в консоль $selection.GetValue(0) так и выводит правильное значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2021, 14:39 |
|
Как сделать выборку по условию в PowerShell
|
|||
---|---|---|---|
#18+
ЮрийК, в 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) и др. с учётом явной смены контекста вопросов - по любому тема уже давно не для этого раздела ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2021, 22:49 |
|
|
start [/forum/topic.php?fid=46&msg=40102793&tid=1684215]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 254ms |
0 / 0 |