It seems nomatter what I do it won't let me run scripts. It keeps saying that i have unauthorized access despite setting the policy in both PS and ISE in either order, with administrative privileges. I'm on W11, PS version 5 latest build.
Hey Nolan! Try running Set-ExecutionPolicy unrestricted in PowerShell run as Administrator. I have seen that RemoteSigned sometimes still makes it limited. I'll add that note as an annotation to the video. Thanks for the catch!
@@PowerShellEngineer Does this have to be done in safe mode, or in startup terminal? I use linux and mac mainly, and rarely run a windows hypervisor or emulator, so I thought I’d ask.
I found the best way to fix all errors in PowerShell. Change the font color of errors to match your background color. If you can't see the errors, they don't exist.
Thank you, I'm glad it was helpful! If you're interested, I have a video just on automation in under one hour that I think is kind of a next step from this video.
Update: this video helped my buddy to ditch the GUI and to be comfortable doing it! Yay!!! This is fantastic!! Thanks! I’m recommending this to a friend who uses windows exclusively, who hasn’t ditched the GUI yet. This really is a great tutorial. Appreciate you.
Well organized, well spoken, easy to understand tutorial. For some reasons, volume is low (I experience this volume issue on some other online videos - but not all videos).
++GOOD! Watched a ton of videos on the topic the last 2 days - this one is by far the best: well structured, understandable examples, fun to key along in my own system.Keep up the good work!
Hesitations, quite a few silences 😅 coupled with quick statements 💨, but a great incentive for PowerShell with a good dose of fun 😄 and enthusiasm 🎉. I imagine that the paid version on UDEMY will stand out even more and be significantly more worthwhile 💡. Thank you for this wonderful demystification, Jim as James Tyler 🙌!
Thank you. This video was so helpful. I'm just starting my journey learning PowerShell and this was so helpful. You gave me some confidence in learning it now.
WOW just wow! I got chat gpt to make a script that outputs a template for me based on my answers and I've been struggling to edit it as I don't know much, I'm only 18 minutes into this video and i was able to understand my script and make the correct edits!
great stuff thanks. was in bash world for so long and as soon as wsl2 and powershell v6 became a thing i was like "ok windows is now my machine - and i can build stuff easily cross platform too"
You are welcome, Sachin! I have been working on writing a PowerShell book since November and I am almost finished with that. I will be posting videos on more advanced topics more regularly soon.
Great video.... for me the title is a bit misleasding as you covered a great deal in around 2 hrs but in order for me to digest & absorb the info there was much video stopping, practicing, and note taking. Hahaha 😂
1 hour passed and it is still some kind of basic stuff like print, save, if, switch, loops etc. Hopefully there will be some more interesting information at the end.
Very nice course! Stuff nicely explained in a straightforward way, this is what I've been looking for. But maaan... Your voice is so quiet throughout the whole video! That outro jingle with the volume up spooked me out 😅 Anyway, thanks for the knowledge, I wish you all the best! Cheers!
Thank you, Karol! Yes, I have to get the volume and aspect ratio right on my next videos 😅 I've got more videos styled like this coming. I'm finishing editing on my PowerShell book I've been working on since November right now.
Hey SysAdmin, I just recently finished my book, PowerShell for Systems Engineers - it's available on Kindle for now - I'm proofing the print version. I'm almost done with a companion course. www.amazon.com/dp/B0C12DPZ2C
@@PowerShellEngineer I am happy that you released book about PowerShell, is it tutorial or strategy book in addition, Do you provide workshop or course for specific subjects, for instance, I want to learn how to use ASDI in PowerShell for Active Directory and GPO.
Hey, no worries at all! That is called the array subexpression operator - you don't technically need it - you could do $jedi = "Obi-Wan","Anakin" and it would work the same 🙂
1:04:00 you wrote "Foreach ($peep in $HaloPeeps)", why did you use "$peep" as the value? It's part of the array $HaloPeeps; how does Powershell know to use each value in $HaloPeeps when calling $peeps for "Write-Host $peep 'has arrived' "? Is $peep a built in mechanism in PowerShell?
From Microsoft Learn, it gives this example: "foreach ($ in $){} The part of the foreach statement inside parenthesis represents a variable and a collection to iterate. PowerShell creates the variable $ automatically when the foreach loop runs. At the start of each iteration, foreach sets the item variable to the next value in the collection. The {} block contains the commands to execute for each iteration." It's just implicit to the way that a foreach loop works in PowerShell. There always has to be a placeholder item variable to represent the current value as it iterates through the collection.
Get-NetTCPConnection will show you all of the TCP connections. You could filter that down by piping it to a Where-Object that looks for port 22 connections: Get-NetTCPConnection | Where-Object { $_.OwningProcess -ne 0 -and $_.RemotePort -eq 22 } | Select-Object LocalAddress, RemoteAddress, RemotePort
Rookie question (doesn't come super easy to me!). How do you decide when to write the script in the script window and when to do it in the console window?
Hey! Great question. I write code in the PowerShell ISE script window when I want to save the script to run it again later or if I want to make a scheduled task to run the script automatically. In the console, I would run code if I'm just wanting to check something, like Get-Volume (for example) to check disk space or Test-NetConnection to see if a website or server is up.
Hi, great vid so far in 30 minutes or so. I use power shell in general for deploying applications via sccm. Pretty basic stuff probably from your perspective. Start-process etc with silent switches and so on for msi and exes etc. Are there any links or urls you could advise that would help with this particular area of power shell and deploying apps or making changes to a systems file system for example (usually deploy the ps script via sccm with a admin service account to the remote device) Seen some folk get really into a massive long script with other app deployment, I have no idea how they manage to retain the information to write from scratch to be honest. Personally I grab other people’s code online, test and then make it cater for the app in question needs (if it needs to be installed when the device has batter greater than 10 percent for example) Would it be possible to message you a couple of questions with some scripts I have for you opinion on them? Thanks 🙏
Yes, the @pdq channel has some good resources for app deployment. I honestly am testing code the same way for the things I do as well. I often setup a test server just to make sure I don't inadvertently do something bad to my own PC or my server. Feel free to message me on RUclips or Twitter!
@@HBOMB-nl9pw I've been writing a book on PowerShell which will be out soon and I when I made this it was fresh off of two presentations in PowerShell, so I had done (and continue to do) a lot of scripting. Even still, I write something in PowerShell almost every day, even if it's just a little, so it keeps it fresh. For the video I did have an outline so I could keep track of what to move on to next to compress it down :) I would come up with a project to keep the challenges going and stay engaged.
@@PowerShellEngineer been using and testing chatgpt to write test scripts and it’s really good so far, it wrote them similar to how I have which is good 🙂
Hey James, Great video. at the 50 minute mark you are doing some if elseif stuff with Pokemon regions. I tried it and found that any number =100 causes proper output. I believe your variables are strings, would this cause this type of error?
Thank you! There are a few in the description: Table of Contents/Chapters: 0:10 - Introduction 0:32 - Introduction to James Tyler 1:20 - What is PowerShell? 1:41 - How to open PowerShell 1:55 - Adjust the font size of PowerShell 2:13 - Check the version of PowerShell 2:45 - Comparing PowerShell with Command Prompt (CMD) 4:04 - Tips on using the shell itself (up arrow, tab completion) 4:50 - Getting & Setting Execution Policy (so you can actually run scripts!) 6:46 - Open PowerShell ISE 7:46 - Adjust Zoom in PowerShell ISE 8:14 - Write First PowerShell Script 9:06 - Run Your First PowerShell Script 9:22 - Note about PowerShell file extension 9:40 - PowerShell Coding Comments 11:14 - What are Cmdlets? 12:50 - Cmdlet Parameters 14:20 - Clearing the shell 14:29 - Use Get-Command to find Cmdlets 16:08 - PowerShell Modules 16:22 - Get-Help (similar to man in Unix systems) 18:50 - Pipeline (piping - or combining - commands) 20:48 - Variables 21:45 - Pipe a variable 22:29 - PowerShell Variable/Data Types 24:17 - Arithmetic with variables 25:09 - Objects - Chris Thomas shoutout 26:24 - Object properties 26:47 - Get all properties of an object with Select-Object 27:32 - Use Get-Member to get all of the different possible methods of an object 29:18 - Arrays 33:52 - Hashtables 39:42 - Collecting user input with Read-Host 43:44 - If... then... else conditionals 52:47 - Switch Statements 56:24 - For Loops 1:02:58 - Foreach Loops 1:04:07 - While Loops 1:09:08 - Do While Loops 1:10:25 - Defining Custom Functions 1:14:14 - Defining Custom Advanced Functions 1:17:01 - Error Handling 1:22:40 - Create a file with New-Item 1:24:05 - Create a folder with New-Item 1:24:43 - Copy file with Copy-Item 1:25:55 - Move file with Move-Item 1:26:44 - Delete file with Remove-Item 1:27:35 - Confirm if a file is there with Test-Path 1:28:35 - Rename something with Rename-Item 1:29:29 - Active Directory 1:30:20 - Load AD Cmdlets with Import-Module ActiveDirectory 1:30:41 - Get user information with Get-ADUser 1:33:46 - Change user information with Set-ADUser 1:35:30 - Add a user to a group with Add-ADGroupNumber 1:36:55 - Remove a user from a group with Remove-ADGroupMember 1:37:27 - Turn on advanced features in Active Directory Users & Computers 1:38:26 - Add a new user with New-ADUser 1:43:24 - Reset a password of a user 1:46:50 - Wrap up & conclusion
I got a call On powershell scripting Language (automation)based project..did it usefull to take the project.and is it use full in future..? Give some suggestions guys please
ughh, I feel like all of this i can figure out, and i totally get it while watching. It doesnt seem difficult to me in the slightest. The issue for me is, if i had to figure it out on the spot... I am looking for a entry level sys admin job. Can I say that I know powershell? I couldn't recreate this video off the top of my head. BUT if i was asked to do something, I could 100% figure it out. And if i was doing it on a daily basis, I would master it extremely quickly... So can i say that I know powershell? is this imposter syndrome? Do i just not know it?
Hello Sir!.. ...My English is not that good (lvl B1 still learning :P) ..anyways, that's not the case though lOl, I'll try to explain as much as I can :P... I'm new to "Powershell" (still learning the basics..) and briefly, STEP 1 I'm trying to read two different .txt files...the files are simply ranked words (from A to Z) but the words are not the same in each file though, say for example : file 1 path = "c/words/SectionA.txt" , file 2 path = "c/words/SectionB.txt"..STEP 2 matching the words in file 1 (line by line) with a string (text blah blah) and return the result to a variable (say $Result/Match= $Line , $Line_Number)..STEP 3 in file 2 reading only lines that match $Line_Number in "$Result/Match" ($Result/Match= $Line_Number) STEP 1 & STEP 2 were easy but stuck on STEP 3 (reading the specific lines which match the result $Line_Number) //$Index = "E" #reading files based on letters ex : A.txt, B.txt..... //$FilePath = "C:\Read\{0}*.txt" -f $Index //irrelevant// $FilePath1 = "c/words/SectionA.txt" $FilePath2 = "c/words/SectionB.txt" $regex = read-host "Write something" if([string]::IsNullOrEmpty($regex) -eq $true){ Write-Warning "Null Or Not Found" exit } $l = 1 switch -regex -file $FilePath1 { $regex { "$l , $_" $l++ STEP 3 GOES HERE ...... } } ...anyone can help me with this and I'll be very grateful..thanks in advance + excuse my poor language :P..Peace!.
Actually that was easier than I thought... all that I need to do is finding the matched words lines (*Only* $Lines_numbers without $Lines) ..and then later I can use them as "$Index" to get the specific lines from file2..for example : ######### $FilePath1 = "C:\words\SectionA.txt" $FilePath2 = "C:\words\SectionB.txt" $File1Content = Get-Content $FilePath1 $String = Read-Host "Type something" if ([string]::IsNullOrEmpty($String)) { Write-Warning "Null or empty input" exit } $String += "*" $FilteredLines = @() $Line_Number = 0 foreach($Line in $File1Content){ if($Line -like $String){ $FilteredLines += "$Line_Number" } $Line_Number++ } if([string]::IsNullOrEmpty($FilteredLines)){ Write-Warning -Message "Not Found" exit } $Result1 = (Get-Content -Path $FilePath1 | Select-Object -Index ($FilteredLines)) $Result2 = (Get-Content -Path $FilePath2 | Select-Object -Index ($FilteredLines)) #Display Contents $Result1 + "" + $Result2 ####################### that's it. (that was much fun ☺).. @@PowerShellEngineer
Hey James, I am a graduate who is trying to get into system administration and I am learning both linux and windows server. I have basic knowledge in programming and bash shell scripting. I was confused if I should learn python for scripting as it is cross platform, or just move on with powershell and bash shell. Can I get your opinion?
I don't think you would be worse off for learning Python. I'd actually recommend learning all three. That said, for systems administration, PowerShell and Bash would be more useful. Additionally, PowerShell Core 7 is available on Windows, Mac, and Linux!
This is what one could look like; I'm not sure how to keep it present on the shell though: while ($true) { # Get current time $time = Get-Date -Format "HH:mm:ss"
# Get CPU usage $cpuUsage = (Get-WmiObject Win32_Processor).LoadPercentage # Get memory usage $mem = Get-WmiObject win32_operatingsystem $memFree = "{0:N1}" -f ($mem.FreePhysicalMemory/1MB) $memTotal = "{0:N1}" -f ($mem.TotalVisibleMemorySize/1MB) $memUsage = "{0:N1}" -f (($memTotal - $memFree) / $memTotal * 100) # Build the status bar string $status = "Time: $time | CPU: $cpuUsage% | Memory: $memUsage% used ($memFree MB free of $memTotal MB total)"
# Clear the current line and write the status Write-Host -NoNewline "`r$status" # Sleep for a second before updating Start-Sleep -Seconds 1 }
This is untested, but something like this should work: New-ADServiceAccount -Name gmsa -DNSHostName -PrincipalsAllowedToRetrieveManagedPassword and then you can collect the password and restart the service with this: $secpasswd = ConvertTo-SecureString "" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential("DOMAIN\gmsa", $secpasswd) Start-Service -Name Spooler -Credential $mycreds
I remember when Microsoft Windows wanted to get rid of the DOS command line. Most people these days probably don't even know what that is anymore. This was in the 90s. They said "With Windows, you don't need to type commands anymore." Ok, thanks. That's great. Several years later..."Here's Powershell. We want you to learn a whole new set of 50,000 commands again." Good lord. What is the matter with people?
And why do these commands have to be so deliberately different than Linux? Feels like a personal agenda against using already established industry wide accepted commands to do even simple stuff
i hate working with windows power shell since it has the c:/User/{name}/etc/etc/ which feels slower to write then ~\etc\etc the c: is really a turn off idk why
using -eq and -ge etc is so dumb. We already have symbols for these, why make things different in a worse way? Really, at this stage, I just want C# scripting.
Complete NOOB here, I used Set-ExecutionPolicy unrestricted, as admin but I still get the red cd : Cannot find path 'C:\Scripts' because it does not exist. At line:1 char:1 + cd C:\Scripts. Windows 10 Pro v 1909
It seems nomatter what I do it won't let me run scripts. It keeps saying that i have unauthorized access despite setting the policy in both PS and ISE in either order, with administrative privileges. I'm on W11, PS version 5 latest build.
Hey Nolan! Try running Set-ExecutionPolicy unrestricted in PowerShell run as Administrator. I have seen that RemoteSigned sometimes still makes it limited. I'll add that note as an annotation to the video. Thanks for the catch!
@@PowerShellEngineer Thank you very much, that worked 👍👍
Sudo
@@PowerShellEngineer also, you should be able to open Power Shell in Admin mode.
@@PowerShellEngineer Does this have to be done in safe mode, or in startup terminal? I use linux and mac mainly, and rarely run a windows hypervisor or emulator, so I thought I’d ask.
I found the best way to fix all errors in PowerShell. Change the font color of errors to match your background color. If you can't see the errors, they don't exist.
😂
Lmao! 😂
😂😂😂
Where are you from, my friend? 😂😂
I had my doubts about you and 2 hrs but I have to admit that this gets down to the nitty gritty. Thanks for taking the time.
Thank you, I'm glad it was helpful! If you're interested, I have a video just on automation in under one hour that I think is kind of a next step from this video.
@@PowerShellEngineer I will definitely check it out. I subscribe now.
Update: this video helped my buddy to ditch the GUI and to be comfortable doing it! Yay!!!
This is fantastic!! Thanks! I’m recommending this to a friend who uses windows exclusively, who hasn’t ditched the GUI yet. This really is a great tutorial. Appreciate you.
Well organized, well spoken, easy to understand tutorial. For some reasons, volume is low (I experience this volume issue on some other online videos - but not all videos).
++GOOD! Watched a ton of videos on the topic the last 2 days - this one is by far the best: well structured, understandable examples, fun to key along in my own system.Keep up the good work!
😊
Hesitations, quite a few silences 😅 coupled with quick statements 💨, but a great incentive for PowerShell with a good dose of fun 😄 and enthusiasm 🎉. I imagine that the paid version on UDEMY will stand out even more and be significantly more worthwhile 💡. Thank you for this wonderful demystification, Jim as James Tyler 🙌!
Thank you. This video was so helpful. I'm just starting my journey learning PowerShell and this was so helpful. You gave me some confidence in learning it now.
Probably one of the better tutorials! Mike from MI
1:22:42 This is where the SHELL part starts
As a new PowerShell user this was super helpful and you presented it in a fun easy to understand way. Thanks
best powershell tutorial video i have seen on the internet🔥🔥🔥
Thank you!
I like those fun examples! Thank you!
You are welcome!
Thank you-I was able to learn PS basics- I like your teaching style..too good🤘
Glad you liked the video and glad I could help!
WOW just wow! I got chat gpt to make a script that outputs a template for me based on my answers and I've been struggling to edit it as I don't know much, I'm only 18 minutes into this video and i was able to understand my script and make the correct edits!
Thanks mate, good vid. Newbie here and learnt a lot, much appreciated.
Nice work, great little refresher!
great stuff thanks. was in bash world for so long and as soon as wsl2 and powershell v6 became a thing i was like "ok windows is now my machine - and i can build stuff easily cross platform too"
Thank you, that was very easy to follow & made a lot of Sense!
Thanks!
Hands down, the best tutorial on youtube (on the market for that matter lol) thanks bro!
Thank you for the video. Very helpful. May the force be with you.
The best intro PS. Thank you 🙏
great practice powershell thanks alot
great video man ,great content.. i am begginer with basic python knowledge yet i was able to understand everything thanks a lot
No problem! I'm glad you enjoyed it.
All I want is to delete the Administrator
Very cool learning video. Specially when I found out you are a fan of LOTR :))
Great video, any other resources you recommend to keep learning PS.
I'm on linux & stumble to this ...Why not ~
Thank you James ! Hope you'll also guide with additional (advanced) knowledge on the same topic.
You are welcome, Sachin! I have been working on writing a PowerShell book since November and I am almost finished with that. I will be posting videos on more advanced topics more regularly soon.
@@PowerShellEngineerbro Execution Policy enable put us in any dangerous things?
Great video.... for me the title is a bit misleasding as you covered a great deal in around 2 hrs but in order for me to digest & absorb the info there was much video stopping, practicing, and note taking. Hahaha 😂
This was so helpful! Thank you!
That was a very helpful video, keep it up! :)
This was phenomenal thank you.. I learned a ton..
Brother this is very informative and helpful! Thanks heaps!
This is exactly what I needed! Brought me up to speed
1 hour passed and it is still some kind of basic stuff like print, save, if, switch, loops etc. Hopefully there will be some more interesting information at the end.
a very nice one for beginner!
Great video and great examples 😊 🎉
Very nice course! Stuff nicely explained in a straightforward way, this is what I've been looking for.
But maaan... Your voice is so quiet throughout the whole video! That outro jingle with the volume up spooked me out 😅
Anyway, thanks for the knowledge, I wish you all the best!
Cheers!
Thank you, Karol! Yes, I have to get the volume and aspect ratio right on my next videos 😅 I've got more videos styled like this coming. I'm finishing editing on my PowerShell book I've been working on since November right now.
Amazing video!! Thank you!
Absolutely, no problem!
This helped me so much
This was lovely, thanks
I appreciate at the references used for programming. I didn't realize we were up to 908 pokemon these days. But I'm partial to the Johto region.
what do you mean partial to the johto Region, that one is one of the best. Id say second best maybe.
@adotcito that's what I mean haha. It's my favorite for sure.
Great watch sir, What book would you recommend for o365/Azure consultant to learn powershell? Thanks
Thank you james👍
Do you recommend books for learning PowerShell and automating with PowerShell
Hey SysAdmin, I just recently finished my book, PowerShell for Systems Engineers - it's available on Kindle for now - I'm proofing the print version. I'm almost done with a companion course. www.amazon.com/dp/B0C12DPZ2C
@@PowerShellEngineer
I am happy that you released book about PowerShell, is it tutorial or strategy book
in addition, Do you provide workshop or course for specific subjects, for instance, I want to learn how to use ASDI in PowerShell for Active Directory and GPO.
Nice vid, touched every major topic.
Do you happen to know a good static analyzer for PowerShell?
Yes, the PSScriptAnalyzer from Microsoft. Though the GitHub plugin for VSCode works really well - I used it to audit my disk cleaner script.
Great examples.. Star Wars and Pokemon :) i like that. easier to learn that stuff
Glad you liked it!
Sorry for the newbie question but at around 30 mins you type = @(‘ObiWan…’) what is the @ symbol for?
Hey, no worries at all! That is called the array subexpression operator - you don't technically need it - you could do $jedi = "Obi-Wan","Anakin" and it would work the same 🙂
@@PowerShellEngineer understood now so thanks a lot 👍
Truly amazing tool !
thanks for the lesson
1:04:00 you wrote "Foreach ($peep in $HaloPeeps)", why did you use "$peep" as the value? It's part of the array $HaloPeeps; how does Powershell know to use each value in $HaloPeeps when calling $peeps for "Write-Host $peep 'has arrived' "? Is $peep a built in mechanism in PowerShell?
From Microsoft Learn, it gives this example: "foreach ($ in $){}
The part of the foreach statement inside parenthesis represents a variable and a collection to iterate. PowerShell creates the variable $ automatically when the foreach loop runs. At the start of each iteration, foreach sets the item variable to the next value in the collection. The {} block contains the commands to execute for each iteration."
It's just implicit to the way that a foreach loop works in PowerShell. There always has to be a placeholder item variable to represent the current value as it iterates through the collection.
Not only get a get a nice refresh in PowerShell, but I also got to learn about the Pokémon regions.
Thanks for the video.
Hi, When I type net session in Powershell, it shows me an SMB connections. Is there a way I can show SSH connection from PowerShell?
Get-NetTCPConnection will show you all of the TCP connections. You could filter that down by piping it to a Where-Object that looks for port 22 connections: Get-NetTCPConnection | Where-Object { $_.OwningProcess -ne 0 -and $_.RemotePort -eq 22 } | Select-Object LocalAddress, RemoteAddress, RemotePort
thank you. ❤❤
how do you make a key press thing like:
if plus pressed, press h
Rookie question (doesn't come super easy to me!). How do you decide when to write the script in the script window and when to do it in the console window?
Hey! Great question. I write code in the PowerShell ISE script window when I want to save the script to run it again later or if I want to make a scheduled task to run the script automatically. In the console, I would run code if I'm just wanting to check something, like Get-Volume (for example) to check disk space or Test-NetConnection to see if a website or server is up.
Hi, great vid so far in 30 minutes or so.
I use power shell in general for deploying applications via sccm. Pretty basic stuff probably from your perspective. Start-process etc with silent switches and so on for msi and exes etc.
Are there any links or urls you could advise that would help with this particular area of power shell and deploying apps or making changes to a systems file system for example (usually deploy the ps script via sccm with a admin service account to the remote device)
Seen some folk get really into a massive long script with other app deployment, I have no idea how they manage to retain the information to write from scratch to be honest. Personally I grab other people’s code online, test and then make it cater for the app in question needs (if it needs to be installed when the device has batter greater than 10 percent for example)
Would it be possible to message you a couple of questions with some scripts I have for you opinion on them?
Thanks 🙏
Also, what best helped you retain the way you can just write the code like that, right off bat?
Yes, the @pdq channel has some good resources for app deployment. I honestly am testing code the same way for the things I do as well. I often setup a test server just to make sure I don't inadvertently do something bad to my own PC or my server. Feel free to message me on RUclips or Twitter!
@@HBOMB-nl9pw I've been writing a book on PowerShell which will be out soon and I when I made this it was fresh off of two presentations in PowerShell, so I had done (and continue to do) a lot of scripting. Even still, I write something in PowerShell almost every day, even if it's just a little, so it keeps it fresh. For the video I did have an outline so I could keep track of what to move on to next to compress it down :) I would come up with a project to keep the challenges going and stay engaged.
@@PowerShellEngineer been using and testing chatgpt to write test scripts and it’s really good so far, it wrote them similar to how I have which is good 🙂
Hey James, Great video. at the 50 minute mark you are doing some if elseif stuff with Pokemon regions. I tried it and found that any number =100 causes proper output. I believe your variables are strings, would this cause this type of error?
DO YOU KNOW DOS COMMAND TO MAKE SHORTCUT FILES ?
nice video, might be good to add a few bookmarks
Thank you! There are a few in the description:
Table of Contents/Chapters:
0:10 - Introduction
0:32 - Introduction to James Tyler
1:20 - What is PowerShell?
1:41 - How to open PowerShell
1:55 - Adjust the font size of PowerShell
2:13 - Check the version of PowerShell
2:45 - Comparing PowerShell with Command Prompt (CMD)
4:04 - Tips on using the shell itself (up arrow, tab completion)
4:50 - Getting & Setting Execution Policy (so you can actually run scripts!)
6:46 - Open PowerShell ISE
7:46 - Adjust Zoom in PowerShell ISE
8:14 - Write First PowerShell Script
9:06 - Run Your First PowerShell Script
9:22 - Note about PowerShell file extension
9:40 - PowerShell Coding Comments
11:14 - What are Cmdlets?
12:50 - Cmdlet Parameters
14:20 - Clearing the shell
14:29 - Use Get-Command to find Cmdlets
16:08 - PowerShell Modules
16:22 - Get-Help (similar to man in Unix systems)
18:50 - Pipeline (piping - or combining - commands)
20:48 - Variables
21:45 - Pipe a variable
22:29 - PowerShell Variable/Data Types
24:17 - Arithmetic with variables
25:09 - Objects - Chris Thomas shoutout
26:24 - Object properties
26:47 - Get all properties of an object with Select-Object
27:32 - Use Get-Member to get all of the different possible methods of an object
29:18 - Arrays
33:52 - Hashtables
39:42 - Collecting user input with Read-Host
43:44 - If... then... else conditionals
52:47 - Switch Statements
56:24 - For Loops
1:02:58 - Foreach Loops
1:04:07 - While Loops
1:09:08 - Do While Loops
1:10:25 - Defining Custom Functions
1:14:14 - Defining Custom Advanced Functions
1:17:01 - Error Handling
1:22:40 - Create a file with New-Item
1:24:05 - Create a folder with New-Item
1:24:43 - Copy file with Copy-Item
1:25:55 - Move file with Move-Item
1:26:44 - Delete file with Remove-Item
1:27:35 - Confirm if a file is there with Test-Path
1:28:35 - Rename something with Rename-Item
1:29:29 - Active Directory
1:30:20 - Load AD Cmdlets with Import-Module ActiveDirectory
1:30:41 - Get user information with Get-ADUser
1:33:46 - Change user information with Set-ADUser
1:35:30 - Add a user to a group with Add-ADGroupNumber
1:36:55 - Remove a user from a group with Remove-ADGroupMember
1:37:27 - Turn on advanced features in Active Directory Users & Computers
1:38:26 - Add a new user with New-ADUser
1:43:24 - Reset a password of a user
1:46:50 - Wrap up & conclusion
I got a call On powershell scripting Language (automation)based project..did it usefull to take the project.and is it use full in future..?
Give some suggestions guys please
Try doing something like this using VS CODE PowerShell extension.
This is how every scripting language should be taught to beginners. Make it a global standard 😂
ughh, I feel like all of this i can figure out, and i totally get it while watching. It doesnt seem difficult to me in the slightest. The issue for me is, if i had to figure it out on the spot... I am looking for a entry level sys admin job. Can I say that I know powershell? I couldn't recreate this video off the top of my head. BUT if i was asked to do something, I could 100% figure it out. And if i was doing it on a daily basis, I would master it extremely quickly... So can i say that I know powershell?
is this imposter syndrome? Do i just not know it?
Hello Sir!..
...My English is not that good (lvl B1 still learning :P) ..anyways, that's not the case though lOl, I'll try to explain as much as I can :P...
I'm new to "Powershell" (still learning the basics..) and briefly, STEP 1 I'm trying to read two different .txt files...the files are simply ranked words (from A to Z) but the words are not the same in each file though, say for example : file 1 path = "c/words/SectionA.txt" , file 2 path = "c/words/SectionB.txt"..STEP 2 matching the words in file 1 (line by line) with a string (text blah blah) and return the result to a variable (say $Result/Match= $Line , $Line_Number)..STEP 3 in file 2 reading only lines that match $Line_Number in "$Result/Match" ($Result/Match= $Line_Number)
STEP 1 & STEP 2 were easy but stuck on STEP 3 (reading the specific lines which match the result $Line_Number)
//$Index = "E" #reading files based on letters ex : A.txt, B.txt.....
//$FilePath = "C:\Read\{0}*.txt" -f $Index
//irrelevant//
$FilePath1 = "c/words/SectionA.txt"
$FilePath2 = "c/words/SectionB.txt"
$regex = read-host "Write something"
if([string]::IsNullOrEmpty($regex) -eq $true){
Write-Warning "Null Or Not Found"
exit
}
$l = 1
switch -regex -file $FilePath1 {
$regex {
"$l , $_"
$l++
STEP 3 GOES HERE ......
}
}
...anyone can help me with this and I'll be very grateful..thanks in advance + excuse my poor language :P..Peace!.
Maybe something like this?
$FilePath1 = "C:\words\SectionA.txt"
$File1Content = Get-Content $FilePath1
$regex = Read-Host "Enter the string to match"
if ([string]::IsNullOrEmpty($regex)) {
Write-Warning "Null or empty input"
exit
}
$Result = @()
$Line_Number = 1
foreach ($line in $File1Content) {
if ($line -match $regex) {
$Result += "$Line_Number, $line"
}
$Line_Number++
}
$FilePath2 = "C:\words\SectionB.txt"
$File2Content = Get-Content $FilePath2
$FilteredLines = @()
foreach ($entry in $Result) {
$LineNumber = $entry.Split(',')[0] -as [int]
if ($LineNumber -gt 0 -and $LineNumber -le $File2Content.Count) {
$FilteredLines += $File2Content[$LineNumber - 1]
}
}
Write-Host $FilteredLines
"Edited" ..that's not what I'm looking for but it helps Thanks anyways .. have a good day :). @@PowerShellEngineer
Actually that was easier than I thought...
all that I need to do is finding the matched words lines (*Only* $Lines_numbers without $Lines) ..and then later I can use them as "$Index" to get the specific lines from file2..for example :
#########
$FilePath1 = "C:\words\SectionA.txt"
$FilePath2 = "C:\words\SectionB.txt"
$File1Content = Get-Content $FilePath1
$String = Read-Host "Type something"
if ([string]::IsNullOrEmpty($String)) {
Write-Warning "Null or empty input"
exit
}
$String += "*"
$FilteredLines = @()
$Line_Number = 0
foreach($Line in $File1Content){
if($Line -like $String){
$FilteredLines += "$Line_Number"
}
$Line_Number++
}
if([string]::IsNullOrEmpty($FilteredLines)){
Write-Warning -Message "Not Found"
exit
}
$Result1 = (Get-Content -Path $FilePath1 | Select-Object -Index ($FilteredLines))
$Result2 = (Get-Content -Path $FilePath2 | Select-Object -Index ($FilteredLines))
#Display Contents
$Result1 + "" + $Result2
#######################
that's it. (that was much fun ☺)..
@@PowerShellEngineer
Hey James, I am a graduate who is trying to get into system administration and I am learning both linux and windows server. I have basic knowledge in programming and bash shell scripting. I was confused if I should learn python for scripting as it is cross platform, or just move on with powershell and bash shell. Can I get your opinion?
I don't think you would be worse off for learning Python. I'd actually recommend learning all three. That said, for systems administration, PowerShell and Bash would be more useful. Additionally, PowerShell Core 7 is available on Windows, Mac, and Linux!
@@PowerShellEngineer learning all three? I wish I have the time.
If I have to pick one first to start, what we you recommend? Thanks.
@@txreal2 Python will be great to start with.
hey is it possible to embed tmux status line into powershell?
This is what one could look like; I'm not sure how to keep it present on the shell though:
while ($true) {
# Get current time
$time = Get-Date -Format "HH:mm:ss"
# Get CPU usage
$cpuUsage = (Get-WmiObject Win32_Processor).LoadPercentage
# Get memory usage
$mem = Get-WmiObject win32_operatingsystem
$memFree = "{0:N1}" -f ($mem.FreePhysicalMemory/1MB)
$memTotal = "{0:N1}" -f ($mem.TotalVisibleMemorySize/1MB)
$memUsage = "{0:N1}" -f (($memTotal - $memFree) / $memTotal * 100)
# Build the status bar string
$status = "Time: $time | CPU: $cpuUsage% | Memory: $memUsage% used ($memFree MB free of $memTotal MB total)"
# Clear the current line and write the status
Write-Host -NoNewline "`r$status"
# Sleep for a second before updating
Start-Sleep -Seconds 1
}
@@PowerShellEngineer really appreciate it thank you but seems like icons are missing 😁😁
Thank you !
So, a lot of my options are blurred out. What does that mean? i cant run anything, even though I am admin, and set policy to remotesigned?
Set the policy to unrestricted and you should be good :)
@@PowerShellEngineer ahh okay, thank you sensei.
Thank you!
Can you please help me create group manage service account, a basic one and start any service using that gmsa account
This is untested, but something like this should work: New-ADServiceAccount -Name gmsa -DNSHostName -PrincipalsAllowedToRetrieveManagedPassword
and then you can collect the password and restart the service with this:
$secpasswd = ConvertTo-SecureString "" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential("DOMAIN\gmsa", $secpasswd)
Start-Service -Name Spooler -Credential $mycreds
thank you sir!🥰
You're welcome!
I remember when Microsoft Windows wanted to get rid of the DOS command line. Most people these days probably don't even know what that is anymore. This was in the 90s. They said "With Windows, you don't need to type commands anymore." Ok, thanks. That's great.
Several years later..."Here's Powershell. We want you to learn a whole new set of 50,000 commands again." Good lord. What is the matter with people?
And why do these commands have to be so deliberately different than Linux? Feels like a personal agenda against using already established industry wide accepted commands to do even simple stuff
20:40
Thank you so much
please add chapters to the video so it'll be easy to navigate
thanks
Tried #My First Comment. It still showed the comment. Wouldn't go away
Can you share your code?
For execution policy, I got this error:
PS C:\Users\hssna\music> Get-ExecutionPolicy
Restricted
PS C:\Users\hssna\music>
So, you want to run Set-ExecutionPolicy Unrestricted
That will allow you to run scripts on the system.
i hate working with windows power shell since it has the c:/User/{name}/etc/etc/ which feels slower to write then ~\etc\etc the c: is really a turn off idk why
I took powershell in college.
10:11 -20.06.2023
Power Shell LEARNING WITH FUNNNNNNNNNNNNNNNNNNNN😄😄😄😄😄
using -eq and -ge etc is so dumb. We already have symbols for these, why make things different in a worse way? Really, at this stage, I just want C# scripting.
Complete NOOB here, I used Set-ExecutionPolicy unrestricted, as admin but I still get the red cd : Cannot find path 'C:\Scripts' because it does not exist.
At line:1 char:1
+ cd C:\Scripts.
Windows 10 Pro v 1909
You would need to make the C:\Scripts directory - you could do that with
cd C:\
New-Item -ItemType Directory -Name "Scripts"
or just
mkdir C:\Scripts
It's good to see commercial Windows making some effort to catch up with free Linux.
I made this mistake back in 2015 and I promise my self not to do it again. Just learn Bash
Sound is a bit too low
Sounds fine to me!
e si che, con tutti quelli che vi hanno dato in campionato, avete avuto tempo per prepararvi..
this is not a PowerShell course it is a programming course, you joking??
move closer to mic please, hard to hear. good video otherwise, thank you!
"Now we have our erection"???? how could you sir 1:20:15
Error Action 😅, btw training is very good and easy to understand
After an hour and 20 minutes of training i guess it was time to relax a bit 😅
hello
annoying but useful