caramen

[Solved]Cant inser $Variable

7 posts in this topic

#1 ·  Posted (edited)

!Arf it i used [Start new topic] when i was in GUI section and the post was moved without i even noticed it. Can an admin move that to general (SORRY)!

 

Hello guys :) ME again and my ugly english xD.

 

This is the only one powershell command i am not able to use becose i dont found a way to insert the USERNAME $Variable at the first line. i am not able to find a third way to QUOTE a variable when i use "*" for the AutoIt command and the '*' for the PS command but i need to QUOTE inside the '*'PS command my $Variable

 

$iPid = run("powershell get-aduser -Filter {sn -eq 'USERNAME'}  -Properties sAMAccountName,Title"  , @WindowsDir , @SW_HIDE , 0x2)
$AllInfo = ""

 While 1
    $AllInfo &= StdoutRead($iPID)
        If @error Then
            ExitLoop
        EndIf
 WEnd


$AllInfo = stringsplit($AllInfo , @LF , 2) ;split result in all @LF but don't use the splitted result for anything

_ArrayDisplay($AllInfo)

This gonna be my last question becose i can do all the rest (i guess & wish :sweating:) alone

 

Edited by caramen

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Palliative logic if that can help someone but ....

 

if there is an other way i am taker.

$iPid = ("powershell get-aduser -Filter {sn -eq '
$iPid2 = $VARIABLE'}  -Properties sAMAccountName,Title"  , @WindowsDir , @SW_HIDE , 0x2)

$Command =Run "$iPid" & "iPid2"

NOT working

 

$USERNAME = InputBox ("test" , "USERNAME")

$iPid = "get-aduser -Filter {sn -eq '"

$iPid2 ="'}  -Properties sAMAccountName,Title")

$Atribut1 =" , @WindowsDir"
$Atribut2 =", @SW_HIDE"
$Atribut3 =", 0x2"
$Atribut4 =0

$Command = run ("powershell"& iPid &$USERNAME& iPid2 )
$AllInfo = ""

 While 1
    $AllInfo &= StdoutRead($Command)
        If @error Then
            ExitLoop
        EndIf
 WEnd

NOT working

 

Lol better like that but not working :

 

$USERNAME = InputBox ("test" , "USERNAME")

$iPid = ("get-aduser -Filter {sn -eq '")

$iPid2 =("'}  -Properties sAMAccountName,Title")

$Atribut1 =(" , @WindowsDir")
$Atribut2 =(", @SW_HIDE")
$Atribut3 =(", 0x2")
$Atribut4 =0

$Command = run ("powershell"& $iPid &$USERNAME& $iPid2 &$Atribut1&$Atribut2&$Atribut3 )
$AllInfo = ""

 While 1
    $AllInfo &= StdoutRead($AllInfo)
        If @error Then
            ExitLoop
        EndIf
 WEnd


$AllInfo = stringsplit($AllInfo , @LF , 2) ;split result in all @LF but don't use the splitted result for anything

_ArrayDisplay($AllInfo)

NOT WORKING

$USERNAME = InputBox ("test" , "USERNAME")

;The wanted command
;~ $iPid = run("powershell get-aduser -Filter {sn -eq 'USERNAME'}  -Properties sAMAccountName,Title"  , @WindowsDir , @SW_HIDE , 0x2)


$Atribut1 = "run"
$Atribut2 = '("powershell get-aduser -Filter '
$Atribut3 = "{sn -eq "
$Atribut4 ="'"
$Atribut5 = $USERNAME
$Atribut6 = "'"
$Atribut7 = "}"
$Atribut8 ='  -Properties sAMAccountName,Title"'
$Atribut9 =" , @WindowsDir , @SW_HIDE , 0x2)"

$Command = $Atribut1&$Atribut2&$Atribut3&$Atribut4&$Atribut5&$Atribut6&$Atribut7&$Atribut8&$Atribut9

Not working GRRRRRRRR

Edited by caramen

Share this post


Link to post
Share on other sites

#3 ·  Posted

Try something like this:

$iPid = run("powershell get-aduser -Filter {sn -eq '" & $USERNAME & "'}  -Properties sAMAccountName,Title"  , @WindowsDir , @SW_HIDE , 0x2)

Or

Opt('ExpandVarStrings', 1)
$iPid = run("powershell get-aduser -Filter {sn -eq '$USERNAME$'}  -Properties sAMAccountName,Title"  , @WindowsDir , @SW_HIDE , 0x2)

 

1 person likes this

