I have the following code in a form:
foreach ($item in $vara)
{
[String]$item = $item
if ($item -match 'User=212Z')
{
[array]$lookupmailaddress = Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -SearchBase 'DC=212Z,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail
}
Else
#do something else.
When I set the $vara from the shell to the SAM account name ($NVP000-H8RNU4T06F1P) and then run the above code:
Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -SearchBase 'DC=212Z,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail
it works? Just not in the application. Can someone help explain this? It's passing the same value in $tempsamconvert as I typed out and set in the shell. It's just being set in the form not on the shell.
Thank you.
Not working as expected
Forum rules
Do not post any licensing information in this forum.
Any code longer than three lines should be added as code using the 'Select Code' dropdown menu or attached as a file.
Do not post any licensing information in this forum.
Any code longer than three lines should be added as code using the 'Select Code' dropdown menu or attached as a file.
- island_guy
- Posts: 14
- Last visit: Thu Feb 02, 2017 6:12 am
Not working as expected
Last edited by island_guy on Fri Oct 24, 2014 1:43 pm, edited 3 times in total.
Re: Not working as expected
It is not possible to understand what you are asking.
What is not working? What is set in the "shell"? What shell?
Are you trying to pass a value from one form to another?
What is not working? What is set in the "shell"? What shell?
Are you trying to pass a value from one form to another?
Re: Not working as expected
Here is a little direction.
Use Get-AdUser with a SAmAccountName
$somevariable='somesamname'
Get-Aduser $somevariable
A SamAccountName is unique across a domain. It need no searchbase or any filters. It is a legitimate identity.
$mail=Get-AdUser usersSam | %{$_.Mail}
That is all you ever need.
"mail" is not an array. It is a single string value. Casting it to an array will not be of much uses.
Your loop is also not very useful:
2. $item is never used in loop.
3. $vara is undefined
4. $tempsamconvert is never set to a value.
Use Get-AdUser with a SAmAccountName
$somevariable='somesamname'
Get-Aduser $somevariable
A SamAccountName is unique across a domain. It need no searchbase or any filters. It is a legitimate identity.
$mail=Get-AdUser usersSam | %{$_.Mail}
That is all you ever need.
"mail" is not an array. It is a single string value. Casting it to an array will not be of much uses.
Your loop is also not very useful:
PowerShell Code
Double-click the code block to select all.foreach ($item in $vara) { [String]$item = $item if ($item -match 'User=006F'){ [array]$lookupmailaddress=Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -f -SearchBase 'DC=006f,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail }else{ #do something else. } }1. It serves not purpose to force $item to a string..
2. $item is never used in loop.
3. $vara is undefined
4. $tempsamconvert is never set to a value.
- island_guy
- Posts: 14
- Last visit: Thu Feb 02, 2017 6:12 am
Re: Not working as expected
Let me try and provide some more information and try to be clear. It's been a long day.
I have a single form application. In this form , I have the following code:
## $vara is a collection of SamAccounts that looks something like this:
User=212Z\$Z43NSA-ASD424
User=212Z\$ASDFAS-ADFASD
User=212Z\$AD4324-S32W3A
foreach ($item in $vara)
{
[String]$item = $item
if ($item -match 'User=212Z')
{
[array]$lookupmailaddress = Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -SearchBase 'DC=212Z,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail
}
Else
#do something else.
I expect if the value in $item matches "User=212Z" and equals true then process:
[array]$lookupmailaddress = Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -SearchBase 'DC=212Z,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail
This should fetch the mail object using the Get-ADObject cmdlet. and return something like john.doe@acme.com; The purpose of the code is lookup the mail object by the SAM account name. All SaM account names start with $
Then store the mail object which is much easier to read (john.doe@acme.com) in the array $lookupmailaddress.
It runs in the form with no errors but the Get-ADObject cmdlet returns nothing to the [array]$lookupmailaddress
Now if I open a power shell session (shell) and run:
$tempsamconvert = $ANd4df43232-232
And then run the same cmdlet in the same powershell session
[array]$lookupmailaddress = Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -SearchBase 'DC=212Z,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail
It stores the mail object (john.doe@acme.com) in the new variable. No issues. I can't seem to make sense of it. Hope this helps. The only thing, I can guess is tripping me up is that the Sam Accounts all start with a "$" in there name.
I have a single form application. In this form , I have the following code:
## $vara is a collection of SamAccounts that looks something like this:
User=212Z\$Z43NSA-ASD424
User=212Z\$ASDFAS-ADFASD
User=212Z\$AD4324-S32W3A
foreach ($item in $vara)
{
[String]$item = $item
if ($item -match 'User=212Z')
{
[array]$lookupmailaddress = Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -SearchBase 'DC=212Z,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail
}
Else
#do something else.
I expect if the value in $item matches "User=212Z" and equals true then process:
[array]$lookupmailaddress = Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -SearchBase 'DC=212Z,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail
This should fetch the mail object using the Get-ADObject cmdlet. and return something like john.doe@acme.com; The purpose of the code is lookup the mail object by the SAM account name. All SaM account names start with $
Then store the mail object which is much easier to read (john.doe@acme.com) in the array $lookupmailaddress.
It runs in the form with no errors but the Get-ADObject cmdlet returns nothing to the [array]$lookupmailaddress
Now if I open a power shell session (shell) and run:
$tempsamconvert = $ANd4df43232-232
And then run the same cmdlet in the same powershell session
[array]$lookupmailaddress = Get-ADObject -LDAPFilter "(sAMAccountName=$tempsamconvert)" -SearchBase 'DC=212Z,DC=mgd2,DC=msft,DC=net' -Properties * -Server 212Z.msft.net | Select-Object mail
It stores the mail object (john.doe@acme.com) in the new variable. No issues. I can't seem to make sense of it. Hope this helps. The only thing, I can guess is tripping me up is that the Sam Accounts all start with a "$" in there name.
Re: Not working as expected
Wow! Go slow:
What is this?
I have a single form application. In this form , I have the following code:
## $vara is a collection of SamAccounts that looks something like this:
User=212Z\$Z43NSA-ASD424
User=212Z\$ASDFAS-ADFASD
User=212Z\$AD4324-S32W3A
Is it a hashtable? It can't be because there are no quotes. It cannot be a string array for the same reason.
What is this?
I have a single form application. In this form , I have the following code:
## $vara is a collection of SamAccounts that looks something like this:
User=212Z\$Z43NSA-ASD424
User=212Z\$ASDFAS-ADFASD
User=212Z\$AD4324-S32W3A
Is it a hashtable? It can't be because there are no quotes. It cannot be a string array for the same reason.
Re: Not working as expected
I just noticed this part.
The line above does nothing because the object "$ANd4df43232-232
" is not a string. It is a variable.
If you run this in a new session this is what happens:
SamAccountNames cannot begin with a "$". It is not allowed in AD.Now if I open a power shell session (shell) and run:
$tempsamconvert = $ANd4df43232-232
The line above does nothing because the object "$ANd4df43232-232
" is not a string. It is a variable.
If you run this in a new session this is what happens:
PowerShell Code
Double-click the code block to select all.PS C:\scripts> $tempsamconvert = $ANd4df43232-232 PS C:\scripts> $tempsamconvert -232 PS C:\scripts>Which makes no sense.