/ / Как да поставите съдържание в променлива с wpf Checkbox и powershell - wpf, powershell, checkbox

Как да поставите съдържание в променлива с wpf Checkbox и powershell - wpf, powershell, отметка

Аз се опитвам да поставя IP в променлива, когато направя отметката проверена и използвам тази променлива като IP адрес в Invoke-SQLCMD. Изглежда, че съдържанието на $ DB00 остава празно, каквото и да правя.

$window.DB00.add_Checked({

$DB00 = "192.168.1.1"
[System.Object]$sender = $args[0]
[System.Windows.RoutedEventArgs]$e = $args[1]

})

$window.DB00.add_Unchecked({

$DB00 = $null
#Get-ChildItem variable:DB00
#Remove-Item variable:DB00
[System.Object]$sender = $args[0]
[System.Windows.RoutedEventArgs]$e = $args[1]

})

$window.DB00.add_Indeterminate({

$DB00 = $null
[System.Object]$sender = $args[0]
[System.Windows.RoutedEventArgs]$e = $args[1]

})

#Collect Input fields#
$window.Button.add_Click({

$UserName = $window.UserName.Text.ToString()
$PassWord = $window.PassWord.Text.ToString()
$ServerAddress = $DB00
$DataBase = $window.DataBase.Text.ToString()
$SQLQuery = $window.Query.Text.ToString()
Invoke-Sqlcmd -AbortOnError `
-Username $UserName `
-Password $PassWord `
-Database $DataBase `
-Query $SQLQuery `
-QueryTimeout 30 `
-ServerInstance $ServerAddress |
Out-GridView -Title $DataBase
[System.Object]$sender = $args[0]
[System.Windows.RoutedEventArgs]$e = $args[1]

})

Отговори:

1 за отговор № 1

Това е определяне на обхвата проблем. Кога add_Checked() се извиква, той се изпълнява в обхвата на детето, което означава, че промените, направени в $DB00 вътре в scriptblock не влияе на стойността на $DB00 извън нея.

За да илюстрирате това, опитайте и изпълнете следния фрагмент:

$DB00 = 123
&{
$DB00 = 456
&{
$DB00 = 789
}
}
# What do you think will be printed?
Write-Host $DB00

Ако това е част от скрипт или функция, можете да квалифицирате променливата с името на обхвата "script":

$script:DB00 = "192.168.1.1"

Можете да използвате и *-Variable cmdlets с бутоните -Scope параметър. Това ви позволява да укажете основен обхват спрямо текущия обхват:

$DB00 = 123
&{
Set-Variable DB00 -Value 456 -Scope 1
&{
$DB00 = 789
}
}
# What do you think will be printed now? :)
Write-Host $DB00