Share this post


Link to post
Share on other sites

#4 ·  Posted

Give me one min i am do that now

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Na :( Empty return = no value

 

Edit no script error

 

Wait i tryed too much thing so i am confused in my original working commandnow let me redo that with the working command

i retry wait a min

Edited by caramen

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

Neverming first command is working without the Opt

 

you know i tryed similar thing with quote the $Variable was black but it was not working i guess i did a missplell maybe....

 

Thanks

Edited by caramen

Share this post


Link to post
Share on other sites

#7 ·  Posted

If the text is black it means the quotes weren't in the correct place,  Personally I prefer using Opt('ExpandVarStrings', 1) because you can write the variables directly into the string so quotes normally won't matter, it still accepts the original method as well so you can fall back to it.

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Similar Content

    • hemichallenger
      By hemichallenger
      Not sure if this is possible or if someone has already tackled this. Is it possible to embed PowerShell into a GUI? Autoit is great for quick function but sometime I need to run a command thru PowerShell. It be great to have PowerShell console embedded into the gui.
    • BigDaddyO
      By BigDaddyO
      After much searching I finally found a method to get eMails from an Exchange eMail account inbox.  I was hoping for AutoIT or vbscript but I couldn't find any that would read the inbox messages without using Outlook.
      I needed this because I'm testing a web-form that generates an eMail sent to a shared mailbox "not what my current outlook is configured for".  so, I needed to connect to a different account, then get the inbox messages, and see if the auto-generated eMail message body contains what I submitted in the form.
       
      I found a PowerShell script that was close and modified it to do just what I want, but I'd still like it to run in AutoIT but I'm not sure how to use the Microsoft.Exchange.WebServices.dll
      Anybody have some ideas? 
      #To Launch! # C:\Windows\System32> powershell -ExecutionPolicy ByPass #This launches PowerShell and allows execution of .ps1 files # PS C:\Windows\System32> . "C:\Temp\eMail\getInbox.ps1" #The period . in front of the .ps1 file forces PS to display results on-screen # Where is the EWS .DLL file that you are using # Get the installer from https://www.microsoft.com/en-us/download/details.aspx?id=42022 # We only need 2 dll's from the install and they can be stored anywhere: "Microsoft.Exchange.WebServices.Auth.dll" & "Microsoft.Exchange.WebServices.dll" $EWSdll = "C:\Temp\eMail\Microsoft.Exchange.WebServices.dll" # Where do you want the output text file to be saved $Output = "C:\Temp\eMails.txt" # replace with your email address $email = "MyemailAddress@work.net" # only need to populate these if you're impersonating... $username = "myemail" $password = "Sup3rS3cre+" $domain = "ad.work.net" # load the assembly : point to the dll in the location you have the .dll file [void] [Reflection.Assembly]::LoadFile($EWSdll) # set ref to exchange, first references 2007, 2nd is 2010 (default) #$s = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2007_SP1) $s = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService # use first option if you want to impersonate, otherwise, grab your own credentials with the 3rd one. not sure what the 2nd one is for $s.Credentials = New-Object Net.NetworkCredential($username, $password, $domain) ##$s.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials #$s.UseDefaultCredentials = $true # discover the url from your email address $s.AutodiscoverUrl($email) # get a handle to the inbox $inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($s,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox) #create a property set (to let us access the body & other details not available from the FindItems call) $psPropertySet = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties) $psPropertySet.RequestedBodyType = [Microsoft.Exchange.WebServices.Data.BodyType]::Text; # If you have a set number of items you want to get, use this and insert the # in the () # $items = $inbox.FindItems(5) # If you want to retrieve all items (Server limit is usually at 1000) then use this line # Details on the max returned by server: https://blogs.msdn.microsoft.com/exchangedev/2010/03/12/throttling-policies-and-the-ewsfindcountlimit/ $items = $inbox.FindItems($inbox.TotalCount) # Put some counts at the top of the output Write-host "Total Inbox count: $($inbox.TotalCount)" Write-host "Unread count: $($inbox.UnreadCount)" #These two lines, write the output to the specified text file Add-Content $Output "Total Inbox count: $($inbox.TotalCount)" Add-Content $Output "Unread count: $($inbox.UnreadCount)" foreach ($item in $items.Items) { # load the property set to allow us to get to the body $item.load($psPropertySet) # Get the Body text as-is $bod = $item.Body.Text #if you only want a short summary of the Body, then comment the above line and un-comment these 4 lines # $bod = $item.Body.Text -replace '\s+', ' ' # $bodCutOff = (100,$bod.Length | Measure-Object -Minimum).Minimum # $bod = $bod.Substring(0,$bodCutOff) # $bod = "$bod..." # output the results - first of all the From, Subject, References and Message ID write-host "====================================================================" Write-host "From: $($item.From.Name)" Write-host "Subject: $($item.Subject)" Write-host "Body: $($bod)" write-host "====================================================================" "" # Output the results to the specified Text file Add-Content $Output "" Add-Content $Output "====================================================================" Add-Content $Output "From: $($item.From.Name)" Add-Content $Output "Subject: $($item.Subject)" Add-Content $Output "Body:",$($bod) Add-Content $Output "====================================================================" Add-Content $Output "" } #see these URLs for more info # EWS Stuff # folder members: https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.folder_members%28v=exchg.80%29.aspx # exporting headers: https://www.allabout365.com/2010/10/export-email-headers-exchange-powershell/ # read emails with EWS: https://social.technet.microsoft.com/Forums/en-US/3fbf8348-2945-43aa-a0bc-f3b1d34da27c/read-emails-with-ews?forum=exchangesvrdevelopment  
      Thanks,
      Mike
    • Jibberish
      By Jibberish
      Hi all,
      I need to read a log file into an array, but the log file is encoded as $FO_UTF16_BE_NOBOM (2048) = Use Unicode UTF16 Big Endian (without BOM) per FileGetEncoding (it returns 2048).
      I have searched how to convert these log files to UTF-8 and finally found a Powershell command. Since then I have been racking my brain trying to get the function to work. The command itself works from a Powerscript prompt:
      C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command Get-Content C:\Logs\Myplayer_10-10-17-02-31.log | Set-Content -Encoding utf8 C:\Logs\Myplayer1.log This is my sandbox;
      #include <array.au3> #include <File.au3> Local $aArrayLogFile Local $sLogDir = "C:\Logs\" Local $sLogFile = "Myplayer_10-10-17-02-31.log" Local $sConvertedLog = "ConvertedLog.log" Local $sLogDirFile = $sLogDir&$sLogFile RunWait("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command Get-Content "&$sLogDirFile&" | Set-Content -Encoding utf8 "&$sConvertedLog,$sLogDir) _FileReadToArray($sLogDirFile, $aArrayLogFile) _ArrayDisplay($aArrayLogFile) Also tried
      RunWait("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command Get-Content "&$sLogDirFile&" | Set-Content -Encoding utf8 "&$sConvertedLog,$sLogDir) and
      ShellExecuteWait("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"," -Command Get-Content "&$sLogDirFile&" | Set-Content -Encoding utf8 "&$sConvertedLog,$sLogDir) Tried without -Command and a bunch of other parameters that were sprinkled throughout the internet from people trying to get this to work.
      Thanks
      Jibs
    • ur
      By ur
      I am maintaining all the reusable code in a separate file as library.au3.
      In that file I have referenced some dependent files using fileinstall, so that they will be extracted when necessary.
       
      Problem is, if I use a function in the library.au3 in another script which doesn't require this dependent file, as I am including the whole file using include tag, it is embedding that file also.
      Is there any way to exclude that.
       
    • david1337
      By david1337
      Hi guys,
      I need a little help here
      I have this simple Powershell script, that is able to set "sig.htm" as signature in OWA for the mail account specified.
      First part of the script just loads the Exchange snapin, since this is needed for the Get-Mailbox command.
      #Add Exchange 2010/2013 snapin if not already loaded in the PowerShell session if (!(Get-PSSnapin | where {$_.Name -eq "Microsoft.Exchange.Management.PowerShell.E2010"})) { try { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction STOP } catch { #Snapin was not loaded Write-Warning $_.Exception.Message EXIT } . $env:ExchangeInstallPath\bin\RemoteExchange.ps1 Connect-ExchangeServer -auto -AllowClobber } $mailboxes = Get-Mailbox -Identity user@domain.com $mailboxes| foreach {$file= "sig.htm"; Set-MailboxMessageConfiguration -identity $_.alias -SignatureHtml "$(Get-Content -Path $file -ReadCount 0)"} What I want is for AutoIt to use Powershell.exe to run the script somehow. This way I would be able to use AutoIt variables and arrays together with the PS script.
       I guess the solution would be to run Powershell.exe with command line arguments?
      If that is not possible, maybe have the script stored as a "ps1" file, and interact with it that way? (not preferred)