그들이 마법사가 되어 마법 같은 일이 일어나도록 몇 마디 말을 하고 싶지 않은 사람이 어디 있겠습니까? 글쎄(Well) , 우리는 마법사가 되는 방법을 보여줄 수는 없지만 약간의 컴퓨터 마술을 하는 방법은 보여줄 수 있습니다.
Windows (PowerShell)7 이 설치된 (Windows 7)Windows 컴퓨터가 있다면 PowerShell이 있습니다. 또한 Windows 7 이 설치된 컴퓨터가 있는 경우 보안을 위해 업데이트하십시오.
그러나 이 기사는 Windows(Windows) 사용자 만을 위한 것이 아닙니다 . 최신 버전의 PowerShell 은 무료이며 Mac 및 Linux 컴퓨터에 설치하여 사용할 수 있습니다.
PowerShell 에 대해 배운 내용은 이제 거의 모든 컴퓨터에서 사용할 수 있기 때문에 중요합니다. 누가 알아? 이 기술을 한 단계 더 발전시키고 정보 기술(Information Technology) 분야의 경력을 쌓을 수 있습니다.
파워쉘이란?
Microsoft 의 첨단 기술 답변 은 이것이 시스템 관리자를 위해 특별히 설계된 "명령줄 셸"이라는 것입니다. — 위협적으로 들리 네요. (” Sounds)하지만 그렇지 않습니다. 당신은 컴퓨터를 돌보고 있습니까? 예, 그렇다면 당신은 집의 시스템 관리자입니다.
클릭과 키 입력으로 무엇을 해야 하는지 컴퓨터에 지시합니까? 예, 따라서 명령줄 셸을 컴퓨터에 수행할 작업을 지시하기 위해 입력하는 또 다른 창이라고 생각하십시오. 당신은 이것을 할 수 있습니다.
PowerShell 은 프로그래밍 언어와 비슷하지만 대부분의 언어만큼은 아닙니다. 그것은 정말 일반 영어(English) 와 매우 흡사 합니다. 이것은 프로그래머가 아닌 사람들이 선택할 수 있도록 Microsoft 가 노력한 것입니다.(Microsoft)
스크립트라고 하는 몇 줄의 명령을 작성하여 Windows 운영 체제가 원하는 작업을 수행하도록 하는 방법입니다. 그런 다음 해당 줄을 파일에 저장하고 클릭 한 번으로 실행하거나 주기적으로 실행하도록 예약할 수 있습니다.
PowerShell로 무엇을 할 수 있습니까?
PowerShell 의 상위 레벨 포인트는 작업을 자동화할 수 있으므로 일상적인 일을 반복적으로 하느라 시간을 낭비할 필요가 없다는 것입니다. 전문 시스템 관리자(Systems Administrator) 의 경우 새 사용자를 만들고 암호를 생성하고 새 감독자에게 세부 정보가 포함된 전자 메일을 보내는 것과 같은 작업일 수 있습니다.
클릭과 타이핑을 통해 수동으로 수행하는 이 프로세스는 5분에서 최대 1시간 이상이 소요될 수 있습니다. 올바른 스크립트를 사용하면 시스템 관리자(Systems Administrator) 가 그 중 어떤 부분도 수행하지 않아도 됩니다.
하지만 집에서 PowerShell 로 무엇을 할 수 있는지 알고 싶습니다 . 반복해서 하는 것을 좋아하지 않는 거의 모든 것. 필요하지 않은 임시 및 로그 파일을 삭제하여 하드 드라이브의 공간을 확보하는 데 사용합니다.
자녀의 컴퓨터에 통행금지를 설정하십시오. 파일의 이름을 바꾸(Rename) 거나 정리합니다. 이것이 PowerShell(PowerShell) 의 아름다움입니다 . 컴퓨터에서 할 수 있는 거의 모든 작업을 (Almost)PowerShell 스크립트를 만들어 클릭 한 번으로 또는 일정에 따라 자동화하고 실행할 수 있습니다.
PowerShell을 어떻게 사용합니까?
PowerShell 을 사용하는 가장 쉬운 방법 은 PowerShell ISE(통합 스크립팅 환경)(PowerShell Integrated Scripting Environment (ISE)) 에서 작업하는 것 입니다. 시작(Start) 을 클릭 하고 Windows 10 의 검색 창에 powershell ise 를 입력 하여 찾을 수 있습니다 . 아래 그림과 같이 표시되어야 합니다.
처음 사용하는 경우 관리자(Administrator) 로 실행할 것 입니다. 이렇게 하려면 먼저 컴퓨터에 대한 관리자 권한이 있어야 합니다. 시작 메뉴(Start Menu) 에서 PowerShell ISE 를 마우스 오른쪽 버튼으로 클릭 한 다음 관리자 권한으로 실행(Run as Administrator) 을 클릭합니다 .
이 작업을 수행할 것인지 묻는 UAC ( 사용자 액세스 제어(User
Access Control) ) 경고 팝업 이 나타날 수 있습니다 . 예(Yes) 를 클릭 합니다.
이제 PowerShell IDE 를 보고 있습니다 . 창 (1)((1)) 의 상단 창은 스크립팅 창입니다. 여기에서 스크립트를 작성할 것입니다. 창 (2)((2)) 의 하단 창은 콘솔 영역입니다. 스크립트를 테스트할 때 이 창에 출력이 표시됩니다.
스크립트를 수정하고 개선하는 데 도움이 되는 오류 메시지 등이 표시되는 곳이기도 합니다. 창 (3)((3)) 의 오른쪽에 있는 창 은 명령 추가 기능입니다. 사용할 수 있는 모든 PowerShell(PowerShell) 명령 의 사전이라고 생각하십시오 .
PowerShell 은 이미 (PowerShell)Windows 의 일부가 아닌 스크립트를 실행하지 않도록 설정되어 있습니다. 자신의 스크립트를 실행할 수 있도록 변경해야 합니다.
스크립팅 창에서 다음을 복사하여 붙여넣습니다.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
그것 의 Set-ExecutionPolicy 부분을 cmdlet(commandlet으로 발음)이라고 합니다. cmdlet은 강력한 것입니다. 그것들을 Windows(Windows) 에 줄 수 있는 짧은 명령이라고 생각 하면 (Think)Windows 는 명령을 만족시키기 위해 더 복잡한 작업을 수행할 것입니다.
비유하자면 아이에게 방을 청소하라고 말하는 것입니다. 짧고(Short) 요점입니다. 당신의 아이가 방 청소에 능숙하다면, 그들은 가서 침대를 정리하고, 빨래를 바구니에 넣고, 장난감과 책을 선반에 놓고, 심지어 바닥을 진공 청소기로 청소할 것입니다. 그들은 cmdlet Clean-YourRoom 이 모든 것을 의미한다는 것을 이해합니다.
창 상단에 녹색 화살촉이 표시됩니다.
그것을 클릭(Click) 하여 명령을 실행하십시오.
-ExecutionPolicy 부분은 Set-ExecutionPolicy 에(-ExecutionPolicy) 설정할 정책을 알려줍니다. 매개변수입니다. "이 지침 내에서 작업하고 구체적으로 수행하기를 바랍니다. RemoteSigned 의 특정 정책을 사용하도록 지시합니다 .
RemoteSigned 정책에 따르면 신뢰할 수 있는 게시자가 서명하지 않은 경우 PowerShell 은 인터넷(Internet) 에서 다운로드한 스크립트를 실행하거나 실행할 수 없습니다 .
우회 방식으로, 원격 신뢰할 수 있는 게시자가 서명할 필요가 없기 때문에 로컬로 생성된 스크립트를 실행해도 괜찮다고 PowerShell 에 알립니다. (PowerShell)이제 PowerShell 스크립트는 컴퓨터에 작성하는 모든 스크립트를 실행할 수 있습니다.
임시 파일을 삭제하는 스크립트를 살펴보겠습니다. CCleaner 만큼 강력하거나 철저 하지는 않지만 CCleaner 에는 자체 문제 세트가 있습니다.
PowerShell(Use PowerShell) 을 사용하여 하드 드라이브(Your Hard Drive) 에 공간 만들기(Create Space)
이 스크립트를 한 줄씩 분해하여 작동 방식을 확인할 수 있습니다. 마지막에 스크립트가 완전히 표시되므로 원하는 경우 복사하여 붙여넣을 수 있습니다.
$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"
앞에 달러 기호가 있는 것은 변수 이름입니다. 귀중품을 넣어두는 지갑이라고 생각하시면 됩니다. 지갑(Wallet) 은 달러 기호를 떠올리게 하고 귀중품은 변하기 쉬운 소리를 내기 때문에 우리도 기억할 것입니다. $TempFileLocation 이라는 이름의 지갑 또는 변수를 생성 중 입니다. 등호는 PowerShell 에 해당 변수에 무엇을 넣을지 알려줍니다.
이 경우 Windows의 임시 파일 위치( C:\Users\username\AppData\Local\Temp\* )를 입력 합니다. 우리는 두 가지 이유로 이것을 하고 있습니다. 파일을 삭제하는 데 항상 안전한 위치이며 파일을 삭제하기 위해 이동해야 하는 위치를 PowerShell 에 알려주는 데 이 위치를 사용할 것 입니다.
해당 위치에 사용자 이름이 표시되면 사용자 이름으로 바꾸십시오. 컴퓨터에 로그인하는 데 사용하는 사용자 이름입니다. 끝에 있는 별표(*)는 와일드 카드입니다. Temp 폴더의 모든 항목 은 임시이며 삭제하려고 하기 때문에 Temp 폴더 에 있는 모든 항목을 나타냅니다 .
위치 주변의 큰따옴표도 중요합니다. 이는 PowerShell 에 문자열이 있음을 알려줍니다. 문자열을 문자와 문자의 문자열로 생각하십시오 . (Think)일반 숫자라면 따옴표를 사용하지 않습니다.
$TempFile = Get-ChildItem $TempFileLocation -Recurse
또 다른 변수를 만들고 있습니다. 이번에는 $TempFile 변수에 입력할 항목을 찾기 위해 명령을 사용할 것입니다.
Get-ChildItem
Get-ChildItem 과 같은 cmdlet에 대해 알 수 있는 또 다른 사항 은 완전히 읽을 수 있다는 것입니다. 첫 번째 단어가 어떻게 동사인지 봅니까? Cmdlet(Cmdlets) 은 모두 작업 단어로 시작하므로 수행 중인 작업을 즉시 알 수 있습니다. ChildItem 은 두 개의 명사입니다.
cmdlet의 두 번째 부분은 항상 PowerShell(PowerShell) 에서 작업을 적용할 항목 을 알려줍니다 . ChildItem은 상위 위치의 모든 하위를 의미합니다. 이것은 폴더에 있는 모든 파일을 가져오라는 말과 같습니다. 파일은 하위 항목이고 폴더는 상위 항목입니다.
하위 항목을 가져오는 cmdlet은 무엇입니까? $TempFileLocation 변수의 모든 것 . PowerShell 은 이전에 $ (PowerShell)TempFileLocation 에 넣은 위치로 이동하여 거기에 있는 모든 자식 항목을 가져옵니다. $TempFile 변수에 저장합니다 .
그렇다면 -Recurse 부분은 어떻게 될까요? 이는 Get-ChildItem(Get-ChildItem) 이 해당 위치의 모든 항목을 통과하도록 지시하는 것입니다. 상위 폴더 내에서 즉시 파일을 가져오지 마십시오. 해당 폴더에 폴더가 있으면 모든 하위 항목도 가져오고 하위 항목도 가져옵니다. 우리는 그들 모두를 얻을 것입니다.
$TempFileCount = ($TempFile).count
$TempFileCount 라는 세 번째 변수를 만들고 해당 변수에 숫자를 입력합니다. 번호가 어디야? 글쎄, ( $TempFile).count 는 우리에게 그 숫자를 얻을 것입니다. $ TempFile 에 방금 저장한 모든 파일의 수를 세는 부분이 .count 부분 이라는 것을 알고 있을 것 입니다.
우리는 왜 이것을 했는가? 대부분의 경우 스크립트의 나머지 부분으로 얼마나 많은 쓸모없는 파일을 정리하여 그것이 얼마나 효과적인지 알 수 있는 것이 좋기 때문입니다.
if($TempFileCount -eq 0)
이제 조건문을 설정합니다. '만약'이라고 묻는 것을 볼 수 있습니다. 만약에? 괄호 안의 내용이 참인지 거짓인지. 대괄호는 중요합니다. 그렇지 않으면 If는 무엇을 비교할지 모릅니다. $TempFileCount 에 저장한 숫자가 0인지 묻습니다 .
-eq 는 equals 의 줄임말입니다. 일종의 비교 연산자입니다. 아이들에게 "방이 깨끗하고 훌륭하다면 우리는 뭔가를 할 것입니다"라고 말하는 것과 같습니다. 이 명령문은 $ TempFileCount 에 저장된 숫자 가 0과 같으면 다음 것.
{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}
$TempFileCount 가 0 이면 일어날 일입니다 . 중괄호가 중요합니다. $ TempFileCount 가 0 인 경우에만 PowerShell 에 지시 합니다.
호스트 또는 화면에 "C:\Users\username\Appdata\Local\Temp\* 폴더에 파일이 없습니다."라고 씁니다. 끝에 있는 매개변수 - ForegroundColor 는 텍스트를 녹색으로 만들도록 PowerShell 에 지시 합니다. 이렇게 하면 일반적으로 빨간색인 오류 메시지와 쉽게 구별할 수 있습니다.
Else
당신은 다른 의미를 알고 있습니다. 이것은 "방이 더 깨끗하거나 그렇지 않으면" 자녀가 방을 청소했는지 확인하는 부분입니다. $TempFileCount 가 0이 아닌 경우 발생 합니다.
{$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}
$TempFile 에 저장된 현재 위치로 이동합니다 . 그 뒤의 수직선을 파이프라고 합니다. $ TempFile 의 내용을 세탁기로 파이프로 보내는 것처럼 PowerShell 에 cmdlet으로 유입시키 도록 지시하므로 실제 파이프와 같은 기능을 합니다. 그런 다음 cmdlet Remove-Item 이 지시한 대로 수행합니다. 해당 위치에 있는 모든 것을 제거합니다.
-WhatIf 매개변수는 이 단계에서 매우 중요합니다. 명령을 실행하도록 PowerShell(PowerShell) 에 지시 하지만 아무 것도 제거하지 말고 시도하기만 합니다. 우리가 정말로 이것을 했다면 어떤 일이 일어날지 보여주세요 .(Just)
이를 통해 컴퓨터에서 아무 것도 변경하지 않고 명령을 테스트할 수 있습니다. 스크립트가 원하는 작업만 수행하고 다른 작업은 수행하지 않는다는 확신이 들 때까지 -WhatIf를 그대로 두십시오. 그런 다음 그것을 삭제하면 스크립트가 작업을 수행합니다.
-Confirm:$false 매개변수 는 스크립트가 파일을 정말로 삭제할 것인지 묻지 않도록 합니다. -Recurse 가 하는 일을 알고 있습니다. -포스( -Force) 는 무슨 일이 있어도 삭제를 의미합니다. -WarningAction 이 (-WarningAction )SilentlyContinue 로 설정됩니다 .
이렇게 하면 스크립트에서 삭제 중인 항목에 대한 경고가 표시되지 않습니다. -ErrorAction 은 (-ErrorAction)SilentlyContinue 로 설정되어 프로세스에 어떤 종류의 오류가 있는 경우 계속 진행됩니다.
이제 마지막 줄에 있습니다.
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}
Write-Host 가 처음 한 것처럼 다음 문장을 출력하므로 무슨 일이 일어났는지 알 수 있습니다 . 방금 처리한 폴더에서 삭제된 파일 수를 알려주고 찾기 쉽도록 녹색으로 표시합니다.
스크립트를 전체적으로 살펴보겠습니다.
$TempFileLocation = "C:\Users\guymcd\Appdata\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count
if($TempFileCount -eq "0") {
Write-Host "There are no files in the folder $TempFileLocation" - ForegroundColor Green
}
Else {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green
}
이것을 복사하여 PowerShell ISE 에 붙여넣고 (PowerShell ISE)delete-TemporaryFiles.ps1 과 같이 저장할 수 있습니다 . 이제 이해했으므로 cmdlet의 명명 규칙을 고수할 수도 있습니다.
어떤 이유로 코드가 작동하지 않으면 우리가 만든 PowerShell 스크립트를 다운로드하여 실행할 수도 있습니다. 스크립트 파일을 보려면 먼저 압축을 풉니다 .(Just)
이 스크립트를 실행하려면 스크립트를 마우스 오른쪽 버튼으로 클릭하고 PowerShell로 실행을(Run with PowerShell) 선택하기만 하면 됩니다. 스크립트가 작업을 수행 하는 동안 PowerShell 콘솔이 1~2초 동안 표시되고 오류가 없으면 사라집니다.
PowerShell에 대한 자세한 내용은 어디에서 확인할 수 있습니까?
많은 것 같습니다! 첫 번째 PowerShell 스크립트의 경우 꽤 많습니다. 여기까지 왔다면 스스로에게 박수를 보낸다. 오늘 많은 것을 배웠지만 이제 더 많이 배우고 싶습니다. 대단해!
PowerShell 에 대해 자세히 알아볼 수 있는 리소스가 인터넷(Internet) 에 많이 있습니다. 시작하기에 좋은 곳은 " 명령줄 또는 PowerShell을 통해 시작 프로그램 목록 생성"이라는(Generate a List of Startup Programs via Command Line or PowerShell) 기사 입니다. 그런 다음 다른 리소스를 확인하세요.
Using PowerShell for Home Users – A Beginner’s Guide
Who doeѕn’t wish they could be a wizard and utter a few words to have magical things happen? Well, wе’re not able to show you how to be a wizard, but we can show you how to do a little computer magic.
If you’ve got a Windows computer with Windows 7 on it, you’ve got PowerShell. Also, if you have a computer with Windows 7 on it, please update it for security’s sake.
But this article isn’t just for Windows people. The latest version of PowerShell is free and can be installed and used on Mac’s and Linux computers.
That’s important because what you learn about PowerShell can be used on almost any computer now. Who knows? You might take this skill to the next level and venture into a career in Information Technology.
What is PowerShell?
The high-tech answer from Microsoft is that it is a, “…command-line shell designed especially for system administrators.” Sounds intimidating. But it’s not. Do you take care of your computer? Yes, then you’re the system administrator in your house.
Do you tell your computer what to do with clicks and keystrokes? Yes, so think of the command-line shell as just another window that you type things in to tell your computer what to do. You can do this.
PowerShell is like a programming language, but not as cryptic as most. It really reads a lot like regular English, which was something Microsoft strove for so that it could be picked up by non-programmers.
It’s a way of writing a few lines of commands, called a script, to make the Windows operating system do something that you want it to do. Then, you can save those lines in a file and run it with a click or schedule it to run periodically.
What Can You Do with PowerShell?
The high-level point of PowerShell is to be able to automate tasks, so you don’t have to waste your time doing mundane things repeatedly. For a professional Systems Administrator, that could be something like creating new users, generating passwords for them, and send an e-mail with the details to their new supervisor.
Manually done, with clicks and typing, that process can take 5 minutes to as much as an hour or more. With the right scripts, the Systems Administrator may not even have to do any part of that.
But you want to know what you can do with PowerShell at home. Pretty much anything that you don’t like doing again and again. Use it to free up space on your hard drive by deleting temporary and log files you don’t need.
Put a curfew on your kid’s computer. Rename or organize a bunch of files. That’s the beauty of PowerShell. Almost anything you can do on your computer, you can create a PowerShell script to automate and run with a click or on a schedule.
How Do I Use PowerShell?
The easiest way to work with PowerShell is in the PowerShell Integrated Scripting Environment (ISE). You can find it by clicking on Start and typing powershell ise into the search bar in Windows 10. You should see it as shown below.
For the first time that we use it, we’re going to run it as the Administrator. To do this, you must first have administrator rights on your computer. In your Start Menu, right-click on PowerShell ISE, then click on Run as Administrator.
You may get a User
Access Control (UAC) warning pop-up asking if you’re sure you want to do
this. Click Yes.
Now you’re looking at the PowerShell IDE. The top pane of the window (1) is the scripting pane. This is where you will write your script. The bottom pane of the window (2) is the console area. When you test your script, you’ll see the output in this pane.
This is also where you’ll see error messages and such that will help you fix and make your scripts better. The pane on the right-side of the window (3) is the command add-on. Think of it as a dictionary of all the PowerShell commands available to you.
PowerShell comes set to not run any script other than those
already a part of Windows. You’ll need to change it so that you can run your
own scripts.
In the scripting window, copy and paste the following:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
The Set-ExecutionPolicy part of it is called a cmdlet (pronounced commandlet). Cmdlets are powerful things. Think of them as short commands that you can give Windows, and Windows will go do a bunch of more complicated stuff to satisfy your command.
An analogy would be telling your kid to clean their room. Short and to the point. If your kid is well-versed in room cleaning, then they will go and make their bed, put their laundry in the basket, shelve their toys and books, and maybe even vacuum the floor. They understand that the cmdlet Clean-YourRoom meant all that.
At the top of the window, you’ll see a green arrowhead.
Click on that to run the command.
The -ExecutionPolicy part is telling Set-ExecutionPolicy what policy to set. It’s a parameter. It’s saying, “I want you to work within these guidelines and do specifically this. It tells it to use the specific policy of RemoteSigned.
The RemoteSigned policy states that PowerShell may not execute, or run, any script that was downloaded from the Internet unless it was signed by a trusted publisher.
In a roundabout way, it tells PowerShell that it’s fine to run any script created locally, because those don’t need to be signed by a remote trusted publisher. Now, your PowerShell script will be able to run any script you write on your computer.
Let’s look at a script to delete temporary files. It isn’t
as powerful or thorough as CCleaner, but CCleaner comes with its own set of
problems.
Use PowerShell to Create Space on Your Hard Drive
We’ll break down this script, line by line, so you can see
how it works. At the end, the script will be shown completely so you can copy
and paste it if you’d like.
$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"
Anything with a dollar sign in front of it is a variable name. Think of it like a wallet to put valuable stuff in. Wallet reminds us of the dollar sign, valuables sounds like variable, so we’ll remember that too. We’re creating a wallet, or variable, named $TempFileLocation. The equal sign tells PowerShell what to put in that variable.
In this case, we’re putting in the location of a Windows’ temporary files location – C:\Users\username\AppData\Local\Temp\*. We’re doing this for two reasons; it’s a location that is always safe to delete files from, and we’re going to use it to tell PowerShell where it must go to delete files.
Where it says username in that
location, swap it for your user name. That’s the user name that you use to log
in to your computer. The asterisk (*) at the end of
it is a wild card. What it represents is everything in the folder Temp, because everything in the Temp folder is temporary
and we want to delete it.
The double-quotes around the location is important too. That
tells PowerShell that what’s in there is a string. Think of string as a string
of letters and characters. If it were ordinary numbers, we wouldn’t use the
quotes.
$TempFile = Get-ChildItem $TempFileLocation -Recurse
We’re making another variable. This time we’re going to use a command to come up with something to put in the $TempFile variable.
Get-ChildItem
Another thing you’ll notice about cmdlets like Get-ChildItem is that it is totally readable. See how the first word is a verb? Cmdlets all begin with action words, so you immediately know what it’s doing. ChildItem is two nouns.
The second part of the cmdlet is always going to tell us to what PowerShell will apply the action. ChildItem means all the children of a parent location. This is like saying get all the files that are in a folder, with files being the children and the folder being the parent.
What is the cmdlet getting the child items of? Everything in the variable $TempFileLocation. PowerShell is going to go to the location that we put in $TempFileLocation earlier and get all the child items that are there. Then, it will put them into the variable $TempFile.
So, what’s with the -Recurse part? That’s telling Get-ChildItem to go through everything in that location. Don’t just go get the files immediately inside the parent folder. If there are folders in that folder, get all their children too, and their children and so on. We’re going to get them all.
$TempFileCount = ($TempFile).count
Yes, we’re creating a third variable called $TempFileCount, and we’re going to put a number in that variable. Where’s the number? Well, ($TempFile).count is going to get us that number. You’ve probably figured out that the .count part is going to do the counting of all the files that we just stored in $TempFile.
Why did we do this? Mostly because it’s nice to know how many useless files we’re cleaning out with the rest of the script so we can tell how effective it was.
if($TempFileCount -eq 0)
Now we’re setting up a conditional statement. You can see that it’s asking ‘if’. If what? If the thing in the brackets is true or false. The brackets are important, otherwise the If doesn’t know what to compare. Here, it’s asking if the number we stored in $TempFileCount is equal to zero.
The -eq is the shorthand for equals. It’s a type of comparison operator. It’s like telling your kids, “If your room is clean, great, we’re going to do something…” This statement is saying if the number that was stored in $TempFileCount is -equal to zero do the next thing.
{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}
That’s the thing that will happen if $TempFileCount is zero. The curly brackets are important. They tell PowerShell to do only what is inside them if $TempFileCount equals zero.
It will write to the host, or the screen, “There are no files in the folder C:\Users\username\Appdata\Local\Temp\*”. The parameter at the end, –ForegroundColor tells PowerShell to make the text green. That just makes it easier to distinguish from an error message which is normally red.
Else
You know what else means. This is the, “Your room better be clean or else…” part of checking if your kid cleaned their room. It’s what will happen if $TempFileCount is not zero.
{$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}
This says go to the current location stored in $TempFile. The vertical line after it is called a pipe. It does function kind of like a real-life pipe as it tells PowerShell to funnel the contents of $TempFile into the cmdlet, as though it was water being piped into a washing machine. Then the cmdlet Remove-Item does what it says; it removes whatever is at that location.
The -WhatIf parameter is very important at this stage. It tells PowerShell to run the command, but only try it out, don’t remove anything. Just show us what would happen if we really did this.
This allows you to test commands without changing anything on your computer. Leave the -WhatIf in there until you’re comfortable that the script is going to do what you want it to do and nothing else. Then just delete that out and the script will do its job.
The parameter -Confirm:$false stops the script from asking if you really want to delete the file. You know what -Recurse does. -Force means delete that thing no matter what. -WarningAction is set to SilentlyContinue.
This prevents the script from giving you warnings about what you’re deleting. -ErrorAction is set to SilentlyContinue so that if there’s any sort of error in the process, it just keeps chugging along.
Now we’re at the last line.
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}
Just like Write-Host did the first time, it’s going to output the following sentence, so we know what has happened. It will tell us how many files were deleted from the folder it just processed and do it in green to make it easy to spot.
Let’s look at the script altogether:
$TempFileLocation = "C:\Users\guymcd\Appdata\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count
if($TempFileCount -eq "0") {
Write-Host "There are no files in the folder $TempFileLocation" - ForegroundColor Green
}
Else {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green
}
You can copy and paste this into your PowerShell ISE and save it as something like delete-TemporaryFiles.ps1. You may as well stick with the naming convention of cmdlets now that you understand them.
If the code is not working for you for some reason, you can also download the PowerShell script we created and just run it. Just unzip it first to view the script file.
Whenever you want to run this script, just right-click on it and choose Run with PowerShell. A PowerShell console will pop up for a second or two, while your script does its thing, and then will disappear if there are no errors.
Where Can I Learn More PowerShell?
That seems like a lot! For your first PowerShell script it is a fair bit. If you’ve made it this far, applaud yourself. You’ve learned a lot today, but now you want to learn more. That’s great!
There are a lot of resources on the Internet for learning more about PowerShell. A good place to start is our article, “Generate a List of Startup Programs via Command Line or PowerShell”. Then check out these other resources: