Powershell

VS code ready to replace PowerShell ISE?

There is a push to go to Visual Studio Code, which is a plug-in rather than the PowerShell.exe having its own dedicated ISE application. It can be seen as smart, others see this as allowing for distractions.

Convenient Or inconvenient?

I do not like the syntax in the responses of commands, I don’t like the lack of the warm tab complete I am used to, and app stability. I complain about ISE lacking UI updates, but I hate the clumsy attempts to cram PowerShell into VS Code. It’s great if you want to do things across OS platforms.

I do however love VS Code for web coding and even do other one off projects.

I find the built in ISE to be the reliable of the two. It doesn’t ask me to update every time I launch it to do work.

I will say you lose some of the cool features if you are managing an updated landscape. For companies living in the past, PowerShell ISE is still relevant for interactions of windows 10 and server 2016 and you save space and can relax knowing you aren’t breaking unwritten standards as far as automation or script development.

What’s your favorite ISE? Let me know in the comments below.

Scripting Technique, Uncategorized

Audit Objects in your Domain(s) using switch statements in PowerShell

I find it important to figure out who and what is in your active directory OUs

get-aduser $TargetedUser

What about groups, and computers?

get-adobject $targetObject

this includes users, groups, and computers.

here is a switch that will report differently based on object class property that gets returned.

get-adobject -filter *| foreach-object{
Switch($_.Objectclass) {

User{ write-host "Found a User" -foregroundcolor red
      $_ | export-csv Users.csv -notypeinformation -append
     } #end User

Group{ write-host "Found a Group" -foregroundcolor blue
       $_ | export-csv Group.csv -notypeinformation -append
     } #end group

Computer{ write-host "Found a Computer" -foregroundcolor cyan
          $_ | export-csv Computers.csv -notypeinformation -append
     }#end Computer
}#end switch

}#end Foreach-object from pipeline
Robocopy, Uncategorized

Robocopy and PowerShell working in harmony.

 

So lets create a scenario,  and say that they were having difficulty using Robocopy commands within or with PowerShell. Here’s a demonstration of how to use PowerShell to be able to deliver seamless and accurate commands that will ensure that you will have your data copied and have your PowerShell script.

The best part of PowerShell is the ability to manipulate objects of different types in the same way regardless of data type.

let’s start with planning out the end product and work towards constructing our objects.

 

Import your file with source and destination or you can wing it into a function. For demonstration purposes we will cover both.

 

Example 1: Scripted with external file input 

$data=import-csv data.csv

$count=0

$total=$data.count

foreach($item in $data)

{

$count+=1 #some people use $count++

$source= $item.source

$destination=$item.Destination

Write-Progress -Activity “Copying $source to $destination” -PercentComplete ($count/$total*100)

Robocopy $source $destination /mir /mt:8 /r:1 /w:1

} #end foreach statement in script

 

This one s a little tricky due to the possibility of quotation exceptions;  Folders with spaces that require quotes.

 Example 2: Interactive PowerShell session

set-location c:\rootoftargetfolders

get-childitem  |foreach-object {
$source= $_.fullname
$destination=”d:\destinationfolder\$($_.basename)”
Robocopy “$source” “$destination” /mir /mt:8 /r:1 /w:1
} #end foreach-object

 

Example 3: Function best saved in $profile (PowerShell Profile) 

function RoboCopy-Item ($Source,$destination)

{

Robocopy $Source” “$Destination /mir /mt:8 /r:1 /w:1

} #end function

#now to try it

RoboCopy-item  -Source c:\files -destination D:\usb_documents

 

Conclusion:

I know sometimes dealing with syntax can be a headache but when you take the time to experiment with the shell it is a good path to accumulate lessons learned.

RoboCopy and PowerShell can play nice, of course adding in some try/catch to control your logging output to a text, html or csv or installing a module that can output logs directly to Microsoft Excel or take the old-school approach and use the /log file switch for RoboCopy.