Je travaille sur une application PowerShell qui doit prendre un identifiant d'utilisateur en entrée d'une zone de texte, puis rechercher dans ActiveDirectory et retourner trois champs; Cependant, chaque fois que j'essaie de l'utiliser, je reçois l'erreur suivante:Récupérer l'entrée à partir de PowerShell TextBox
Get-ADUser : Cannot validate argument on parameter 'Identity'. The argument is null. Provide a valid value for the argument, and then try running the command again.
At C:\Path\cc-lookup-gui.ps1:40 char:21
+ $y = Get-ADUser $script:x -Properties cC
+ ~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
Voici le code pour mon interface graphique et la fonction recherche:
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")|Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")|Out-Null
$net = New-Object -ComObject Wscript.Network
$form = New-Object System.Windows.Forms.Form
$form.Width = 525
$form.Height = 350
$form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::Fixed3D
$form.Text = "CC Lookup"
$form.MaximumSize = New-Object System.Drawing.Size(525,350)
$form.StartPosition = "centerscreen"
$form.KeyPreview = $true
$form.Add_KeyDown({if($_.KeyCode -eq "Enter"){$script:x=$input.Text;Search}})
$form.Add_KeyDown({if($_.KeyCode -eq "Escape"){$form.Close()}})
$input = new-object System.Windows.Forms.TextBox
$input.maxLength = 6
$input.Location = New-Object System.Drawing.Size(200,75)
add-type -assemblyName System.Windows.Forms
$label1 = New-Object System.Windows.Forms.Label
$label1.Location = New-Object System.Drawing.Size(200,25)
$label1.AutoSize = $true
$label1.Text = "Enter User ID:"
$Button1 = new-object System.Windows.Forms.Button
$Button1.Location = New-Object System.Drawing.Size(100,132)
$Button1.Size = New-Object System.Drawing.Size(80,20)
$Button1.Text = "Search"
$Button1.Add_Click({$script:x=$input.Text;Search})
$button2 = New-Object System.Windows.Forms.Button
$button2.Location = New-Object System.Drawing.Size(300,132)
$button2.Text = "Clear"
$button2.Add_Click({Clears})
function Search{
$y = Get-ADUser $script:x -Properties cC
$output = $y.samAccountName + '|' + $y.CN + '|' + $y.cC
Add-Type -AssemblyName System.Windows.Forms
$label = New-Object System.Windows.Forms.Label
$label.Text = $Output
$label.AutoSize = $true
$label.Location = New-Object System.Drawing.Size(200,100)
$form.controls.add($label)
}
function Clears{
$label.Text = $null
$input.Text = $null
}
$form.Controls.Add($label1)
$form.Controls.Add($button2)
$form.Controls.Add($input)
$form.Controls.Add($Button1)
$form.Add_Shown({$Form.Activate()})
$Form.ShowDialog()
$x = $input.Text
J'ai vérifié les solutions à toutes les questions semblables I peut trouver sur la pile en vain. J'ai également essayé de déclarer globalement la variable $ x, en appelant directement $ input.text pour la fonction de recherche, et en convertissant $ x en une chaîne, qui retourne la même erreur. Exécution de PowerShell version 5. Comme toujours, toute aide est très appréciée.
Vos deux boutons échouent. Je commencerais par ça. – TheIncorrigible1
@TessellatingHeckler, c'était le problème. Si vous publiez cela comme une réponse, je vais l'accepter avec plaisir :) – Cameron