Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
magarjoba
1 / 1 / 0
Регистрация: 10.11.2015
Сообщений: 91
1

Проблема с переменными в обертке

26.06.2019, 13:52. Просмотров 836. Ответов 30
Метки нет (Все метки)

Доброго времени суток,
привожу код в порядок. (ниже только часть кода...)

возник вопрос как обратиться к переменной в первых скобках
и к переменной во вторых скобках по отдельности
т.е

1я_часть) @{ sqlinstance = "localhost"; sqlcredential = $Cred1 }
2я_часть) @{ sqlinstance = "localhost\KASSA"; sqlcredential = $Cred2 }

сама суть в коде с вопросиком, не пойму как обратиться к первой части не затрагивая вторую.

@instance???1_я
@instance???2_я

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ParamSplat = @(
    @{ sqlinstance = "localhost"; sqlcredential = $Cred1 }, @{  sqlinstance = "localhost\KASSA"; sqlcredential = $Cred2 }
)
foreach ($instance in $ParamSplat) {
 $SysdbList = Get-DbaDatabase @instance -ExcludeSystem
 ## COdes
 Restore-DbaDatabase @instance???1-Path $DatabaseList -UseDestinationDefaultDirectories -WithReplace| Format-Table
 Restore-DbaDatabase @instance???2-Path $DatabaseList -UseDestinationDefaultDirectories -WithReplace| Format-Table
 
 
 $SysdbList | Set-DbaDbRecoveryModel -RecoveryModel full -Confirm:$false | Format-Table
 $SysdbList | Set-DbaDbOwner | Format-Table
 Repair-DbaInstanceName @instance -AutoFix -Force
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2019, 13:52
Ответы с готовыми решениями:

Проблема с переменными
Кароче проблема состоит в том,что для функции CopyFile(char *path1,zhar *path2,FALSE) нужны пути...

Проблема с переменными
Доброго времени суток, возникла проблема: <?php $a="123"; ?> <form> <input type="button"...

Проблема с extern-переменными
Такие дела. У меня два файла, func.cpp и main.cpp //func.cpp double sum, count; double...

Unity: проблема с переменными
Недавно начал программировать на unity. Но появилась такая фигня: пишу значение переменной в С#,...

Проблема с переменными Access 97
Задачка такая: Нужно использовать значения переменной одной формы из другой. Public для модулей...

30
alhaos
51 / 39 / 13
Регистрация: 20.02.2019
Сообщений: 155
28.06.2019, 10:22 21
Цитата Сообщение от bidstrup Посмотреть сообщение
"Windows Powershell in Action 3rd Edition", Bruce Payette, Richard Siddaway, 2018 Manning
Путячая книжка
0
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
28.06.2019, 11:37 22
возвращаясь к split, там в книжке любопытный есть пример на странице 111
1
KDE777
1535 / 977 / 387
Регистрация: 22.01.2016
Сообщений: 2,731
28.06.2019, 11:37 23
Цитата Сообщение от bidstrup Посмотреть сообщение
если кто-то категорически против двух вызовов Get-ChildItem
Я против, т.к. в хозяйстве есть каталоги с миллионами файлов

А за where({},'split') спасибо! В личной практике хватает -incl (или -excl) *sample*, но штука интересная.

Цитата Сообщение от bidstrup Посмотреть сообщение
очень замысловато
Пример со switch был на тот случай, когда автор темы решит, что разделения на sample и всё остальное уже не хватает.
0
KDE777
1535 / 977 / 387
Регистрация: 22.01.2016
Сообщений: 2,731
28.06.2019, 12:13 24
Цитата Сообщение от bidstrup Посмотреть сообщение
в книжке любопытный есть пример на странице 111
Открыл книжку в вэбе, а там без номеров страниц

Помимо Split, у метода Where показаны ещё First/Last и Until/SkipUntil, что тоже может очень пригодиться. С одной оговоркой - всё это великолепие доступно с PS 4
0
28.06.2019, 12:13
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
28.06.2019, 12:25 25
Цитата Сообщение от KDE777 Посмотреть сообщение
Открыл книжку в вэбе, а там без номеров страниц
поискать по ключевой фразе 'predicate function'

Добавлено через 4 минуты
Цитата Сообщение от KDE777 Посмотреть сообщение
всё это великолепие доступно с PS 4
на microsoft-ресурсах другие сочетания, чем powershell 7, запрещены под угрозой увольнения ))
0
KDE777
1535 / 977 / 387
Регистрация: 22.01.2016
Сообщений: 2,731
28.06.2019, 12:47 26

Не по теме:

