Почему не передаётся переменная в powershell?

Всем привет.

Имею такой код скрипта в powershell:
function Generate-Form {
    Add-Type -assembly System.Windows.Forms
    Import-Module activedirectory

    #Создание формы
    $window_form = New-Object System.Windows.Forms.Form
    $window_form.Text ='Сбор информации о ПК компании'
    $window_form.Width = 500
    $window_form.Height = 700
    $window_form.AutoSize = $true

    #Создания подписи
    $FormLabel1 = New-Object System.Windows.Forms.Label
    $FormLabel1.Text = "Вставьте название контейнера магазина"
    $FormLabel1.Location = New-Object System.Drawing.Point(0,10)
    $FormLabel1.AutoSize = $true
    $window_form.Controls.Add($FormLabel1)

    #Создание поля для ввода
    $formTextBox = New-Object System.Windows.Forms.TextBox
    $formTextBox.Location = New-Object System.Drawing.Point(0,50)
    $formTextBox.Size = New-Object System.Drawing.Size(150,60)
    $formTextBox.AutoSize = $true
    $formTextBox.Text = "SiteName"
    $window_form.Controls.Add($formTextBox)

    #Создание кнопки "Запросить"
    $FormButton = New-Object System.Windows.Forms.Button
    $FormButton.Location = New-Object System.Drawing.Size(400,10)
    $FormButton.Size = New-Object System.Drawing.Size(100,20)
    $FormButton.Text = "Запросить"
    $window_form.Controls.Add($FormButton)

    $FormButton.Add_Click({
        Get-ADComputer -Filter * -SearchBase 'OU=Computers,OU="$formTextBox.Text",DC=domainru,DC=ru,DC=example,DC=com' | Select-Object Name | Export-Csv -Path C:\TEMP\mysite_temp.txt -Encoding UTF8
    })

    $window_form.ShowDialog()


}
Generate-Form


При нажатии на кнопку "Запросить", выдаёт ошибку:
Get-ADComputer : Объект каталога не найден
Если вручную вставить SiteName на место контейнера, отрабатывается всё норм.

Как передать SiteName в Get-ADComputer -Filter * -SearchBase 'OU=Computers,OU="$formTextBox.Text",DC=domainru,DC=ru,DC=example,DC=com' ??
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
@BeatHazard
У вас неверно стоят кавычки в команде 'OU=Computers,OU="$formTextBox.Text",DC=domainru,DC=ru,DC=example,DC=com'
При использовании таких кавычек ' ' все что внутри них будет обрабатываться как текстовые данные, а при использовании таких " " если внутри есть переменная она будет подставлена.
В вашем случае необходимо сделать так
"OU=Computers,OU=$formTextBox.Text,DC=domainru,DC=ru,DC=example,DC=com"
Так же проверьте правильность пути к интересующим вас объектам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы