Итак, я использую какую-то глючную студию Sapien powershell для создания приложения с графическим интерфейсом на основе PowerShell, и я пытаюсь выполнить запрос ADSI.
$ nameOfDeviceInput - это System.Windows.Forms.TextBox
В одной форме у меня есть следующая функция:
$buttonPerformAction_Click={
if (FindInAD($nameOfDeviceInput.Text).Count -gt 0)
{
$buttonPerformAction.BackColor = 'Red'
$buttonPerformAction.Text = "System already exists in AD with that name. Try another name"
return
}
.....
}
В основной форме у меня есть функция FindInAD
function FindInAd($nameOfSystem)
{
Write-Host "seeking system" $nameOfSystem
([adsisearcher]"(CN=$nameOfSystem)").FindAll()
}
FindInAd () не работает, потому что по какой-то причине $ nameOfSystem установлено в 1, и если я явно не приведу его как строку, он будет неявно преобразован в Int32 (очевидно)
Я пробовал следующее:
Полная квалификация ввода текстового поля, указав форму, которой он принадлежит ($ adObjectModifier)
$buttonPerformAction_Click={
if (FindInAD($adObjectModifier.$nameOfDeviceInput.Text).Count -gt 0)
{
$buttonPerformAction.BackColor = 'Red'
$buttonPerformAction.Text = "System already exists in AD with that name. Try another name"
return
}
.....
}
Явное приведение параметра $ nameOfSystem как типа [строка]
function FindInAd([string]$nameOfSystem)
{
Write-Host "seeking system" $nameOfSystem
([adsisearcher]"(CN=$nameOfSystem)").FindAll()
}
Передача необработанной строки в FindInAD из формы AdObjectModifier.
....
if (FindInAD("Test").Count -gt 0)
....
В данный момент на конвейере вывода больше ничего (по крайней мере, не от меня) между вызовами метода. Это EventHandler ›Вызов функции со строковым параметром
Почему строки, которые я передаю, меняются на цифры ???
РЕДАКТИРОВАТЬ: Я думаю, что мой переданный параметр каким-то образом автоматически заменяется полученным логическим значением, но для меня это не имеет никакого смысла ....