Цитата Сообщение от bidstrup Посмотреть сообщение
на microsoft-ресурсах другие сочетания, чем powershell 7, запрещены под угрозой увольнения ))
Ага, вот только в MS-описаниях WMF'ов есть раздел "Product Compatibility Status" и мигрировать (на новые версии) Exchange, SharePoint, Lync и т.п. инфраструктуру компании (попутно выкладывая миллионы на новые лицензии) из-за того, что в свежем PS появился метод .where() - так себе идея :)



Добавлено через 10 минут
Цитата Сообщение от bidstrup Посмотреть сообщение
поискать по ключевой фразе 'predicate function'
Если вы про этот пример:

PowerShell
1
2
3
$colors = "Black,Brown,Red,Orange,Yellow,Green,Blue,Violet,Gray,White"
$count  = @(0)
$colors -split {$_ -eq ',' -and ++$count[0] % 2 -eq 0 }
Код
Black,Brown
Red,Orange
Yellow,Green
Blue,Violet
Gray,White
То да, очень любопытное разделение на пары.
0
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
28.06.2019, 13:05 27
осталась не вполне ясной история с переменной $count,
которая не работает, будучи скаляром, и которая работает, будучи массивом.

То есть, правильных слов, в точности описывающих именно такое поведение перменной, в книге не приведено.
0
KDE777
1535 / 977 / 387
Регистрация: 22.01.2016
Сообщений: 2,731
28.06.2019, 13:25 28
Цитата Сообщение от bidstrup Посмотреть сообщение
осталась не вполне ясной история с переменной $count,
которая не работает, будучи скаляром, и которая работает, будучи массивом.
Получается, что тут вопрос области действия (scope) переменных, используемых в скрипт-блоке split'а:

PowerShell
1
2
3
$colors = "Black,Brown,Red,Orange,Yellow,Green,Blue,Violet,Gray,White"
$global:count  = 0
$colors -split {$_ -eq ',' -and ++$global:count % 2 -eq 0 }
Код
Black,Brown
Red,Orange
Yellow,Green
Blue,Violet
Gray,White
0
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
28.06.2019, 14:00 29
Предположим, но почему тогда $count в качестве массива вполне себе виден без спецификации его области видимости ?

Добавлено через 5 минут
дяденька там пишет странные вещи: 'Because the scriptblock is
executed in its own scope, you must pass it an array so it can modify the value'

Добавлено через 5 минут
Подождем GregZakharov, может он нам прояснит, почему у массива такие преференции по видимости.
0
KDE777
1535 / 977 / 387
Регистрация: 22.01.2016
Сообщений: 2,731
28.06.2019, 14:28 30
Цитата Сообщение от bidstrup Посмотреть сообщение
почему у массива такие преференции по видимости
Ага, интересный вопрос:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$colors = "Black,Brown,Red,Orange,Yellow,Green,Blue,Violet,Gray,White"
 
$Count1        = @(0)
$Count2        = 0
$Global:Count3 = 0
 
$colors -split {$_ -eq ',' -and ++$Count1[0] % 2 -eq 0 }
''
$colors -split {$_ -eq ',' -and ++$Count2 % 2 -eq 0 }
''
$colors -split {$_ -eq ',' -and ++$Global:Count3 % 2 -eq 0 }
 
Get-Variable -Scope Global -Name Count* | ft Name,Value,Visibility
Код
Black,Brown
Red,Orange
Yellow,Green
Blue,Violet
Gray,White

Black,Brown,Red,Orange,Yellow,Green,Blue,Violet,Gray,White

Black,Brown
Red,Orange
Yellow,Green
Blue,Violet
Gray,White

Name   Value Visibility
----   ----- ----------
Count1 {9}       Public
Count2 0         Public
Count3 9         Public
Добавлено через 21 минуту
Кстати, $Script:Count скрипт-блок split'а тоже видит, а вот так не хочет:

PowerShell
1
New-Variable -Scope Global -Name Count -Value 0 -Visibility Public
0
bidstrup
308 / 128 / 19
Регистрация: 11.03.2018
Сообщений: 586
28.06.2019, 15:41 31
$Global:var и $Script:var я всегда считал синонимами.
и поэтому в 5-ой строке вмест $Global:Count3 можно написать просто Count3 и скриптблок { ++$Global:Count3 } её подхватит.
0
28.06.2019, 15:41
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2019, 15:41

Проблема со статическими переменными в рекурсии
Собственно, преподаватель требует, чтобы была одна входная переменная А и точность (10^-6) Функцию...

Проблема с переменными средами в Windows 7
Вообщем возникли проблемы с переменными средами, например с Java. В путях прописана, если запускать...

Прога на Билдере 5.Проблема с динамическими переменными
вылетает ошибка:Projest такой-то raised exception class EAccessViolation with message 'Access...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru