Artikel ini akan membahas mengapa kita semua menyukai Powershell dengan beberapa contoh yang berhasil. Semua ini akan bermanfaat saat mengambil inventaris, menemukan komputer tertentu, dan hal-hal lain. Powershell dilengkapi dengan cmdlet yang nyaman dan menarik, pelengkapan otomatis dari segala sesuatu dan nama intuitif membuatnya mungkin bahasa yang paling mudah untuk dipelajari.
Dalam panduan ini, kami akan melihat beberapa tim keren menurut pendapat penulis dan menjelaskan mengapa ini keren. Mari kita mulai dengan cuplikannya.
Cuplikan yang berguna:
Kami membawa komputer ke TrustedHostsBerguna saat menghubungkan ke server melalui WinRm. Perintah akan menimpa nilai sebelumnya, hati-hati, tambahkan ip atau nama host yang dipisahkan oleh koma. Jika semua host Anda dalam AD, Anda tidak perlu menyentuh file ini.
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.0.1'
Wildcard juga berfungsi jika Anda tidak ingin menambahkan host baru ke TrustedHosts setiap saat.
Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*'
Kami menyimpan kata sandi dalam bentuk terenkripsi dalam file:Ini berguna untuk otomatisasi, sangat memudahkan kehidupan saat menjalankan skrip dari penjadwal, tetapi kata sandi disimpan dalam bentuk yang aman.
Jika Anda menjalankan skrip dari pengguna yang masuk, kredit pengguna akan digunakan.
Read-Host -AsSecureString | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Password.txt
Kami mengambil kata sandi terenkripsi dari file:
$Password = Get-Content C:\Password.txt | ConvertTo-SecureString
Hal yang sama dapat dilakukan dengan Kredensial, ganti Read-Host dengan Get-Credential.
Get-Credential | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Credential.txt
Kami mendapatkan tanggal boot terakhir OS. (gcim win32_operatingsystem).LastBootUpTime
Dengan cara yang sama, kami juga mendapatkan waktu aktif.
Get-CimInstance Win32_operatingsystem -ComputerName $computers | Select-Object LastBootUpTime, @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}}
Kami mendapatkan daftar program yang diinstal:Ini adalah program, bukan komponen:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table βAutoSize
Kami mendapatkan daftar drive, termasuk drive jaringan dan ruang kosong di dalamnya Get-PSDrive -PSProvider filesystem | where-object {$_.used -gt 0} | Select-Object -property Root,@{name="Size";expression={($_.used+$_.free)/1GB -as [int]}}, @{name="Used";expression={($_.used/1GB) -as [int]}}, @{name="Free";expression={($_.free/1GB) -as [int]}}
Kami menghentikan proses dengan namanya.Dalam contoh ini, kami menghentikan Chrome. Wildcard juga cocok jika Anda ingin menyelesaikan semuanya.
Get-Process -Name "chrome" | Stop-Process
Salin pengaturan akses folder ke folder anakIni berguna jika Anda ingin memilih atau memberikan hak untuk menggunakan folder dan semua subfolder dari kelompok pengguna atau pengguna. Perintah secara rekursif, dari bawah ke atas, membaca dan menulis izin.
Salin ACL dari folder:
$Acl = Get-Acl -Path C:\folder\
Masukkan ACL pada semua file dan subfolder:
Get-ChildItem -Path C:\Folder\ -Recurse | Set-Acl $Acl
Skrip yang berguna:
Di sinilah kesenangan terburuk dimulai. Jika Anda perlu mengambil inventaris, akan sangat berguna untuk melihatnya. Jika komputer Anda tidak dalam AD, maka skrip akan menjadi sedikit lebih rumit, itu harus diulangi di atas file yang telah dikompilasi, dan kata sandi harus diambil dari file atau melalui Get-Credential. Semua perbedaannya:
Iklan C:
$ADComputers = (Get-ADComputer -filter *).DNSHostName
Tanpa iklan:
$Credentials = Get-Credential $Computers = Get-Content -Path C:\servers.txt
Kami mengetahui waktu boot terakhir dari masing-masing komputer dalam AD: $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command $i { Get-CimInstance Win32_operatingsystem | Select-Object LastBootUpTime, @{Name="Uptime";Expression = {(Get-Date) - $_.LastBootUptime}} } }
Kami mendapatkan semua program yang diinstal pada semua komputer AD: $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command -computername $i { gcim win32_product -computername $env:computername | Sort-Object -property Vendor,Name | Select-Object -property Vendor,Name, Caption } }
Hal yang sama dapat diperoleh untuk komponen, menggantikan Invoke-Command:
Get-WindowsFeature | Where-Object -Property "Installed" -EQ "Installed"
Kami mendapatkan komputer di mana proses yang kami butuhkan sedang berjalan:Jika Anda lupa komputer mana yang menjalankan program ini atau itu, Anda bisa mendapatkannya dengan cara ini. Pertimbangkan contoh browser:
$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command -computername $i { Get-Process -Name "Chrome" -ErrorAction SilentlyContinue } }
Membunuh browser bisa semudah mendapatkan proses:
$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command -computername $i { Get-Process -Name "Chrome" | Stop-Process -ErrorAction SilentlyContinue } }
Kami mendapatkan komputer tempat program tertentu diinstal:Diam-diam dalam hal ini Java. Ini akan membantu selama inventaris, Anda dapat melihat nama-nama komputer di mana ia diinstal.
$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) { Invoke-Command -computername $i { gcim win32_product -computername $env:computername | Select-String -Pattern "Java" -AllMatches | Sort-Object -property Vendor,Name | Format-Table -ErrorAction SilentlyContinue } }
Jika Anda memiliki saran, kami akan dengan senang hati menambahkannya ke artikel ini. Kami berharap contoh-contoh ini bermanfaat bagi Anda.
Kami menawarkan tarif UltraDSite
Windows VDS yang diperbarui untuk 99 rubel dengan Windows Server 2019 Core yang diinstal.
