• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 786
  • Last Modified:

Echo results in powershell script

Hey Experts.  I have a simple powershell script that a fellow Expert on here helped me write.  Now I need to find out how successful the script was but I'm not sure what the command/synatx is to output or echo the results.

Example, the script moves all of the computers in a text file from one OU to another OU.  What I would like to know is which computers were moved and which ones did not.  Any suggestions?

Thanks everyone!
0
samiam41
Asked:
samiam41
  • 10
  • 5
  • 2
  • +1
4 Solutions
 
SubsunCommented:
You can use Try Catch..
For example...
Try{
<your script>
Write-host "Moved the computer $comp"
}
Catch{
Write-host "error moving computer $comp"
}

Open in new window

If you can post the script which you are using then we can give more details on error checking..
0
 
David Johnson, CD, MVPOwnerCommented:
you need to add applicable write-host or out-file items within the script itself but you need to have some form of output then you can use standard redirection i.e.
powershell -noprofile myscript.ps1 > output.txt or even pipe the output into the input of another script.

i.e.
powershell -noprofile myscript.ps1 | .\process-list.ps1 | .\send-output.ps1
0
 
CSI-Windows_comCommented:
You need to post the script so we can see if it already generates output of some type to the screen.
0
Creating Active Directory Users from a Text File

If your organization has a need to mass-create AD user accounts, watch this video to see how its done without the need for scripting or other unnecessary complexities.

 
samiam41Author Commented:
Got stuck working on a problem with a driver controller battery failure.  I should be back on this script tonight or tomorrow morning.  Updates to follow.  Thanks Experts!
0
 
samiam41Author Commented:
Here is the code for the PS script.
GC C:\log-or-text.file | Get-ADUser | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=x,DC=x'

Open in new window

0
 
samiam41Author Commented:
Thanks Experts for your suggestions.  I am the level right below novice when it comes to Powershell scripting/coding so please provide an example using the script I provided in my previous post.
0
 
CSI-Windows_comCommented:
add "-passthru" like this:

GC C:\log-or-text.file | Get-ADUser | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=x,DC=x' -PassThru

To send to a log file add "set-content" like this:

GC C:\log-or-text.file | Get-ADUser | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=x,DC=x' -PassThru | Set-Content c:\full\path\to\log\file.log
0
 
SubsunCommented:
You can try this..
Foreach ($User in GC C:\log-or-text.file) {
Try 
 {
  Get-ADUser $User | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=x,DC=x' -ErrorAction Stop
  Write-Host "Moved user $User"
 }
 Catch
 {
  Write-Host "Moved user $User - Error - $($_.Exception.Message)"
 }
}

Open in new window

0
 
samiam41Author Commented:
Ok.  This is getting a little frustrating.  I just changed the executionpolicy setting so now the PSmove.ps1 script should run but I get this error:

The term 'Get-ADUser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:\tools\PSmove.ps1:1 char:40
+ GC C:\tools\staleADpc1.log | Get-ADUser <<<<  | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=x,
DC=x'-PassThru | Set-Content c:\tools\output.log
    + CategoryInfo          : ObjectNotFound: (Get-ADUser:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

GC C:\tools\staleADpc1.log | Get-ADUser | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=ky,DC=x'-PassThru | Set-Content c:\tools\output.log

Open in new window

So what am I doing wrong here?
0
 
SubsunCommented:
Add following line as a first line of script..
Import-Module ActiveDirectory

Open in new window

0
 
samiam41Author Commented:
Like this?

GC C:\tools\staleADpc1.log |Import-Module ActiveDirectory | Get-ADUser | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=ky,x=gov'-PassThru | Set-Content c:\tools\output.log

Open in new window

0
 
SubsunCommented:
If you are trying to echo results then...
Import-Module ActiveDirectory
Foreach ($User in GC C:\log-or-text.file) {
Try 
 {
  Get-ADUser $User | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=x,DC=x' -ErrorAction Stop
  Write-Host "Moved user $User"
 }
 Catch
 {
  Write-Host "Moved user $User - Error - $($_.Exception.Message)"
 }
}

Open in new window

0
 
samiam41Author Commented:
Ahhh...  I see.  Testing now.
0
 
samiam41Author Commented:
Subsun, where is the output log file for that script?
0
 
SubsunCommented:
For now it just displays the details on console.. if you want to save the result to log file.. You can change the command Write-Host to Echo in script and then..
Run the script using
.\Script.ps1 >C:\log.txt
0
 
samiam41Author Commented:
Dang!  That headache earlier really messed me up.  I'm trying to move computer objects, not user.  My apologies everyone for that oversight but as I listed in the OP, it needs to be related to computer accounts.  I know it's a matter of changing a couple of values, but I'm not sure what they are.  

Thanks everyone.
0
 
samiam41Author Commented:
I think I got it.

Import-Module ActiveDirectory
Foreach ($Computer in GC C:\tools\staleADPC1.log) {
Try 
 {
  Get-ADcomputer $Computer | Move-ADObject -TargetPath 'OU=Inactive,OU=x,DC=x,DC=x,DC=x,DC=x' -ErrorAction Stop
  Echo "Moved computer $Computer"
 }
 Catch
 {
  Echo "Moved computer $Computer - Error - $($_.Exception.Message)"
 }
}

Open in new window

0
 
samiam41Author Commented:
Thanks for the help.  We got a little side-tracked with user and computer variables being mixed up but I am very excited that I have a script to begin moving these stale accounts.  I appreciate your help and time.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Protect Your Employees from Wi-Fi Threats

As Wi-Fi growth and popularity continues to climb, not everyone understands the risks that come with connecting to public Wi-Fi or even offering Wi-Fi to employees, visitors and guests. Download the resource kit to make sure your safe wherever business takes you!

  • 10
  • 5
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now