►
From YouTube: PSS: Why can't we be friends Command Line Utilities + PowerShell = 3 Slides with Ryan Leap
Description
PowerShell Saturday is a training event for all things PowerShell. The event was held in Raleigh North Carolina and hosted by Research Triangle PowerShell User Group.
In this session Ryan Leap discusses how Command Line tools can be leveraged within PowerShell. With a little bit of knowledge you can wrap your old school executables in a PowerShell function and supercharge them.
The files for Ryan's slides and code can be found on our github page:
https://github.com/rtpsug/PowerShell-Saturday/tree/master/2019-NC.State/
A
Welcome
to
the
afternoon
session,
I
hope
everybody
had
a
good
lunch
in
some
North
Carolina
barbecue
I
was
too
nervous
to
eat.
So
thanks
for
the
1:00
p.m.
session
right,
but
anyway
thanks
and
I
just
again
wanna
plug
our
our
sponsors.
These
folks
have
been
great.
You
know.
I
can
I
can
speak
towards
Pluralsight
I
have
a
subscription
I
love
all
the
content
they
produce.
You
know
our
tech
system,
folks,
they
helped
mark
up.
My
resume
I
had
lots
of
things
that
needed
work
so
yeah.
Please,
please
give
these
folks
a
minute
of
your
time.
A
We
really
appreciate
it
appreciate
what
they've
done
to
make
this
conference
possible.
So
about
me
just
if
you
want
to
connect
with
me.
Those
are
a
couple
ways.
So
I
started
as
a
software
developer
out
of
school
and
I
did
that
for
several
years
and
then
actually
this
is
a
bit
of
a
homecoming.
For
me.
A
I
worked
at
NC
State
College
of
textiles
for
about
nine
years,
and
so
here
is
where
I
kinda
was
exposed
to
Active
Directory
group
policy,
managing
computing
labs,
deploying
software
and
somewhere
in
that
time,
while
I
was
at
the
this
role,
PowerShell
sort
of
kind
of
got
some
momentum,
so
I
was
able
to
take
that
sort
of
that
programming,
and
along
comes
a
really,
you
know
fleshed
out.
Scripting
language
I
was
able
to
bring
that
together
and
then
I've
since
moved
on
I
work
for
the
federal
government.
A
Now
thousands
and
thousands
of
computers,
as
you
can
imagine,
and
so
being
able
to
have
a
tool
like
PowerShell
just
has
really
helped
develop.
My
career
I'm
sure
you
guys
are
here
too
because
of
the
same
similar
reasons
right
and
so
you
know
today,
I
want
to
talk
about
working
with
command-line
utility
and
making
that
work
nicely
with
PowerShell,
but
I
thought.
The
first
thing
I
want
to
talk
about
is
what
are
the
awesome
things
like
about
PowerShell
that
we
would
even
want
to
bring
to
a
command-line
utility.
A
So,
let's
just
remember
why
we
like
it
like.
Why
did
you
take
a
Saturday
away
from
doing
other
fun
things
right?
It's
because
something
about
this
thing
has
really
made
an
impact
on
your
ability
to
do
your
work
or
something,
and
so
I
think
I
mean
all
have
our
war
stories,
but
what
I
think
it
kind
of
comes
down
to?
A
Is
it
it
amplifies
our
productivity
right
before
you
had
this
tool,
things
might
have
been
either
almost
impossible
or
sort
of
out
of
reach
for
you
and
and
now
you
know,
you
might
have
even
been
that
person
who
has
gone
to
a
colleague.
You
be
like
hey
something
you
want
automated
right
like
once
you
kind
of
get
this
in
your
tool
belt
it
really.
It
makes
us
so
much
more
productive.
The
question
is
is
is
what
is
what
is
it's
sort
of
its
secret
sauce
that
is
amplifying
our
productivity
and
I?
A
Think
there's
a
couple
couple
things
I've
sort
of
honed
in
on
that
help:
help
do
that,
so
one
it's
predictable
right,
there's
an
own
naming
convention
right
and
command.
Let's
follow
that
the
community
when
we
produce
content,
we
try
to
follow
that,
and
not
only
is
everything
verb
now
there
is
a
limited
set
of
verbs
that
you're
supposed
to
use
right,
and
so,
if
we,
you
know,
learn
that
to
get
something
running,
the
verb
is
start.
Well
now
we
know
start
process,
start
service
start
BM
right
we
as
administrators
or
we
don't
have
to
think.
A
Is
that
begin?
Is
that
long?
No,
it's
start
right,
so
the
the
designers
sort
of
limited
the
namings,
and
then
that
makes
us
more
productive
because
it's
not
as
much
of
a
guessing
game
as
to
what
command
I
might
want
to
use.
So
that's
one
predictable,
discoverable
right.
We
know
that
so
we've
found
the
commandment
that
we're
after
and
now
very
reliably
we
can
interrogate
that
command
with
good
help
and
we
can
find
out.
You
know
detailed
descriptions.
Parameters
parameter,
sets
examples,
you
know,
I
know
help
systems,
I'm
sure
you
have
examples
of
commandlets.
A
You
might
have
gotten
that
didn't
have
wonderful
help
well
by
and
large
I
think
the
vendor
produced
commandlets
the
Microsoft
produce
Commandments.
There's
some
really
good
help
there.
So
again
you
you
found
your
command,
ask
help
about
it,
and
now
you
know
how
to
use
it
right
there,
so
you're,
productive
and
then
I
think.
What
brings
us
all
together
is
that
it's
composable
right
so
powershell
as
we
know,
sits
on
top
of
dotnet
and
that's
an
object
based
system
and
being
an
object
based
system
gives
it.
The
advantage
of
the
objects
have
properties.
A
Right,
you
just
see
a
bunch
of
Newark
verbs
and
nouns
running
across
your
screen
right
and
then,
as
I
mentioned,
there
is
a
prescribed
set
of
verbs
right.
Well,
there's
a
commandment
that
actually
has
those
for
you,
and
so
we
can
say
something
like
get
command
group
object
by
property
verb
and
we
can
then
sort
property
count.
A
Of
course,
there's
some
help.
I
think
what
most
of
us
love
doing
is
that
there's
some
examples
that
I
could
use
and
I
think
everybody
likes
this
one
too.
It
can
show
a
little
window
and
then
search
for
something
you
know
Max
and
it
right
so
so
we
have
a
nice
help,
help
system
and
in
fact
I
guess
you
could
say.
I
already
showed
an
example
of
composability
right
here
right,
I
I
took
the
command
I
pipe
that
into
group
I
pipe
that
into
sort
right.
A
And
so
you
know,
if
somebody
asked
me,
hey
I'd
like
to
see
when
the
flavors
that
had
were
berries
were
served
and
how
often
you
know
I
can
I
can
use
power,
shells
composability
to
say
where
object,
property,
property
flavor
like
some
kind
of
berry
right
and
then
I
can
group
that
five
property
flavor
and
then
I
can
sort
that
by
property
of
count
and
right.
There
I
just
answered
a
question
that
might
be
really
hard
without
composability
right,
I
just
found
out
and
maybe
I,
don't
I.
A
Don't
want
to
see
all
that
stuff
on
the
group,
so
I
just
say
now:
I'm
gonna
select
just
what
I
want
I
want
to
see.
Name
first
and
then
I
want
to
see
count
and
so
I
could
answer
the
business
question
of
strawberry
is
the
most
popular
flavor.
That
is
a
berry
right
and
so
anyway,
I
think
everybody
knows
these
things,
but
what
I
wanted
to
affirm
is
that
these
are
the
things
the
predictability,
the
discoverability
and
the
composability.
A
These
are
the
things
that
you'd
like
to
have
and
bring
with
you
when
you're
using
a
command
line
utility
everybody
following
me:
okay,
yeah,
okay,
alright!
So,
but
when
we
get
to
our
legacy
and
vendor
tools,
what
we
end
up
with
sometimes
is
a
picture
that
looks
like
that.
So
the
things
that
amplified
our
productivity
are
lost.
A
You
know
we,
the
naming
convention,
that
a
vendor
might
have
used,
isn't
predictable
for
you
or
your
team
hit
or
miss
on
help
for
sure
I
think
you
know
command
line
you
to,
even
if
they
take
a
slash
question
mark,
sometimes
you
think
they
would
and
then
you
just
ran
the
command
right
and
then
composable.
You
know
this
whole
idea
of
this.
To
that.
A
A
We're
gonna
use
PowerShell
we're
gonna,
do
a
little
bit
of
parsing
of
console
output,
so
I'm.
What
I've
done
is
I'm
picking
a
utility
that
any
of
us
can
download
it's
something
from
sysinternals
tools,
so
the
y'all
can
play
with
the
same
utility.
I
did
if
you
want
so
we're.
Gonna
are
some
console
output,
we're
gonna,
take
that
parsed
output
and
turn
that
into
objects,
and
then
we're
going
to
bring
that
all
together
by
wrapping
it
up
in
a
function
and
I'm
gonna.
A
Try
to
do
this
in
the
time
that
we
have
allotted
right,
and
so,
let's,
let's
go
get
at
least
reference
okay.
So,
as
I
mentioned
I
downloaded
this
internal
suite,
you
might
be
familiar
with
it.
Ps
exec
there's
those
type
of
tools
right,
so
I'm,
gonna
just
show
you
one
that
so
I
chose
this
one.
It's
disk
usage,
actually
that's
a
great
example
of
predictability.
A
Not
there
like
back
in
that
8.3
days
right,
real
estate
on
naming
was
was
a
premium,
so
you
wouldn't,
you
would
make
you
wouldn't
make
get
disk
usage
right,
you'd
make
D
you,
and
so
that
just
is
an
example
of
hey.
That's
not
very
predictable
name
on
our
show.
We
don't
have
that
constraint
right
so
anyway,
this
is
the
utility
I
was
going
to
work
with.
If
you
see
here
that's
you
know,
there
is
some
help.
So
I
would
say
this
one
has
some
discoverability,
which
is
nice.
A
A
That's
just
text
on
my
screen,
but
I'd
like
it
to
be
eventually
in
an
object,
but
first
thing:
I'm
gonna
do
I'm
going
to
kind
of
Torpedo
my
own
talk,
if
you,
if
you
notice
up
here
this
particular
command,
the
command
line
utility
has
a
dash
C
option
which
says
I'll
make
CSV
output
for
you
right.
So
if
that's
the
case,
you
don't
need
to
do
all
this
parsing
that
I'm
gonna
show
you
right,
because
PowerShell
is
going
to
make
that
really
easy
to
both
horse
and
matrix
whatever
in
one
move.
A
So
right
here,
I
can
say:
convert
from
by
CSB,
CSB
and
PowerShell
just
made
that
CSV
output
into
an
object
and-
and
you
know
I-
can
it's
a
custom
object.
I
can
say
this
I
can
say
gif
member
right
to
look
at
the
object
that
it
produced
for
you
and
you
see
up
there.
It
created
a
custom
object
for
us.
One
thing
I'd
want
to
point
out
to
you
is:
do
you
see
that
everything
here
all
these
note
properties
are
strings?
So,
let's
just
let's
just
sign
that
to
a
variable.
So
we
have
it.
A
Okay,
so
custom
obj,
so
I
can
now
it's
really
nice
I.
Can
reference
file
count
right?
What
was
custom?
Oh
did
I
just
assign
it
to
get
member
yeah
I
did
nice.
I
was
not
that's.
The
variable
I
want
okay,
custom,
obj,
dot
cloud
count
right,
it's
97,
but
we
here
know.
That's
that's
a
number.
We
want
to
treat
that
like
a
number,
but
if
I
were
to
say
plus
10
whoops
it
because
it
was
a
string,
it
just
concatenated
this
dude
997
with
10
as
strings
right.
A
This
object
into.
You
know
the
data
types
that
you
really
want
it
to
be,
and
I'm
not
I'm,
just
going
to
do
it
on
this
one.
Just
to
show
you
that
yes,
PowerShell
did
the
heavy
lifting
and
converted
that
to
an
object
force,
but
it
wasn't
a
perfect
conversion
that
you
would
actually
want.
You
you'd
want
these
data
types
to
be
integers
so
now
custom
object,
dot,
file,
count
plus
10
right
107
right.
So
you
need
to
do
a
little
bit
of
manipulation,
even
with
PowerShell,
producing
an
object
for
you
to
get
the
data
types.
A
The
way
you
want
to
be
friendly
to
the
next
person
who's
going
to
use
your
tool,
they're,
getting
they're,
getting
integers,
not
strings
right
when
it
comes
to
north,
so,
okay.
So
let's
just
pretend
for
for
the
demo
today
that
we
don't
have
the
C
option
and
we
are
faced
with
how
do
I
don't
want
that
get
member
again.
A
How
do
I
scrape
out
this
data
right,
and
so,
let's
do
a
little
bit
of
that
together,
so
I'm
just
gonna
sign
that
to
a
variable.
Oh,
you
see
that
processing,
so
I
think
PowerShell
I
don't
want
to
detour
too
long
on
this,
but
PowerShell
is
seeing
some
output
from
that
utility
and
it's
getting
in
the
air
stream
and
it's
polluting
my
output
I,
don't
want
that.
So
you
can,
on
your
on
your
own
time,
look
at
redirection
operators,
but
we
can
say:
let's:
let's
redirect
that
processing
thing!
A
A
Got
result
what
what
is
nicer
that
might
just
look
like
text,
but
PowerShell
is
giving
me
back
an
array
of
strings
and
how
do
I
know
that?
Well,
if
I,
if
I
just
do
this
index
into
my
result,
you
see
it
just
gave
me
that
very
first
line
and
how
do
I
know
that's
a
string.
Well,
I
can
say
get
type
dot
name
and
that's
a
string
right.
A
Well,
what
I'm
gonna
do
for
this
is
I'm
just
going
to
show
you
a
few
techniques
to
use
those
methods
to
basically
wave
how
we're
going
to
get
ninety
seven
out
of
there
right
and
assign
that
to
a
variable.
Now,
one
thing
we
say
mark
actually
is
going
to
have
a
talk
on
using
regex.
Regex
is
like
not
my
strength.
I
can
go
to
it
when
I
need
to,
but
I
always
have
to
reference
a
website
or
something
like
that.
I'm
a
little
better
with
the
built
in
dotnet
string
manipulation.
A
So
I'm
gonna
show
you
that,
but
if
you're
a
regex
kind
of
person,
how
about
it,
it's
it's
it's
very
powerful
and
it
can.
It
can
parse
strings
like
nobody's
business
but
in
my
case,
I'm
going
to
use
these
built-in
methods.
Okay,
so
here's
what
I
like
to
do
so
substring
is
one
of
them
and
if
I
could
say
I
could
say,
I'm
just
going
to
throw
a
number
I'm
going
to
take
ten
characters
in
and
over
and
and
there's
you
saw
it
it
hopped
over
and
then
gave
me
the
rest
of
that
substring
right.
A
A
Don't
want
and
return
me
what's
left
and
what's
left
is
the
number
I'm
after
and
so
when
I
do
this
one
when
I'm
scraping
the
screen,
you
can
kind
of
just
look
at
my
code
and
it
sees
oh
I
see
he
was
scraping
off
files
now
he's
scraping
off
directories
right,
so
that
was
one
quick
trick.
I'm
going
to
show
you
that
I
think
makes
your
code
readable
and
gets
you
the
data
you
want
now
again.
What
I
would
do
there
is
I?
A
Would
you
know
turn
that
into
an
int,
because
that's
what
I
wouldn't
want
that
to
be,
but
nevertheless
alright.
So
you
say
all
right:
that's
a
nice
trick,
but
how
in
the
world,
are
you
going
to
get
946
comma
176
without
the
the
bytes
on
the
end
and
the
comma
in
the
middle
and
the
size
on
disk
in
the
front
right,
that's
a
little
more
complicated.
A
So,
let's
go
to
that
particular
eyelet
sees
0
1
2
3
was
that
free,
ok,
all
right
so
I'm
going
to
use
another
method,
I'm
going
to
use
index
of
right
and
I
want
to
lop
off
dot
fights
or
space
bytes
right.
So
I'm
just
going
to
say:
where
are
you
oops?
Where?
Where
are
you
in
my
strength?
Okay,
you're
21
characters
out
there,
so
what
I'm
gonna
do
is
I'm
gonna
say:
result:
three
dot.
A
A
A
All
right
so
did
I
already
put
that
in
print
the
dot
replace,
replace
I'm
gonna,
replace
a
comma
with
an
empty
string.
All
right
just
got
rid
of
that
all
right
and
then
what's
the
last
thing,
I'm
gonna
do
that
very
first
trick.
I
showed
you
I
want
to
get
rid
of
size
on
this
I'm
gonna
grab
that
nine
just.
A
B
A
A
But
if
you
had
a
utility,
that's
putting
out
some
some
output
to
the
host,
you
could
capture
that
in
a
variable
and
use
some
tricks
to
work
through
there
and
get
out
the
data
that
you
want
so
again,
I'm
just
showing
you
some
things,
I'm
sure,
there's
some
folks
in
here
that
are
regex
folks.
That
would
have
found
easier
techniques
to
get
that
data
out
and
by
all
means
do
that
right.
Well,
we'll
get.
A
C
C
A
A
Okay,
just
I've
got
it
parsed,
but
remember
we
want
objects
right,
so
I've
got
individual
properties
parsed
out,
but
people
in
PowerShell
want
you
to
hand
them
an
object
and
work
with
an
object
right.
So
what
I
did
is
I
just
sort
of
coded
up
what
we
did
here
and
I'm
using
a
hash
table
to
do
key
value
pairs
of
that
parsing
right.
So
there's
our
person
work
and
here's
a
hash
table
right.
A
A
Right
now,
I've
got
this
custom
object,
get
member,
remember,
right
and
I
can
I.
Can
reference
directory
count
the
way
I
want
object,
director
count
plus
ten
right
now.
It's
there
right
so
now,
I
have
an
object.
So,
okay,
we've
really
worked
through
the
first
two
two
parts
of
this
we've
we've
parsed
and
now
we've
we've
used
a
hash
table
to
make
that
parse
date
of
key
value
pairs,
and
then
we
typecast
that
and
now
we've
got
a
PowerShell
objects.
So
now
I'm,
starting
to
like
me,
PowerShell
people
happy,
you
gave
me
an
object.
A
Thank
you.
I
know
how
to
work
with
this.
I
know
how
to
sort
this
I
know
how
to
do
things
with
objects
right.
Okay!
So
then,
back
to
our
where
where
we
were
here,
we
did
that
and
now
we're
going
to
wrap
it
up
in
a
function.
Okay,
so
this
is
the
part
that's
going
to
bring
together
all
three
of
those
ideas
of
predictability
with
a
good
name
discoverability
with
some
help
and
composability
to
the
pipeline
all
right.
A
So
this
is
what
I
do
I'm
sure
again,
there's
a
lot
of
different
ways,
but
what
I
like
to
do
is
I
use,
PowerShell
ISE
because
it
has
a
snippet
and
then
I
like,
which
is,
let's
see,
I
just
use
an
advanced
function
all
right,
so
let's
just
copy
that
and
we'll
go
over
to
visual
studio
code
and
get
ourselves
a
new,
alright,
alright.
So
this
this
template
was
nice
enough
to
it
was
nice
enough
to
get
to
give
us.
A
It's
encouraging
us
put
some
help
in
there
make
it
a
verb
now
and
have
support
for
the
pipeline.
That's
begin
in
and
process
them
right,
so
I
don't
want
to
take
too
much
demo
time
on
help.
But
let
me
at
least
just
just
put
in
a
little
tiny
bit
of
help
in
here
so
obtain
disk
usage
uses.
Do
you
XE
from
this
internal
right
just
just
a
little
bit
of
help
in
there?
So
we
can
see
the
work
that
we're
doing
right
and
for
our
demo,
I'll
call
it.
A
Let's
just
pretend
that
we
were
going
to
go
on
to
make
a
whole
sysinternals
sweet
wrapper
and
we
were
going
to
do
a
bunch
of
their
utilities.
So
we
can
have
this
noun
of
every
one
of
our
commandlets
is
going
to
be
prefaced
with
sysinternals
right.
So
in
our
case,
I'm
going
to
do
gets
this
internals
disk
usage
and
that
is
going
to
serve
as
our
predictable
name
right.
We're
going
to
make
we're
going
to
take
the
time
wrapping
all
of
those
utilities
up
and
every
one
of
our
utility.
A
It's
gonna
be
sysinternals,
something
right,
okay
and
then
let
me
let
me
do
a
little
bit
more
before
I
save
this
right,
I'm
just
going
to
have
a
path
variable,
a
path
parameter,
because
we're
gonna
want
to
get
disk
usage
on
a
given
path
and
yeah.
Let
me
let
me
do
one
a
couple
more
things
just
for
the
next
part,
all
right
Emma,
if
you're
not
familiar
with
how
the
pipeline
works
in
these
communities,
I'm
just
going
to
touch
on
that
a
little
bit.
A
A
And
why
so
so
I'll
say
it
and
then
I'll
demonstrate
it
right
when
when
this
function
is
called,
the
begin
block
is
going
to
get
run
wants
and
the
inbox
going
to
get
run
once
and
the
process
block
is
going
to
get
run
for
every
object
that
gets
piped
into
it.
Let's,
let's
just
demo
that
before
we
add
any
code
to
this
so
I'm
just
going
to
save
this,
we're
just
going
to
go
to.
A
Just
call
this
clock
demo
right:
okay,
so
let's
go
over
here,
did
I
save
it
to
the
right
directory.
I
did
okay,
we're
gonna
dot
source
in
our
function.
So
now
we
should
have
a
get
help,
get
it
sis
internals
this
usage
and
there
is
the
makings
of
of
our
own
custom
Commandment
right.
That
has
our
help
they
want
to
show.
Is
this
pipeline
thing
that
that
I
was
to
begin
and
end
right?
A
So
if
I
say
get
sysinternals
this
usage,
it
doesn't
do
anything
yet
right
path,
I'm,
see,
:
scripts,
Saturday
and
I
say
for
both
all
right
check
it
out.
We
went
into
our
begin
block.
We
also
went
into
our
process
block
and
we
went
into
our
end
block
right,
not
very
exciting,
but
if
I
do
so,
let's,
let's
let's
say
stasis
it,
some
some
paths
equals
get
location.
A
A
All
right
now,
some
paths
have
a
couple
objects
right.
So
let
me
go
into
here
and
let's
take
our
some
paths,
pipe
it
to
our
gets
this
internals
disk
usage
or
pose
check
it
out.
We
went
this,
showed
you
how
that
we
went
into
our
begin
block.
I
gave
it
two
objects
cross.
This
block
got
run
twice
and
then
we
went
to
our
end,
but
you
know
I've
kind
of
things.
A
People
typically
use
their
beginning
in
blackboard
might
be
for,
like
maybe
maybe
connecting
to
a
database
once
and
then
making
sure
you
clean
up
that
database
of
connection
at
the
end,
and
then
you
use
that
database
connection
for
all
your
objects,
something
like
that,
but
again
research
that
some
on
your
own
I
just
wanted
to
give
you.
The
idea
of
this
is
how,
when
you
make
a
custom
thing
how
your
pipeline
comes
into
play
so,
okay,
so
we
did
all
this
hard
work
together
of
producing
this
right
of
hey.
A
A
A
So,
let's
dot
source
in
gets
this
internals
dish.
You
said
C,
colon,
Auto,
lab
cool
right.
We
just
got
an
object
back
and
we
built
that
together
all
right
and
then
it's
just
a
second
ago,
I
had
some
past
didn't
I.
Some
pass
fight
to
get
this
internals
disk
usage
owes
like
right.
There
I,
don't
know
where
we
took
a
tool
that,
like
you,
had
to
use
yourself,
put
it
in
a
batch
file,
point
to
a
bunch
of
directories
and
we
we
can
type
data
into
it
and
call
it
and
get
back
objects
right.
A
It's
really
cool!
So
here's
the
thing,
though,
if
I
wanted
to
use
something
like
get
child
item
directory
I
just
want
directories.
I
want
to
recurse,
see
called
an
audit
lab
right.
There's
all
these
directories
I'd
like
to
pipe
that
into
the
Commandant
we
just
built
together,
but
it
bleeds
red
all
over
my
screen.
Why?
Because,
when
I
do
get
child
item.
A
Guess
what
I
don't
have
all
this
good
stuff
in
here?
I
don't
have
something
that
is
a
path.
I
have
full
name,
but
that
doesn't
equal
path.
So
PowerShell
doesn't
know
what
to
do
with
that
object
when
it
pipes
it
into
my
command
line.
It
doesn't
know
so
so
you
know
you
get
into
this
situation
where
you'd
like
somebody
to
be
able
to
use,
get
child
item,
the
curse
and
pipe
it
into
your
thing
to
get
disk
usage,
but
they
can,
and
so
they
would
have
to
do
something
like
this.
A
A
C
A
A
Speak
up,
thank
you
right.
So
there
right
so
I
was
giving
it
files
Thank,
You,
Jeremy,
I,
think
that
was
all
right,
and
so
now
that
I'm
just
getting
directories
I
type
that
in
and
but
but
hey.
You
know,
look
ya'll!
So
I
just
blew
this,
so
you
don't
want
to
make
your
the
user
of
your
command.
Let
have
to
try
and
calculate
a
property
off
of
get
child
item
into
the
name
path
right.
A
So
one
of
the
tricks
I'm
going
to
show
you
that
just
that
we
could
do
together
is
take
advantage
of
this.
This
alias
thing
so
I
can
come
in
here
and
I.
Think
I
can
just
slam
it
right
there
and
say
alias
full
name.
I!
Think
that
I
think
that
just
takes
an
array
right,
so
you
can
have
multiple
aliases
forth
all
right.
We
do
that
and
we
dot
source.
It
live
demo
right
and
so
now
do
this.
A
A
A
We
we
could,
you
know,
is
you
know,
Jeremy
point
out.
This
need
to
be
a
path.
I
could
do
some
validation
on
this,
which
is
really
really
great
right.
We
could,
we
could
say,
validate
and
then
we
could
see
everybody.
Anybody
know
the
right.
So
I
can
say
it's
a
test,
Pap
test
path.
Right,
thank
you.
You
know
and
then
path
type
blog
Aaron
do
this.
A
Like
that
and
path
type
of
leaf,
I
made
of
yeah
container
or
leaf
I
think
as
the
own
right,
and
so
that
now
now
I'm
making
sure
I'm
not
getting
bad
data
in
by
by
adding
a
little
parameter
validation.
Another
thing
I
could
do
I'm
referenced,
I'm
hard-coded
in
here
referencing,
this
utility
right,
so
I,
don't
know
where
somebody
else
might
have
that
utility
I
could
parameterize
the
path
to
the
utility.
A
What
I
would
caution
you
with,
and
that
is
you
wouldn't
want
somebody
to
accidentally
point
to
another
utility
and
then
run
your
code
is
running
that
utility
in
doing
so
so
I
would
even
put
a
little
validate
script
on
that
where
I
said
get
file
hash,
perhaps
of
the
actual
utility
make
sure
that
it
is
the
utility
that
you
intended
them
to
run
so
and
of
course
you
can
flesh
out
the
help,
and
you
can
take
I
mean
again
like
we
did
this
together
right.
We
did.
A
Right
you
just
help
them,
they
can
take
that
and
it
just
works
so
again
that
utility
you
might
be
using
might
have
really
lousy
help.
You
learn
it.
You
put
the
help
that
it
should
have
come
with
right
and
now
you've,
you've,
empowered
your
team.
Your
team
doesn't
have
to
know
how
to
do
all
the
things
we
just
did
together.
They
just
know
PowerShell,
they
know
objects
and
now
you've,
wrapped
up
some
utility,
that's
important
that
was
provided
from
your
vendor.
You
just
made
your
team
that
much
better
right.
You
have
you,
you
know.
A
We
have
other
thing
that
he
is
a
very
easy
thing
that
you
can
do
add
logging
right,
so
a
certain
utility
doesn't
come
with
good
logging,
you
log
for
it
right
and-
and
so
this
is
all
the
the
great
things
you
can
do
with
a
few
techniques
of
wrapping
around
online
utilities
with
PowerShell
right.
So
that's
that's!
Really
the
the
crux
of
my
talk:
if
y'all
had
some
questions
or
anything,
y'all
wanted
to
go,
I'd
love
to
chat
up
yeah.
C
A
C
A
C
A
Yeah,
so
so
yeah
and
notice,
because
to
get
the
one
one
thing
that
I
do
also
hope
you
take
away
when
I
did
the
little
demo
heyhow
again
in
and
process
work.
You
know
you
hear
about
the
pipeline
all
the
time
and
I
thought.
Oh
that's
out
of
reach
for
me.
I,
don't
know
how
to
use
that
pipeline
myself.
A
I
mean
if
you
saw
I
just
took
that
template
and
plugged
in
some
code
in
the
process
block
and
all
of
a
sudden
I
had
a
tool
that
could
use
the
pipeline
and
then,
with
the
trick
of
the
alias
now
I
can
use
get
child
item.
I
can
interrogate
my
entire
operating
system
in
my
desk
with
directory
and
piped
that
into
a
tool,
and
so
we
just
I
would
say
amplify
the
productivity
of
the
disk
usage
utility
with
with
all
the
goodness
of
our
shop
still
works
without.
A
A
A
You
know
that's
an
it's
not
gonna
like
it
cuz
it's
an
array
right,
but
if
I
do
you
know
right
now,
if
you,
if
I,
wanted,
look
if
I
wanted
I
could
make
this
instead
of
taking
I,
could
make
that
V
and
ROI
you
know,
I
should
have
made
that
string
right.
Sorry,
should've
done
that
so
right
now
it's
just
taking
a
single
string.
Right
I
could
have
said
it'll
accept
an
array
of
strings
and
then
done
exactly
what
you
said.
Where
then
I
already
have
an
array
of
strings.
A
A
Okay,
so
what
I
would
need
it
wouldn't
work,
because
what
I
need
to
do
here
is
put
a
for
each
object
around
it.
So
now
I,
even
if
I
did
that
that's
cool
because
then,
with
the
process
block
you're
only
getting
one
at
a
time
so
for
each
object
would
just
be
one
object,
so
yeah
I
could,
if
I
wanted
either
just
rely
on
the
pipeline
to
do
the
work
for
me
or
I
could
have
have
in
my
process
block
for
each
object
around
that,
and
it
would
work
just
fine
cool
all
right.
A
What
I
guess
what
I
would
just
say?
You
know
what,
if
you
take
nothing
else
away,
just
remember
we're
calling
that
these
things
that
they
this
is
really
the
secret
sauce
of
PowerShell
right,
miss
predictability,
this
discoverability
and
composability.
You
keep
those
in
mind
when
you
go
to
build
some
of
your
own
tools
and
you're,
saying
hey:
these
are
the
things
I
want
to
bring
to
those
tools.