/ / Jak umieścić zawartość w zmiennej za pomocą wpf Checkbox i powershell - wpf, powershell, pole wyboru

Jak umieścić zawartość w zmiennej za pomocą wpf Checkbox i powershell - wpf, powershell, checkbox

Próbuję umieścić IP w zmiennej, gdy zaznaczam pole wyboru i używam tej zmiennej jako adresu IP w Invoke-SQLCMD. Wygląda na to, że zawartość $ DB00 pozostaje pusta niezależnie od tego, co robię.

$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]

})

Odpowiedzi:

1 dla odpowiedzi № 1

To jest zasięg kwestia. Gdy add_Checked() kod jest wywoływany, działa w zakresie podrzędnym, co oznacza zmiany wprowadzone $DB00 wewnątrz bloku skryptów nie wpływa na wartość $DB00 poza nim.

Aby to zilustrować, spróbuj uruchomić następujący fragment kodu:

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

Jeśli jest to część skryptu lub funkcji, można zakwalifikować zmienną za pomocą nazwy zakresu „skrypt”:

$script:DB00 = "192.168.1.1"

Możesz także użyć *-Variable cmdlety z -Scope parametr. Pozwala to określić zakres rodzica względem bieżącego zakresu:

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