Microsoft akan mewajibkan Outlook baharu untuk dipasang pada Windows 10
Microsoft kini menghadapi kesukaran menukar pengguna kepada produk dan perkhidmatan baharu.
Bagaimana jika PC anda boleh mengendalikan tugas yang membosankan untuk anda? Dengan Windows PowerShell, ini boleh dilakukan. Begini cara menggunakan PowerShell untuk mengautomasikan tugasan harian yang berulang-ulang yang tiada siapa mahu lakukan berulang kali.
Jadual Kandungan
Microsoft PowerShell ialah utiliti baris perintah dan bahasa skrip yang merupakan alat berkuasa untuk pentadbir, membolehkan anda mengautomasikan pelbagai tugas untuk komputer dan rangkaian. PowerShell mengandungi komponen Command Prompt dan dibina pada rangka kerja .NET. Jika anda membaca tentang WebTech360, maka anda perlu tahu bahawa PowerShell ialah alat pilihan untuk pentadbir IT mengurus rangkaian yang besar.
Mempelajari cara menggunakan PowerShell akan memudahkan banyak tugas harian yang membosankan. Anda juga boleh membuat perubahan seluruh sistem melalui rangkaian tanpa perlu melaraskan setiap pelayan secara individu. PowerShell menjadi bahagian penting dalam menjalankan persekitaran awan hibrid .
PowerShell mempunyai banyak kegunaan berbeza untuk membantu anda bekerja dengan lebih cekap dan memastikan rangkaian anda berjalan dengan cekap. Kegunaan paling asas termasuk: menjadualkan kemas kini harian pada sistem, menjana laporan untuk proses semasa, perkhidmatan berkala dan banyak lagi. Memang benar bahawa banyak tugas ini boleh dilakukan melalui GUI, tetapi tujuan PowerShell adalah untuk melakukannya dengan lebih cepat.
Jika anda mempunyai tugas penyelenggaraan biasa yang mengambil masa beberapa minit untuk disediakan, anda boleh menskrip kefungsian yang sama ke dalam satu perintah, bernama PowerShell. Jadi lain kali anda hanya membuka skrip itu dan ia akan berjalan di latar belakang. Menguasai logik skrip PowerShell, memahami cara objek, var (pembolehubah) berfungsi dan melaksanakannya secara bijak pada rangkaian anda akan membuatkan anda tertanya-tanya mengapa anda tidak menggunakan PowerShell lebih awal.
Tutorial ini akan merangkumi asas PowerShell, yang akan membantu mereka yang baru dalam IT, terutamanya jika anda biasa dengan Windows Command Prompt. Artikel ini akan memperkenalkan cara menggunakan alat dan arahan asas, cara memanipulasi fail dan folder, memahami objek, menggunakan pembolehubah dan mengurus pelayan jauh.
Selepas Windows NT dikeluarkan, CMD.EXE menjadi utiliti baris arahan untuk Windows. Walaupun CMD.EXE mewarisi beberapa komponen daripada pendahulunya DOS (COMMAN.COM), ia masih berdasarkan bahasa skrip yang agak "primitif": menggunakan fail Windows Command (.CMD dan .BAT). Penambahan Windows Scripting Host dan bahasa VBScript dan JScript telah meningkatkan keupayaan skrip utiliti tersebut.
Teknologi-teknologi ini ialah gabungan seimbang utiliti baris arahan dan persekitaran penskripan. Sebenarnya isu berapa banyak fail CMD.EXE, .CMD dan Windows Scripting Host boleh dimanipulasi bukanlah kebimbangan sebenar. Perkara yang paling orang ramai mengadu dan bimbang ialah menyelesaikan beberapa tugas yang kelihatan mudah.
Menggunakan "rangka" baris arahan dan alatan skrip, mana-mana skrip yang sederhana komprehensif memerlukan gabungan perintah kelompok, Windows Scripting Host dan boleh laku kendiri. Setiap skrip menggunakan konvensyen yang berbeza untuk melaksanakan dan meminta, menghurai dan mengembalikan data.
Sokongan pembolehubah yang lemah dalam CMD.EXE, antara muka yang tidak konsisten dan akses terhad kepada tetapan Windows, digabungkan dengan kelemahan lain, menjadikan skrip baris arahan lebih sukar untuk dilaksanakan dan digunakan. Anda mungkin tertanya-tanya apakah 'kelemahan lain' di sini? Sila ambil perhatian bahawa ia adalah teks biasa. Dalam teknologi ini, semuanya dalam bentuk teks. Output arahan atau skrip ialah teks dan mesti dihuraikan dan diformat semula untuk bertindak sebagai input untuk arahan seterusnya. Ini adalah titik permulaan asas yang PowerShell ambil daripada semua cengkerang tradisional.
Tiga konsep yang diperkenalkan dalam bahagian ini hanyalah asas untuk memahami konsep utama yang membentuk asas PowerShell. Anda perlu meluangkan lebih banyak masa untuk mempelajari dan menguasai konsep yang lebih maju apabila menghampiri arahan PowerShell.
PowerShell dipasang secara lalai dalam Windows 10, Windows 7, Windows Server 2008 R2 dan versi Windows yang lebih baharu. Versi baharu PowerShell menambah ciri baharu dan "cmdlet" (istilah Microsoft untuk arahan PowerShell - disebut "command-lets") dan dipasang dengan versi Windows Management Framework (WMF) yang sepadan.
Pada masa ini WMF 5.1 ialah versi yang disyorkan terkini. Dalam sesetengah kes, beberapa ciri baharu bergantung pada sistem pengendalian sebagai tambahan kepada versi WMF. Sebagai contoh, Windows 8 dan Windows Server 2012 menyokong cmdlet Test-NetConnection, yang membolehkan anda menguji kesambungan ke port TCP/IP tertentu , tetapi cmdlet ini tidak tersedia dalam Windows 7 walaupun semasa menjalankan versi WMF terkini.
Pada kebanyakan sistem Windows, pengguna akan mempunyai dua persekitaran PowerShell yang tersedia untuk mereka, konsol PowerShell dan PowerShell ISE (Persekitaran Skrip Bersepadu). Konsol PowerShell kelihatan seperti baris arahan tradisional, tetapi dengan fungsi penuh PowerShell di belakangnya. Nama pembolehubah, gelung, autolengkap perintah dan paip tersedia daripada konsol PowerShell.
Untuk kegunaan yang lebih maju (seperti skrip binaan), PowerShell ISE menyediakan autolengkap perintah, penyerlahan kod dan keupayaan pelengkapan kod Intellisense Microsoft untuk membantu anda mencipta dan menguji kod PowerShell. PowerShell ISE juga membolehkan anda bekerja dengan berbilang skrip PowerShell secara serentak menggunakan navigasi tab.
Asas perintah PowerShell ialah cmdlet. Microsoft mengambil beberapa strategi reka bentuk semasa mencipta cmdlet dalam PowerShell.
Yang pertama ialah keupayaan untuk membuat kesimpulan nama cmdlet dengan mudah, atau sekurang-kurangnya menjadikannya lebih mudah ditemui. Perintah atau cmdlet PowerShell juga direka bentuk agar lebih mudah digunakan, dengan sintaks piawai, menjadikannya lebih mudah untuk mencipta skrip daripada antara muka baris arahan.
Cmdlet menggunakan format Kata Kerja-Kata Nama seperti dalam Get-Service, Stop-Service, atau Import-Csv. Bahagian kata kerja nama cmdlet menunjukkan tindakan yang dilakukan pada kata nama. Biasanya, cmdlet yang digunakan untuk mendapatkan maklumat akan mempunyai kata kerja Get dalam nama mereka, seperti Get-Process atau Get-Content . Perintah yang digunakan untuk mengedit sesuatu biasanya bermula dengan kata kerja Set , untuk menambah entiti baru di suatu tempat biasanya bermula dengan Tambah atau Baru .
Kedua, parameter yang biasa digunakan dalam PowerShell juga diberi nama piawai. Sebagai contoh, parameter -ComputerName membenarkan cmdlet dilaksanakan pada satu atau lebih komputer jauh. -Tauliah digunakan untuk menyediakan objek pengesahan, yang mengandungi kelayakan pengguna, untuk menjalankan arahan sebagai pengguna tertentu.
Anda boleh menggunakan alias untuk kedua-dua cmdlet dan parameter untuk menyimpan ketukan kekunci, memendekkan panjang keseluruhan arahan (sangat berguna apabila anda merantai berbilang arahan bersama-sama). Walaupun alias ini tidak selalu menggunakan konvensyen penamaan standard, ia masih mencerminkan utiliti baris perintah tradisional.
Dalam PowerShell, alias seperti DIR, CD, DEL dan CLS masing-masing sepadan dengan Get-ChildItem, Set-Location, Remove-Item dan Clear-Host cmdlet. Alias parameter boleh berfungsi dalam dua cara: mereka boleh menggunakan alias yang dipratentukan yang disediakan oleh cmdlet, atau mereka boleh dialiaskan dengan memasukkan aksara yang mencukupi untuk mencipta padanan unik antara parameter yang disokong cmdlet.
Kebanyakan pentadbir sistem perlu memanipulasi fail dan folder semasa menjalankan kerja mereka, sama ada ia mengalihkan folder ke lokasi lain pada pelayan, mengarkibkan fail log atau mencari fail besar. Sekiranya operasi yang sama diulang pada banyak fail, menggunakan PowerShell untuk mengautomasikannya akan menjadi penyelesaian penjimatan masa yang berkesan.
Untuk mencari fail dan direktori, salah satu alat baris arahan pertama yang akan dipelajari oleh pentadbir pada zaman pengkomputeran dahulu ialah arahan dir. Dir akan menyenaraikan fail dan direktori yang terkandung dalam direktori yang ditentukan.
PowerShell mempunyai arahan serupa dalam bentuk Get-ChildItem Cmdlet . Get-ChildItem membolehkan anda membina senarai fail dalam direktori dengan cepat dengan cara yang anda boleh memanipulasi fail melalui arahan paip atau menetapkan output kepada pembolehubah.
Get-ChildItem boleh digunakan hanya dengan menyediakan laluan, sama ada melalui saluran paip, menggunakan parameter -Path atau betul-betul selepas nama cmdlet. Untuk melaraskan respons yang dikembalikan oleh Get-ChildItem, adalah perlu untuk mempertimbangkan beberapa parameter yang disediakan oleh cmdlet.
Parameter -Filter ialah satu cara anda boleh mencari fail. Secara lalai, Get-ChildItem hanya mengembalikan anak langsung direktori sasaran. Fungsi ini boleh dilanjutkan menggunakan pilihan -Recurse tambahan , yang secara rekursif mencari direktori yang terkandung dalam direktori semasa.
Dalam PowerShell 4.0 Get-ChildItem menambahkan keupayaan untuk mengehadkan hasil kepada fail atau direktori menggunakan suis –Fail atau –Direktori . Versi sebelumnya PowerShell terpaksa menyerahkan hasilnya kepada Where-Object, menapis pada sifat PSIsContainer untuk membuat penentuan ini. Contoh kedua-dua teknik yang digunakan untuk mengembalikan folder yang terkandung dalam C:Users ditunjukkan di sini:
Get-ChildItem C:Users -Directory Get-ChildItem C:Users | Where-Object {$_.PSIsContainer –eq $true}
Untuk mengesan fail tersembunyi atau sistem, -Force mesti digunakan . Get-ChildItem dalam PowerShell 4.0 dan yang lebih baru juga boleh digunakan untuk mengembalikan fail tersembunyi, baca sahaja atau sistem masing-masing menggunakan -Hidden, -ReadOnly , dan –System . Fungsi yang sama boleh dicapai dalam versi sebelumnya dengan menapis sifat Mod menggunakan Where-Object:
Get-ChildItem C:Users | Where-Object {$_.Mode -like '*R*'}
Semak sama ada fail wujud
Biasanya apabila bekerja dengan fail, kita hanya perlu tahu sama ada fail itu wujud atau sama ada laluan direktori itu sah. PowerShell menyediakan cmdlet untuk melakukan ini dalam bentuk Test-Path, yang mengembalikan nilai benar atau salah.
Laluan Ujian digunakan sebagai langkah berjaga-jaga sebelum cuba menyalin atau memadam fail tertentu.
Salin, alih dan padam fail
Copy-Item: Menyalin satu atau lebih fail atau direktori dari lokasi, yang ditentukan oleh parameter -Path, ke lokasi yang ditentukan oleh pilihan -Destination.
Move-Item: Alihkan fail atau folder.
Apabila struktur direktori sedang disalin atau dialihkan, -Recurse harus digunakan untuk membolehkan cmdlet melakukan tindakan pada direktori dan kandungannya. Dalam sesetengah kes, -Force diperlukan , seperti apabila fail baca sahaja ditimpa oleh operasi salinan.
Buang-Item: Padam fail, folder.
Suis -Force harus digunakan apabila menemui fail baca sahaja dan -Recurse harus digunakan apabila memadam direktori dan kandungannya.
Menggunakan PowerShell -WhatIf dan -Confirm
Sebelum melakukan apa-apa pemadaman besar-besaran yang serius, gunakan -WhatIf . -WhatIf membolehkan anda melihat perkara yang akan berlaku jika skrip atau arahan dijalankan, adakah ia mempunyai potensi kesan negatif untuk memadamkan data perniagaan yang penting. Perlu juga diperhatikan bahawa -WhatIf tidak terhad kepada operasi fail, ia digunakan secara meluas dalam PowerShell.
Untuk skrip yang anda ingin jalankan secara manual atau lebih teruk, mempunyai perintah bergantung yang dijalankan secara manual, pertimbangkan untuk menggunakan -Confirm . Ini membolehkan anda meminta interaksi pengguna sebelum tindakan itu benar-benar berlaku.
Skrip PowerShell = Fail Kelompok pada Steroid
PowerShell sendiri ditulis dalam bahasa .NET dan sangat berasaskan Rangka Kerja .NET. Itulah sebabnya PowerShell direka sebagai utiliti berorientasikan objek dan bahasa skrip. Segala-galanya dalam PowerShell dianggap sebagai objek Rangka Kerja .NET yang berfungsi sepenuhnya. Perintah yang memberikan satu set objek yang boleh digunakan menggunakan sifat dan kaedah jenis objek tersebut. Apabila anda ingin menyalurkan output satu perintah kepada yang lain, PowerShell sebenarnya menghantar objek, bukan hanya output teks baris arahan pertama. Ini memberikan arahan seterusnya akses penuh kepada semua sifat dan kaedah objek dalam saluran paip.
Memperlakukan segala-galanya sebagai objek dan keupayaan untuk menerima objek antara arahan adalah perubahan teori yang besar untuk utiliti baris arahan. Walaupun begitu, PowerShell masih berfungsi seperti utiliti shell tradisional. Perintah, skrip dan boleh laku boleh ditaip dan dijalankan dari baris arahan dan hasilnya dipaparkan dalam format teks. Fail Windows .CMD dan .BAT, VBScripts, JScripts dan executable yang dijalankan di dalam CMD.EXE semuanya masih berjalan dalam PowerShell. Walau bagaimanapun, kerana mereka tidak berorientasikan objek, mereka tidak mempunyai akses penuh kepada objek yang dicipta dan digunakan dalam PowerShell. Skrip dan pelaksanaan warisan ini masih akan menganggap semuanya sebagai teks, tetapi anda boleh menggabungkan PowerShell dengan beberapa teknologi lain. Ini adalah perkara yang sangat penting jika anda ingin mula menggunakan PowerShell dengan koleksi skrip sedia ada yang tidak boleh ditukar sekaligus.
Cmdlet boleh menerima parameter untuk mengubah tingkah laku mereka. Apabila menjalankan Cmdlet atau fungsi, anda boleh memberikan nilai parameter untuk menentukan apa, bila, di mana, dan cara setiap arahan PowerShell dijalankan.
Sebagai contoh, Get-Process akan mendapatkan semula dan menyenaraikan semua proses yang sedang berjalan dalam sistem pengendalian anda:
Tetapi bagaimana jika anda hanya ingin mendapatkan kemajuan tertentu? Anda boleh melakukannya menggunakan parameter. Sebagai contoh, untuk mendapatkan semua proses Slack, anda boleh menggunakan parameter Nama dengan Get-Process Cmdlet:
Get-Process -Name Slack
Kemudian anda hanya akan melihat proses bernama "slack":
Petua : Sesetengah parameter adalah "kedudukan" bermakna nama mereka adalah pilihan. Dalam kes ini, Get-Process -Name Slack dan Get-Process Slack kedua-duanya melakukan tugas yang sama.
Setiap Cmdlet akan menerima jenis parameter yang berbeza. Gunakan arahan Dapatkan-Bantuan untuk melihat parameter yang diterima Cmdlet dalam bahagian SYNTAX.
Get-Help Get-Process
Anda akan melihat senarai semua cara yang mungkin anda boleh menjalankan Cmdlet yang diberikan:
Dalam kes ini, Get-Process Cmdlet menerima parameter seperti Name, Id, ComputerName, Module, FileVersionInfo dan parameter biasa yang lain. Simbol di sini bermaksud:
Simbol |
Nama |
Maknanya |
---|---|---|
Drum |
Parameter tidak menerima input |
|
- |
Tanda sempang |
Nyatakan nama parameter |
<> |
kurungan kerinting |
Pemegang tempat untuk teks |
[] |
Tanda kurung |
Parameter boleh menerima satu atau lebih nilai. |
{} |
kurungan kerinting |
Parameter menerima set nilai. |
Parameter menerima set nilai yang akan menunjukkan jenis data yang mereka perlukan, seperti rentetan, integer, boolean atau DateTime. Sebagai contoh, arahan berikut:
Get-Process [[-Name] ]
... bermakna bahawa parameter Nama menerima satu atau lebih nilai rentetan, manakala arahan ini:
Get-Process -Id
... bermakna parameter Id menerima satu atau lebih nilai integer.
Contoh Get-Process sebelumnya menggunakan parameter Name untuk mengecilkan hasil. Walau bagaimanapun, jika anda ingin mengecilkannya kepada proses yang lebih khusus, anda boleh menggunakan parameter ID , yang memerlukan integer seperti yang dinyatakan dalam sintaksnya.
Get-Process -Id 3016
Kemudian anda akan melihat hanya satu proses dalam senarai:
PowerShell memperlakukan semua data sebagai objek. Untuk membina skrip, objek ini dijalankan melalui satu siri Cmdlet atau fungsi yang disambungkan oleh simbol paip (|). Memilih Cmdlet yang betul dan menyambungkannya dalam urutan logik menggunakan saluran paip adalah penting untuk skrip yang cekap.
Katakan anda sedang mencipta skrip untuk mengisih dan memaparkan 5 fail teratas yang menggunakan paling banyak ruang dalam folder. Terdapat cara yang lebih berkuasa untuk mencipta skrip pengisihan fail, tetapi yang mudah berikut mudah difahami:
Untuk melakukan ini dalam PowerShell, gunakan saluran paip yang kelihatan seperti ini:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Memandangkan kami mempunyai saluran paip yang berfungsi, anda boleh menyimpannya sebagai fail skrip PS1 supaya anda tidak perlu mengimportnya setiap kali anda menggunakannya.
Cara paling mudah untuk mencipta fail PS1 ialah menampal skrip anda ke Notepad dan menyimpan fail tersebut dengan sambungan .ps1.
Sebaik sahaja anda telah mencipta fail PS1, anda boleh menggunakannya dalam PowerShell dengan menjalankan ./ScriptName.ps1 :
Petua : Jika anda mendapat ralat kebenaran, penyelesaian terpantas ialah menjalankan PowerShell dengan hak pentadbir semasa menjalankan skrip anda.
tahniah! Anda kini boleh mencipta skrip PowerShell PS1.
Membaca dan memahami keajaiban teknologi baharu adalah satu perkara, tetapi sebenarnya menggunakannya adalah perkara lain! Dalam artikel yang lain, kami akan membangunkan skrip PowerShell untuk menunjukkan keupayaan dan penggunaannya.
DIR ialah salah satu arahan yang paling biasa dalam CMD.EXE . Perintah ini menunjukkan semua fail dan subdirektori yang terkandung dalam direktori induk (seperti ditunjukkan dalam Rajah 1). Bersama-sama dengan nama setiap objek, maklumat yang diberikan juga termasuk tarikh dan masa kemas kini terakhir dan saiz setiap fail. DIR juga memaparkan saiz gabungan semua fail dalam direktori, serta jumlah bilangan fail dan jumlah subdirektori.
Rajah 1
Menjalankan DIR dalam PowerShell juga menghasilkan penyenaraian direktori seperti Rajah 2, tetapi ia sedikit berbeza. PowerShell tidak mempunyai arahan DIR, sebaliknya mempunyai Get-ChildItem, yang menjalankan fungsi yang sama. Dalam PowerShell, DIR ialah alias untuk Get-ChildItem. Saya tidak berniat untuk menggunakan alias dalam siaran ini. Anda boleh menganggap DIR dalam PowerShell sebagai singkatan untuk Get-ChildItem.
DIR dalam PowerShell menyediakan banyak maklumat yang sama seperti yang dinyatakan di atas: senarai fail dan folder, tarikh dan masa terakhir dikemas kini dan saiz setiap fail. Walau bagaimanapun, ia tidak mempunyai maklumat ringkasan yang DIR dalam CMD.EXE sediakan: jumlah saiz semua fail dalam direktori, jumlah bilangan fail dan jumlah bilangan subdirektori.
Rajah 2
Untuk contoh senario, anda perlu mencipta skrip PowerShell yang menyerupai arahan CMD.EXE DIR. Di bawah saya akan menerangkan bahagian yang paling penting dalam skrip.
DIR.PS1: Tajuk
Skrip PowerShell terdiri daripada arahan PowerShell dalam fail teks biasa dengan sambungan .PS1. Daripada DIR, anda akan menggunakan fail teks yang dipanggil DIR.PS1.
Untuk menjalankan skrip, taip perintah berikut dalam skrin PowerShell:
.DIR.PS1 X:Folder
Di mana X ialah huruf partition pemacu (seperti C, D, E) dan Folder ialah nama folder.
Jika anda ingin mengetahui beberapa maklumat tentang partition pemacu, anda perlu menggunakan Instrumen Pengurusan Windows (WMI). Butiran WMI berada di luar skop artikel ini jadi kami tidak akan membincangkannya di sini. Tetapi kod PowerShell di bawah juga cukup mudah untuk difahami tanpa memerlukan bantuan WMI. Anda boleh mencipta pembolehubah "$filter" untuk digunakan dengan arahan Get-WmiObject. Pembolehubah penapis ini memberitahu arahan Get-WmiObject bahawa anda hanya mahukan maklumat tentang pemacu tertentu. Hasil daripada arahan Get-WmiObject disimpan dalam pembolehubah yang dipanggil $volInfo. Ingat, dalam PowerShell semuanya adalah objek; $volInfo kini juga merupakan objek hasil yang dikembalikan daripada Get-WmiObject.
$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter
Anda kini boleh mengakses semua objek dan kaedah yang dikaitkan dengan objek tersebut. Nombor siri volum boleh diakses melalui sifat VolumeSerialNumber. Maklumat yang dikembalikan ialah rentetan 8 aksara. Tetapi biasanya anda ingin memformatnya sebagai empat nombor berasingan, dipisahkan dengan tanda sempang. boleh dilakukan sama seperti dalam baris di bawah. Tanda sempang pada penghujung baris pertama ialah aksara sambungan baris dalam PowerShell. Ia pada asasnya hanya memberitahu PowerShell bahawa baris itu tidak terputus tetapi termasuk baris seterusnya. Apabila menulis kod tidak perlu memisahkan baris, tetapi untuk mengurangkan lebar dan menjadikan kod lebih mudah dibaca, anda harus melakukan ini.
$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `
$volInfo.VolumeSerialNumber.SubString(4, 4)
Sekarang anda mempunyai objek $volInfo, anda boleh menulis maklumat pengepala DIR pada skrin. Jika pemacu tidak mempunyai nama, teks yang ditulis pada skrin akan berbeza sedikit berbanding jika pemacu mempunyai nama. Penyataan If-Else mudah digunakan untuk menyemak sama ada sifat VolumeName ialah rentetan kosong atau tidak. Perintah Write-Host digunakan untuk menulis baris arahan individu ke skrin.
If ($volInfo.VolumeName -eq "") { Write-Host (" Volume in drive " + $drive + " has no label") } Else { Write-Host (" Volume in drive " + $drive + " is " + $volInfo.VolumeName) } Write-Host (" Volume Serial Number is " + $serial) Write-Host ("`n Directory of " + $args[0] + "`n")
Aksara “ `n ” pada permulaan dan akhir arahan Write-Host digunakan untuk memasukkan baris baharu sebelum dan selepas teks. Perintah Write-Host menambah baris baharu pada penghujung setiap baris. Jadi kesan “ `n ” ialah mencipta baris kosong sebelum dan selepas baris teks.
Adakah anda perasan "-eq" dalam arahan If? Ia adalah pengendali perbandingan kesaksamaan. Jadual di bawah akan menunjukkan kepada anda semua pengendali perbandingan:
-eq, -ieq | Bandingkan mengikut |
-ne, -ine | Perbandingan tidak sama |
-gt, -igt | Bandingkan lebih besar daripada |
-ge, -ige | Bandingkan lebih besar daripada atau sama dengan |
-lt, -ilt | Bandingkan lebih kecil daripada |
-le, -ile | Bandingkan kurang daripada atau sama dengan |
Aksara -i sebelum pengendali perbandingan menunjukkan bahawa pengendali tidak peka huruf besar-kecil.
Rajah 3: Data output skrip yang anda miliki sekarang
DIR.PS1: Senarai fail/folder
Kini anda sudah bersedia untuk memaparkan kandungan dan sifat folder ini. Perkara pertama yang perlu dilakukan ialah memanggil arahan PowerShell Get-ChildItem untuk mendapatkan satu set fail dan menghantarnya ke dalam skrip sebagai parameter. Perintah Get-ChildItem akan mendapatkan semula koleksi objek fail dan folder, bukan sahaja nama mereka, tetapi juga akan menyalurkan objek ini terus ke dalam perintah Sort-Object untuk mengisihnya. Secara lalai, arahan Sort-Object akan mengisih objek berdasarkan sifat Name. Jadi anda tidak perlu menerangkan sebarang parameter lain. Set objek yang diisih kemudiannya akan disimpan dalam pembolehubah bernama $items.
$items = Get-ChildItem $args[0] | Sort-Object
Sebaik sahaja anda mempunyai koleksi objek fail dan folder, anda perlu mengulanginya dan memaparkan ciri yang sesuai. Perintah yang digunakan untuk ini ialah ForEach. Untuk setiap fail atau folder, ciri yang dipaparkan ialah tarikh dan masa kemas kini terakhir, nama, panjang atau saiz fail. Rentetan yang kelihatan aneh di dalam kurungan ialah kod format rentetan .NET. Ia digunakan untuk menjajarkan medan kiri/kanan dan memformat tarikh, masa, nombor. Memahami kod format rentetan ini tidak begitu penting, kerana ia tidak penting untuk sifat skrip ini.
Perintah If ialah tempat anda menentukan sama ada objek ialah direktori atau tidak. Jika aksara pertama atribut Mod ialah "d", objek itu ialah direktori. Anda perlu menyemak semula kerana kod yang ditulis untuk direktori selalunya berbeza daripada kod yang ditulis untuk fail.
Perhatikan baris $totalDirs++ di dalam pernyataan If. Ini adalah kaunter yang bertanggungjawab untuk menjejaki bilangan folder. Begitu juga, terdapat pembolehubah $totalFiles yang digunakan untuk menjejaki jumlah saiz semua fail. Nilai ini sentiasa dikira semasa pelaksanaan. Tetapi ia hanya dipaparkan apabila proses penyenaraian fail selesai.
ForEach ($i In $items)
{
$date = "{0, -20:MM/dd/yyyy hh:mm tt}" -f $i.LastWriteTime
$file = $i.Name
If ($i.Mode.SubString(0, 1) -eq "d")
{
$totalDirs++
$list = $date + " {0, -15}" -f "
" + " " + $file
}
Else
{
$totalFiles++
$size = "{0, 18:N0}" -f $i.Length
$list = $date + $size + " " + $file
}
$totalSize += $i.Length
Write-Host $list
}
Rajah 4: Memaparkan data output skrip yang dikemas kini.
DIR.PS1: Pengaki
Satu-satunya perkara yang perlu dilakukan ialah menulis pada skrin jumlah bilangan fail, folder, jumlah saiz semua fail dan ruang kosong pada partition pemacu ini. Untuk melakukan ini, anda perlu menggunakan pembolehubah pembilang ($totalFiles, $totalDirs, $totalSize) yang dibuat dalam bahagian sebelumnya. Anda boleh mengetahui berapa banyak ruang kosong yang ada daripada pembolehubah $volInfo yang dibuat pada permulaan skrip.
Write-Host ("{0, 16:N0}" -f $totalFiles + " File(s)" + `
"{0, 15:N0}" -f $totalSize + " bytes")
Write-Host ("{0, 16:N0}" -f $totalDirs + " Dir(s)" + `
"{0, 16:N0}" -f $volInfo.FreeSpace + " bytes free`n")
Rajah 5: Memaparkan data keluaran lengkap skrip.
Ramalan dan penambahbaikan boleh
Walaupun skrip yang anda cipta menghasilkan output yang hampir sama dengan arahan CMD.EXE DIR, terdapat beberapa kaveat yang perlu anda ketahui dan beberapa peningkatan yang boleh dibuat.
Anda boleh menggunakan PowerShell untuk mengautomasikan hampir semua perkara, seperti menamakan semula kumpulan fail untuk konsisten atau melancarkan aplikasi secara automatik. Mari tulis beberapa skrip Windows PowerShell mudah untuk melihat cara ia berfungsi.
Nota : Jika anda menghadapi ralat semasa melaksanakan skrip berkenaan dasar pelaksanaan, anda mungkin perlu membenarkan skrip untuk dilaksanakan buat sementara waktu dengan menjalankan "Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass"
Namakan semula kumpulan fail dalam folder
Anda boleh menggunakan PowerShell untuk menyalin, mengalih dan memadam fail pada PC anda. Anda juga boleh menamakan semula kumpulan fail jenis fail tertentu. Sebagai contoh, berikut ialah cara anda boleh menamakan semula berbilang fail teks dengan menggantikan awalan "oldco" dengan "newco" dalam nama failnya:
Get-ChildItem -Path "C:\CompanyFiles" -Filter "*.txt" | Rename-Item -NewName {$_.Name -replace "oldco","newco"}
Dalam skrip di atas, ".txt" ialah penapis sambungan fail. Anda boleh mengubah suai dan menetapkannya kepada .jpg, .docx, dsb. untuk mencari jenis fail yang berbeza.
Aplikasi pelancaran automatik
Jika anda membuka set aplikasi yang sama setiap hari, anda boleh menulis skrip PowerShell untuk melancarkannya dengan satu klik:
#Open multiple apps with a single click
Start-Process "notepad.exe"
Start-Process "calc.exe"
Start-Process "Chrome.exe"
Start-Process "slack.exe"
Tampalkan skrip ke dalam fail Notepad dan simpan sebagai LaunchFavoriteApps.ps1. Kemudian, hanya klik dua kali pada fail untuk melancarkan semua aplikasi yang disenaraikan dalam skrip.
Salin fail penting ke lokasi sandaran
Anda boleh membuat sandaran fail penting secara berkala ke lokasi sandaran menggunakan skrip berikut. Pastikan anda menukar laluan sumber dan destinasi seperti yang diperlukan:
#Copy MyFiles folder contents to MyFilesBackup in D:\
Copy-Item -Path "C:\Documents\MyFiles" -Destination "D:\MyFilesBackup" -Recurse
Oleh kerana banyak jenis fail yang dimuat turun setiap hari, folder Muat Turun boleh menjadi berselerak dengan cepat dengan pelbagai jenis fail yang berselerak di sekeliling. Untuk membetulkannya, kami boleh menulis skrip PowerShell yang mengisih fail yang dimuat turun ke dalam folder mengikut jenis fail pada penghujung setiap hari.
Buka fail Notepad baharu dan tampal skrip berikut. Pastikan anda menukar laluan folder sumber dalam skrip supaya sepadan dengan laluan folder Muat Turun:
# Change the source folder path below
$sourcePath = "E:\Downloads"
# Add file mapping folder names; the Others folder includes all the files that do not match file types in the other categories
$fileTypes = @{
"Documents" = @("*.docx", "*.pdf", "*.txt")
"Images" = @("*.jpg", "*.png", "*.gif")
"Media" = @("*.mp4", "*.mp3", "*.mov")
"Zip" = @("*.zip", "*.rar")
"ISO" = @("*.iso")
"Others" = @("*")
}
# Iterate through each folder type and prepare a destination folder for organizing files
foreach ($folder in $fileTypes.Keys) {
# Create the destination folder path
$destPath = Join-Path -Path $sourcePath -ChildPath $folder
# Check if the destination folder exists, and create it if it doesn't
if (!(Test-Path -Path $destPath)) {
New-Item -ItemType Directory -Path $destPath | Out-Null
}
# Move matching files from the source folder to the destination folder based on file type patterns
foreach ($pattern in $fileTypes[$folder]) {
Get-ChildItem -Path $sourcePath -Filter $pattern -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
Move-Item -Path $_.FullName -Destination $destPath -Force -ErrorAction Stop
Write-Output "Moved: $($_.FullName) to $destPath"
} catch {
Write-Warning "Failed to move file: $($_.FullName). Error: $_"
}
}
}
}
Write-Output "Files organized successfully!"
Untuk menyimpan fail, klik Fail > Simpan Sebagai dan masukkan OrganizeDownloadsFolder.ps1 sebagai nama fail. Kemudian klik Simpan sebagai Jenis dan pilih Semua Fail . Klik dua kali pada fail OrganizeDownloadsFolder.ps1 untuk menjalankan skrip.
Sudah tentu, skrip adalah sebahagian daripada proses automasi. Bahagian kedua adalah untuk memastikan skrip boleh dilaksanakan secara automatik untuk melaksanakan tugas. Untuk melakukan ini, kita boleh membuat tugas berjadual untuk menjalankan skrip setiap hari atau mengikut keperluan.
Buka PowerShell, kemudian salin dan tampal skrip berikut dan tekan Enter . Pastikan anda menggantikan 'J:\OrganizeDownloadsFolder.ps1' dengan laluan fail penuh ke skrip OrganizeDownloadsFolder.ps1 anda .
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File 'J:\OrganizeDownloadsFolder.ps1'"
$trigger = New-ScheduledTaskTrigger -Daily -At "5:00 PM"
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "OrganizeDownloadsFolderDaily"
Setelah selesai, tekan Enter . Skrip akan membuat tugas berjadual dalam Penjadual Tugas untuk menjalankan skrip organisasi fail setiap hari pada jam 5:00 petang. Jika anda lebih suka masa yang berbeza, anda boleh mengubah suainya dalam skrip di atas.
Selain itu, anda boleh menggunakan PowerShell untuk mengautomasikan tugas harian yang lain, seperti skrip pemantauan ruang yang memaklumkan anda apabila anda kehabisan ruang kosong pada pemacu utama anda, kumpulan dokumen PDF yang melindungi kata laluan dan juga menggunakan kertas dinding langsung daripada folder imej anda.
Walaupun PowerShell ialah bahasa dan utiliti skrip yang berkuasa, ia memerlukan sedikit masa untuk memahami dan menggunakannya, terutamanya jika anda tidak biasa dengan persekitaran .NET Framework. Saya harap artikel ini bersama-sama dengan skrip contoh akan berguna kepada sesiapa sahaja yang ingin memahami PowerShell. Tetapi skrip yang dibuat dalam contoh agak mudah. Percaya bahawa ia boleh dibina dan dibangunkan dengan lebih lengkap untuk berkhidmat dengan lebih baik untuk aplikasi yang lebih kompleks.
Microsoft kini menghadapi kesukaran menukar pengguna kepada produk dan perkhidmatan baharu.
Kita semua mempunyai tugas berulang yang ingin diautomasikan pada PC kita. Nasib baik, terdapat banyak aplikasi Windows pihak ketiga yang boleh dipersalahkan dan membantu anda menggunakan masa anda dengan lebih cekap.
Bina reputasi anda, konsepkan mesej anda, dan letakkan diri anda sebagai kepakaran anda. Kemudian cara penceramah yang berjaya menjana wang akan berguna kepada anda.
Perbendaharaan kata bahasa Inggeris yang kaya dengan pasangan antonim yang mudah dikenali. Walau bagaimanapun, terdapat pengecualian, di bawah adalah pasangan kata bahasa Inggeris yang bukan antonim walaupun mengandungi awalan berlawanan yang biasa ditemui.
Dengan menebus kod Kurokus Basket Showdown, anda akan mendapat banyak syiling percuma untuk membeli hiasan atau putaran bagi permainan gaya bola keranjang.
Semua Kod Pertahanan Menara Bintang membenarkan pemain menerima ganjaran secara percuma. Daripada ganjaran ini, anda akan berpeluang untuk berhubung dengan watak Avengers dan Anime kegemaran anda.
Adakah anda tahu Microsoft meraikan hari lahirnya yang ke-50 minggu ini?
Baru-baru ini, ramai pengguna telah melaporkan bahawa mereka tidak boleh menyimpan suntingan mereka menggunakan Editor Ajaib.
Lelaki juga perlu berpakaian kemas kerana ia memberi impak penting bukan sahaja dalam pekerjaan tetapi juga dalam kehidupan peribadi. Berikut adalah kesilapan pakaian yang paling biasa.
Copilot Pro menyepadukan Copilot AI terus ke dalam aplikasi Microsoft 365 seperti Word, PowerPoint, Excel, OneNote dan Outlook....
Penjana seni AI seperti Midjourney boleh membayangkan semula imej anda dalam gaya, latar belakang, warna dan mood yang berbeza. Ikuti tutorial ini untuk mencipta beberapa potret diri yang imaginatif, dilihat melalui lensa kecerdasan buatan.
TSMC dilaporkan mula menerima tempahan untuk wafer 2nm awal bulan ini, dengan harga dianggarkan sehingga $30,000/wafer.
OpenAI sedang berbincang untuk memperoleh Windsurf, editor kod berkuasa AI terkemuka dalam industri.
Sama ada pilihan reka bentuk atau ciri yang tidak praktikal yang tidak diminta oleh sesiapa pun, sesetengah trend ini perlu dihentikan selama-lamanya.
Secara lalai, maklumat hubungan peribadi dipaparkan pada profil Instagram anda. Ini akan menjejaskan privasi peribadi. Artikel di bawah akan membimbing anda cara menyembunyikan maklumat hubungan di Instagram.
Aplikasi Telegram akan menyimpan semua peranti yang dilog masuk ke akaun dalam senarai untuk kami jejaki. Dan daripada senarai ini kita boleh menyemak sama ada terdapat sebarang log masuk yang tidak dibenarkan.
Legendary World membantu pemain menerima satu siri berlian, peti harta karun dan serpihan watak peringkat tinggi melalui kod hadiah