---------- Bölüm 1 Windows Scripting Geçmişi --------------
1 Senaryo yarasalarının ilk nesli. Win95, win98 ile başladı ---------ve yaklaşık 2008 civarında sona erdi. Özellikler: Karakter odaklı komutlar, komut satırı ve pipeline özellikle. 2 İkinci nesil script VBS. Özellikler: Sadece fonksiyonlar, değerler ileti, çağrılar. 3 Üçüncü nesil script powershell. 2012'den itibaren komut tamamen nesne odaklı hale gelişti. Örneğin, görev listesi ve get-process, tekrar eden tekerlek özellikleridir: nesne odaklı. Önceki iki nesil yazı yazısının avantajlarını devralmak.
S: Neden PowerShell öğrenmelisiniz? A: Misyoner, bir yıl ve beş yıl boyunca BAT'a eğitim alacağını söyledi. Basit sözdizimi ve güçlü kütüphane fonksiyonları! Dünyadaki tek bu, boru hattının her iki tarafında komutları olan nesneleri destekliyor. yani nesne yönelimli komut 1 | Nesne yönelimli komut 2
Windows ve Linux farklıdır: Win'deki PowerShell betikinde, Destek CR, LF, CRLF girin. Çok iş parçacığı ve çoklu süreç eşzamanlılığını destekleyin. [Text2 sesi], "Rapor Kaptan, disk dolu" gibi kolayca gömülebilir. Grafiksel arayüz gömmek kolaydır. (Açılır arayüz kullanıcı adı, şifre, tek seçim, çoklu seçim vb. girmenizi istediğinde) Bunlar Linux scriptlerinin kıskançlıkları.
PowerShell, Python'dan farklıdır: PowerShell'de Çince'yi kullanmak kolay. Çince alfabesi adı, değişken adı, yorum. Çin tek tırnak işaretleri, Çin çift tırnak işaretleri. GBK, UTF8, Unicode kodlamasını otomatik olarak tanır. pipeline destek nesneleri, ki python betikleri buna kıskanıyor.
Basit sözdizimi örneği 1: Powershell tek ve çift tırnak işaretlerinin büyüsü. Tek tırnak işaretleri çift tırnak ile alıntılanabilir. Ve tam tersi. Tek ve çift tırnak işaretleri @'' ile @引用 edilebilir. BAT işe yaramadı.
Misyoner Anlatıcı: Eğitimin tasarımına çok fazla düşünmüştüm. Yazdıklarımın tarih kısmı çok [basit ve kaba iğne] değil mi? Tarih tek bir darbeyle taşınır. Ama söylediğim için saçmalık değil, sadece öğrencilerin win7-win2008'den beri scriptlerin [nesneleştirmesi] popüler hale geldiğini açıkça belirtmelerini istiyorum. Nesne yönelimli açıklamanın bir sonraki bölümüne geçiyor. Herhangi bir PS giriş eğitimi karakter odaklı ile nesne odaklı arasındaki farkı belirtmelidir. Bu konuyu komut satırının tarihine eklemek basitçe uygundur.
---------- Bölüm 2 Nesne Yönelimli Harika -------------- Nesne nedir, neden nesne odaklıdır ve Microsoft neden çarkı güçlendiriyor?
Nesne yönelimli örnek 1: Soru: Günde 2.2 elma yiyorum, 17 günde kaç elma yiyorum? A: 2.2 x 17 ölçüm mevcuttur. Ayrıca herhangi bir betik dili tarafından desteklenen i++ kullanılabilir. çünkü ($i = 1; $i -Teğmen 18; $i++)
{ $Apple = 2.2 + $Apple Write-host $i,$Apple
}
-------------------------------------------- Soru değişir değişmez, gün sayısını söylemeyeceğim, sadece söyleyeceğim, Günde 2,2 elma yiyorum, 20 Ocak'tan 20 Haziran 2017'ye kadar kaç elma yiyeceğim? $days = ((alınma tarihi '2017-06-20') - (alınma tarihi '2017-01-20')).günler #值151
Günde 2,2 elma yiyorum, 20 Ocak'tan 20 Haziran 2020'ye kadar kaç tane elma yiyorum? $days = ((alınma tarihi '2020-06-20') - (alınma tarihi '2020-01-20')).günler #值152
için ($i=(alınma tarihi '2020-01-20'); $i -lt (alınma tarihi '20-06-20'); $i=$i.adddays(1))
{ $Apple = 2.2 + $Apple Write-host $i,$Apple
}
Sonuç: Tarih nesnesi ile günler, saatler vb. saymak basittir. [for,,i++] yaygındır, ama i sayısının tarih tipi olabileceğini hiç düşünmemiştim.
------------------------------------------
Nesne odaklı olmanın avantajları nelerdir? Nesne yönelimli olmadan önce sadece dizileri ve tam sayıları vardı. 1 Bir nesne var. ----- [Karakter Tipi]----- Glifte system.string var, bu en temel olan bir yöntemdir. System.Text.StringBuilder belleği, sık değişen, büyük dizileri
----- [Sayısal tip]----- system.int32, system.int64, system.decimal, system.double, System.Numerics.BigInteger sonsuz tam sayı. Yaygın olarak kullanılan int32, ondalıktır.
1/3*3'ün 1 mi yoksa 0.9999 mı eşit olması veri türüne bağlıdır. ----- [Dizi]----- system.array dizisi system.arraylist dizisi sık sık değişir, örneğin sürekli yeniden yazma, ekleme veya silme gibi, bunu kullanmanız gerekir. Hız nispeten hızlı. System.Collections.Generic.HashSet dizilerini deduplicate et. Python'un set nesnesi ile aynı.
-----【Form】----- 1 komut çıkışı. Örneğin, dir, get-process. 2. Script yazarken, nesneler ve nitelikler kullanarak inşa ederiz.
----- [Diğerleri] ----- Hash tabloları, dosyalar vb.
2'nin özellikleri var. Nitelikler argümanlardır ve dizelerden daha küçüktürler. Nitelikler kalmadan önce, dizeleri [beyin yakan normal] ile filtrelememiz ve filtrelememiz gerekiyor, buna [tümsezim dizesi] denir. Özellikleriniz varsa, buna ihtiyacınız yok. 3 Bir yolu var. Yöntem programdır, koddur. Kendin yeniden yazmana gerek yok. Bat kesinlikle iyi değil, imkansız, ayrıca kişisel yazı var, güvenilmez, kullanmaya cesaret etme. Metodlar kendi yazdığı ps fonksiyonları olabilir, ps sınıflarında kendi yazdığı yöntemler olabilir. Kendin yazdığın yöntem geçici olarak üçüncü taraf sınıfına [birleştirilebilir]. Kendinize yazdığınız yöntem geçici olarak .net sınıfına [birleştirilebilir].
Nesne odaklı olmanın dezavantajları nelerdir? Vaiz, winxp kullananlara powershell öğretiyor. Kişi powershell'in iyi olmadığını, nesnenin çok hafıza yoğun olduğunu söyledi ve haklı. cmd'de dir. ile birlikte 100 dosya adı (dizgi) döndürüyorum. PowerShell'de dir ile 100 dosya nesnesini döndürüyorum ve Powershell çok fazla bellek alıyor. Ama şimdi farklı: 1. Gereksiz içerik değişkenlerde bulunmamalıdır. Ya da kullandıktan hemen sonra yok ederek bellek kullanımını azaltabilirsiniz. 2. Hafıza düşüşü yeterli. CPU performansı artık yükselemediği için, zaman yerine mekânı değiştirmek için çöl�şıyla hafızayı artırıyoruz. 3. Daha güçlü özellikler istiyoruz ve nesne yönelimi günümüzde en temel yöntem. Hangisi nesne odaklı değil, py, php, java, .net, c++?
Özet: 1 Nesneler, dizilerlere göre daha büyük ve daha fazla bellek tüketir. 2. Nesne yönelmesi için daha fazla yöntem ve daha güçlü fonksiyonlar vardır. 3 özellik, kullanımı son derece pratik olan dize granülerliğinden daha küçüktür. [Beyin yakan normal filtre için deli gibi aşırı kullanımı] tellerden kaçındım!
=== Beyin yakan düzenli kullanıcıları örnekleri filtrelemek için çılgınca kullanımı, ping varsayılan geçidi için bat versiyonu === @echo off&setlocal enabledelayedexpansion Echo varsayılan geçidi arıyor...
/f için "usebackq delims=" %%i içinde ('ipconfig /all') do ( echo %%i|find /i "gateway">nul|| echo %%i|find "default gateway" >nul eğer "!hata seviyesi!" =="0" ( /f için "tokens=2 delims=:" %%a içinde ("%%i") için /f için "delims= " %%m içinde ("%%a") do ipgate=%%m set
)
)
Echo'nun varsayılan geçidi şudur: !ipgate! =========== varsayılan gateway.ps1'e ping alayın============ $default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). NextHop & ping.exe $ Varsayılan Gateway
# test-bağlantı $ varsayılan gateway =======================
S: Nesne yönelimli çok iyi olsa bile, bu nesneler nereden geliyor? C: .net kütüphanesinden.
---------- Bölüm 3 .NET --------------'e giriş
S: .NET Core'un kaç versiyon dalı var? A: Şu anda üç versiyonu bulunmaktadır. .NET 2.0 .NET 3.51'in en son sürümü .NET 4.0 .NET 4.70'in en son sürümü .NET Core 1.x Apple sistemleri, Linux sistemleri ve gömülü sistemler için .NET 1.2'nin en son sürümü. .NET Core 2.x Apple sistemleri, Linux sistemleri ve gömülü sistemler için .NET 2.0'ın en son sürümü.
S: .net'in kaç fonksiyonel dalı var? A: .NET içinde masaüstü dalı. WinForm. Masaüstü pencereleri geliştirmek için. Ses kütüphanesi asp.net .NET ve .NET Core'da. Web sunucusu fonksiyon kütüphanesi. Eskiden bir B/S web sunucusu açmak için kullanılırdı. .NET ve .NET Core'da F#. Matematik kütüphaneleri, trigonometrik fonksiyon kütüphaneleri vb. içerir. PowerShell ile .NET ve .NET Core. Script dosyaları gibi yaygın sistem yönetim arayüzleri içerir. Linux ◦Ubuntu 14.04 \ 16.04 ◦CentOS/RHEL 7 ve üzeri ◦SUSE 42 ve üzerini aç ◦Arch Linux (archl inux'un sürüm numarası yoktur) ◦LINUX docker konteyneri ◦Linux AppImage konteyneri (taşınabilir uygulama tek ikili kart) https://github.com/probonopd/AppImageKit
MAC OS X ◦OS X 10.11
S: Bir .NET programı (C# programı) MySQL sunucusuna nasıl bağlanır? A: .NET dili için bağlantı cihazını indirmek için mysql resmi web sitesine gidin. mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll MySql.Data sınıfını .net'e ekleyin ve veritabanı arayüzünü ekleyin.
Sonuç: WinXP makinesi önce .net 3.51, win7 ve win2008 makine kurulumu, önce .net 4.62 veya üzeri sürümleri kur.
.net uzun yıllardır var ve .net'i destekleyen çok az yazılım Java kadar çok az şey var. Tüm .net dalları, arayüzler (veritabanları, WeChat vb.) var. ) O dll'ler, o kütüphaneler, powershell olarak adlandırılabilir. C# ile yazılmış exe ile tamamen aynı.
S: .NET dal arayüzüne ek olarak, PowerShell'in kendi kütüphaneleri (modülleri) nelerdir? A: Lütfen bir sonraki bölüme bakın
---------- Bölüm 4 PowerShell'de Yaygın Kullanılan Yerleşik Kütüphaneler, Harici Kütüphaneler ve Üçüncü Parti Kütüphaneler --------------
Misyoner yardımı: Bu bölüm tartışılamaz, sadece kütüphaneler ve el kitaplarının bir listesidir. Bu bölümü yer alimlerine ekleyin. Bu kütüphanelere baktıktan sonra PowerShell'in neler yapabileceğini anlarsınız.
Win2012 manuel adresi: (en yaygın kullanılan reklam modülü)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx AD Kullanıcı Grubu Yönetimi, DHCP, DNS, Yazıcı, Dosya Paylaşımı, IIS, Disk, NIC,
Exchange2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx Active Directory 12 Spam ve Kötü Amaçlı Yazılım Karşıtı 59 İstemci erişimi 100 Uzatma Ajanı 4 E-posta Adresleri ve Adres Defterleri 37 Federasyon ve hibrit yapılandırma Yüksek erişilebilirlik Posta akışı Posta kutusu Posta kutusu veritabanı Posta kutusu sunucusu Taşın ve göç edin Organizasyon İzinler Politika ve uyum Güvenlik Sunucu sağlığı, izleme ve performans Paylaş ve iş birliği yap Birleşik Mesaj Kullanıcılar ve gruplar
sqlserver2016
https://msdn.microsoft.com/zh-cn/library/hh245198.aspx
lync2015
https://technet.microsoft.com/zh-CN/library/gg398867.aspx
SharePoint2016
https://technet.microsoft.com/zh-cn/library/ff678226(v=office.16).aspx
Amazon Sanal Makineler, AWS, Microsoft Sanal Makineler, Azure, Hyper-V, VMware vSphere ve kurumsal sınıf sanal makineler.
Müşteriler: Hizmetler, süreçler, kayıtlar, kayıtlar, dosya dizinleri, uzaktan yönetim. Zamanlama görevleri.
İnternet: Linux sunucu bağlantısı için FTP, mail, SSH istemci eklentisi.
Metin: XML, HTML, CVS, JSON, EXCEL vb.
Metin 2 ses
Grafiksel arayüz.
Microsoft Scripting Center
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/
PowerShell yazılım kaynağı resmi web sitesi --- resmi PowerShell kütüphanesi.
https://www.powershellgallery.com
Diğer Niu x kütüphanelerinin hepsi github'da. Ayrıca, misyonerler [Gizli Ayak Pavyonu]'nun [Niu x Sihirli Silahı]'nı düzenli olarak yayımlar; bu, PowerShell'in faydalı bir üçüncü taraf kütüphanesidir.
---------- Bölüm 5 Yeni başlayanlar komutların kullanımına nasıl yardımcı olacaklarını öğrenmelidir--------------
S: PowerShell sürümünü nasıl anlarım? A: $PSVersionTable
S: Modülü bilmiyorum, nasıl bulurum? A: get-module -ListAvailable
S: Komutları sadece bir kısmını bildiğim için nasıl bulabilirim? A: get-command *servis*
S: Komutu biliyorum ama komuttaki parametreleri bilmiyorum, parametreleri nasıl listeleyeceğim? A: get-help write-host -Parametre * gösteri-komutu yazma-sunucu
S: Parametreyi biliyorum ama hangi komutun bu parametreye sahip olduğunu bilmiyorum, komutu nasıl bulabilirim? A: get-command -ParameterName kodlaması
S: Komut satırından bir komutla ilgili yardımı nasıl alırım? A: Yardım Bul-Buluşma
-Komut örnekleri -çevrimiçi çevrimiçi el kitabı
S: Komutun öznitelik yöntemini bilmiyorum (nesneyi bilmiyorum), nasıl bulunur? A: "ABC" | Katıl-Üye Buluşma tarihi | Katıl-Üye
S: Çin .NET kılavuzu nerede? A: msdn。 En temel dize özellikleri ve yöntemleri kılavuzda yer alır.
https://msdn.microsoft.com/zh-cn/library/system.string.aspx
---------- Bölüm 6 Ortak Komutlara Giriş --------------
Öğrenmen gereken ilk komut dirdir S: Neden cmd dir'i yerine powershell dir'i [yani Get-ChildItem] kullanıyorsunuz? A: Nesne odaklı, güçlü yöntem ve birçok özelliğe sahip. $file = dir a:\pscode\temp183\aaa.txt $file. Tam Adı #返回全路径属性 $file. BaseName #返回文件名属性 $file. Uzantı #返回扩展名属性 $file. LastWriteTime #返回最后写入时间属性
Öğrenilmesi gereken ilk sözdizimi dizi dizimidir. $a = @(xxx komut) S: Bazen dönüş değerlerini davranış birimlerine göre dizilere bölmek için [karakter tabanlı harici komutlar] kullanmak gerekir. A: $a = @(ipconfig) $a[8] #第9行
Çocuğu Öğesi Kullanımı: PowerShell 3.0 ve üzerinde, parametreler eklendi
get-childitem d:\xxx -file #过滤, sadece dosyaları çıktı -Dizin filtreleme, sadece çıktı dizinleri -Gizli filtreleme, sadece gizli çıktı
S: Bir dosyayı açıp, davranışa göre segmentlere ayırıp bir diziye mi koyup koyacaksın? A: $a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0
S: Bir dosyayı büyük bir dizi olarak açıp tüm değişkeni mi depolayalım? A: $a = İçerik Alın a:\pscode\temp183\aaa.txt -raw
$a,$b,$c = 1,2,3
S: Arka planda komutları nasıl çalıştırabilirim? A: Antik çağlarda bir cmd /c "komutası" vardır. Şimdi powershell /c "komut" ya da powershell -c "komut" var, PowerShell -file "script.ps1" -argüman 1 AAAA -parametre 2 1234 start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'
S: Script'i başka bir yerel kullanıcıyla çalıştırmak istiyorum ama powershell'de runa yok. Benzer komutlar mı çıkarıyor musun? A: PowerShell'de çeşitli oturumlar var. ip + port + kullanıcı + şifre = bir oturum, sadece kullanıcı adını değiştirmem yeterli, şifreyi değiştirmem gerekiyor, siz de izinleri değiştirebilirsiniz. Çünkü izinler kullanıcıya bağlıdır. Benzer şekilde, kullanıcı değiştirmeden sadece n oturum oluşturmam gerekiyor. En önemli new-pssession, -Credential parametresine sahiptir, kullanıcı şifresini girin, bu runa ile aynı değildir. Exe aynı mı? SmbSession başka ne olabilir? Bu yüzden powershell'de runa kullanmanın gerekli olduğunu düşünmüyorum. exe。 Sadece bu komutları oturum ve Credential ile kullanmanız yeterli, değil mi?
Parametre adında [Credential] adlı komutları kontrol edin: get-command -ParameterName Credential
Komutta [session] karakteriyle komutları görüntüleyin: get-command *oturum*
S: PowerShell kullanarak e-posta göndermek için nasıl gönderilir? A: Gönder-MailMesaj -Konu 'Konu' -"Hotmail hesabınız @hotmail.com" -"QQ e-postanız @qq.com" ' -SmtpServer "smtp.live.com" -port 587 -useSsl -credential "hotmail hesabınız @hotmail.com" ' -E-postanın içeriği $HTML $Attachments -BodyAsHTML -body
Not: 1 kullanımxxx@QQ.com+ QQ şifreniz + yukarıdaki komut E-posta göndermek çalışmıyor. Çünkü QQ şifrelerinin güvenliği için Tencent bağımsız e-posta şifrelerine ihtiyaç duyar. 2 QQ posta kutusundan gönderme varsayılan olarak mümkün değildir. Kapalı ve ayarlarda SMTP'yi açmanız gerekiyor. 3 PowerShell 3.0 ve üzeri sürümler yalnızca port parametrelerini destekler. Win7 için önce PS'in en son sürümünü yüklemen gerekiyor
S: Win CPU, disk, ağ, IO vb. izleyin. A: Performans Monitörü veya Get-Counter, hem yerel hem de uzak bilgisayarlardan performans sayacı verilerini getirir.
S: Hangi karşı ürünlerin mevcut olduğunu nasıl görebilirim? A: Hepsi kılavuzda var. Ana kullanım kategorilerini kontrol edin: Sayaç Seti Alın -ListSet * | Sıralama-nesne CounterSetName | Format-Tablo CounterSetName
Örneğin, artık disk kategorisinin (PhysicalDisk) olduğunu biliyorum ve diskteki alt kategorileri kontrol edip şunları kullanıyorum: (Sayaç -ListSet FizikiDisk). Yollar
S: Kayıtları nasıl görüyorum? A: Etkinlik Görüntüleyicisi, veya get-eventlog
S: Dizileri nasıl çalıştırırım? A: $cmd 1 = 'xxxx' Çağırış İfadesi $cmd 1
Bireysel komutlar hakkında çok şey öğrendik, Powershell betiklerinin yürütülmesine bir göz atalım.
---------- Bölüm 7 PS1 Scripting, Hata Ayıklama ve -------------- Çalıştırma Bir betik, komut ilamalarının birleşimi ve üst üste binmesidir. Senaryo yapıştırıcı, başkalarını aramak için etrafta dolaş, arabayı monte etmek için tekerlekleri ara. Tekerlek yapmak yerine, başkaları için kullanacak.
Cainiao sordu: Senaryo nasıl yazılır? Yaşlı kuş cevap verdi: 1 Sorunun detayları netleştirilmelidir. Örneğin: ay kekleri yap. 2 Problem çözme fikirleri de temelde tamamlanmıştır. Un ve su, dolguyu koy, buharla. 3 Hangi komutları ve değişkenleri kullanacak. Beş taneği ekle, kalıba koy ve sık. 4 Önce kabaca yaz, kaba yaz. 5 Hata ayıklama geçti. 6 Detaylı yaz. Hata durumunu, hata kodu ve hata mesajını düşünün. Kolayca uyumlu olmayan hata eğilimli kodu kaldırın. İyi performans göstermeyen kodu yeniden yaz. Şu ana kadar iyi bir senaryo iyi görünmeyebilir ama çok faydalı olmalı. 7 İnce işlenmiş bir şey. Refactoring, yeniden kullanılan kod parçalarını fonksiyonlara yazmak. Değişken isimlerini yeniden yazın ki insanlar onları bir bakışta anlayabilsin. Kodu iyi biçimlendirin ve girinti yapın.
S: PS1 yazmak için hangi IDE kullanılır? A: En çok tavsiye edilen, Visual Studio Code ve PowerShell eklentisini kullanmaktır. Özellikler: Kod istmişleri, otomatik tamamlama, kod biçimlendirme, boşluk veya sekme seçmek için girinti, dosya kodlama ayarları. FTP-sync adında bir eklenti var; bu eklenti Windows'un VSCode bilgisayarında PS1 scriptlerini yazabiliyor ve kaydedildiğinde bunları otomatik olarak Linux dizinine senkronize ediyor.
S: PS1'de hata ayıklama yapmak için hangi araçlar kullanılır? A: En çok önerilen powergui life, bir lokomotif kullanmaz, kahraman olsa bile, PS scripti de atlayıp hata bildirir! VSCODE da sorun değil
S: Kod biçimlendirme için hangi araçları kullanıyorsunuz? A: Girintili olması gereken her şey girintili olur ve eşit işaretler hizalanır.
PowerShell ISE + ISE Eklentisi [ISESteroids]
Kurulum: Install-Module -Name ISESteroids
ISE şunları yönetiyor: Start-Steroids
S: Kodun rengini güzel yapmak için hangi araçları kullanıyorsunuz? A: 1 Yukarıdaki araçları kullanarak kodu biçimlendirin. 2 PowerShellise + Missionary DIY Renk Eşleştirme 2016 Sürümü'nü kullanın. 3 Fotoğrafı al. Dünyanın en hoş ve en güzel renkli PowerShell kodu üretiliyor.
Yukarıdaki tüm IDE'ler Çince'dir.
S: Bir senaryoya nasıl isim vereceğim? xxx.ps1 A: 1---2 harfle başlamak, geri kalan için Çince dosya adı kullanmak önerilir. Yani [erkek arkadaşım tüm eski files_ yedekler ve 10 gün önceki .ps1'i sil] Bu şekilde, önce [bf] yazın, ardından tab'a basarak script adını tamamlayın.
S: PowerShell script yürütme iznini nasıl etkinleştirebilirim? A: echo Aşağıdaki kod, yönetici ayrıcalıklarıyla cmd'de veya yönetici ayrıcalıklarıyla PowerShell'de çalıştırılabilir. PowerShell kullanıyorsanız uzaktan kumanda. Hem yerel makine hem de uzak makine yönetici ayrıcalıklarıyla çalıştırılmalıdır. "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -komutu "Set-ExecutionPolicy -ExecutionPolicy Kısıtlamasız" "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -komutu "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" & "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -komutu "Set-ExecutionPolicy -ExecutionPolicy Sınırsız" & "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -komutu "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" duraklama
S: Lokomotifin (powergui) dezavantajları nelerdir? A: Arka plan rengini ayarlayamıyorum.
S: vscode'un dezavantajları nelerdir? A: $ ve değişken adı aynı renk değildir. Hata ayıklama fonksiyonları yavaş ve bazen kilitli.
S: ISE'nin dezavantajları nelerdir? A: Kodlamayı kaydetmeyi veya dönüştürmeyi seçemezsiniz. [boşluk] girintisi, [tab] her ikisi. Diğer metin düzenleme yazılımlarında girinti gösterilir.
---------- Bölüm 8 Gerçek Savaş Tatbikatı -------------- Grup 6504748 ve bu bölümü kendi başlarına yazdı.
5. Örnek 1: Servisi açıp kapatın 6. Örnek 2: Kontrol Duvarı (Aç, Kapa, Kural) 7. Örnek 3: Bir politika belirleyin (örneğin şifre politikası)
---------- Bölüm 9 Bu ek seçmeli dersler İlgileniyor musunuz? -------------- PowerShell scripti, komut satırı argümanları değerleri aktarır ve değişkenleri bağlama örnekleri
http://www.cnblogs.com/piapia/p/5910255.html
PowerShell'in aynı anda sadece bir betikte çalıştırmasına izin verin (süreç karşılıklı dışlama örneği)
http://www.cnblogs.com/piapia/p/5647205.html
powershell karakter arayüzü, powershell ve WPF arayüzü, 2048 oyunu
http://www.cnblogs.com/piapia/p/5531945.html
PowerShell'de iki tarayıcı
http://www.cnblogs.com/piapia/p/5367556.html
PowerShell scripti: Rastgele şifre oluşturucu
http://www.cnblogs.com/piapia/p/5184114.html
PowerShell özyinelemeli algoritma örneği
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html
PowerShell Sesli Hesaplayıcı
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html
1 Tüm EFS şifreli dosyaları listeleyin. 2EFS şifreli tüm dosyaları çöz
http://www.cnblogs.com/piapia/p/4702514.html Sistem yöneticileri ve ağ yöneticileri için yazılmış bir araçtır. Bir çalışan işinden ayrıldıktan sonra, diski 10.000 dosya (dizin) olduğunu varsayır ve bunlardan 3'ü EFS tarafından şifrelenmiş dosya dizinleri vardır. Explorer'da bu üç dosya yeşil. Ama yeşil olup olmasa da 10.000 kataloğa teker teker tıklarsanız, çok yorulursunuz. Bu sırada, ağ yöneticisi çalışanın WIN hesabını kullanır, çalışanın bilgisayarına giriş yapar ve bu betikle tüm EFS şifreli dosyaları listeler.
---------- Bölüm 10 Lütfen bir soru sorun-------------- Bayanlar baylar, bildirecek bir şey varsa, mahkemeyi hiçbir şey olmadan terk edin.
----------Bölüm 11 Linux Bölümü--------------
Missionary: PowerShell'in Linux sürümünü yükleyebildiğiniz sürece sadece ps1 scriptlerine ihtiyacınız var, sh scripti yok. Yorumu: 1 Kısacası, bash'in sadece sözdizimi var, komutları ve kütüphaneleri yok. 2 bash'in sadece %1 sözdizimi fonksiyonu var, PowerShell bunu uygulayamıyor. Bu normaldir, dünyada hiçbir yaprak tamamen aynı değildir. Bu da sadece ps1 scriptine ihtiyacınız olduğu anlamına gelir, shsh yok. 3 bas çok eski, aynı işlev, Powershell uygulanabilir ve ayrıca zaman kazandırabilir, örneğin 10.000 boş for, Powershell ise zamanın %90'ını korumalı. 4 /usr/bin/bash yerine /usr/bin/powershell kullanmayı öğrenin. Diğer Linux komutları, pipeline, eski kung fu vb. bash'daki gibi tamamen aynı şekilde kullanılır. 5 Beyin yakan Linux komutları yerine nesne odaklı, basit ve güçlü PowerShell komutları ve kütüphanelerini yavaş yavaş kullanın, ya da her ikisini de kullanın. ---Bu genel ilke, genel taslak.
S: Hangi Linux sürümleri PowerShell'i yükleyebilir? A: ◦Ubuntu 14.04 / 16.04 ◦CentOS/RHEL 7 ve üzeri ◦SUSE 42 ve üzerini aç ◦Arch Linux (archl inux'un sürüm numarası yoktur) ◦LINUX docker konteyneri ◦Linux AppImage konteyneri (taşınabilir uygulama tek ikili kart) https://github.com/probonopd/AppImageKit
S: Win'in komut satırının Linux'tan daha güçlü olduğu neden söylenir? A: 1 win'deki komutlar nesne yönelimli PowerShell'e evrilmiştir. Linux henüz çalışmıyor. win7'den win2012r2'ye geçiş sona erer.
2 Eskiden Unix'in birçok Linux komutu olduğunu ve çok güçlü olduğunu duymuştum. Ama şimdi size söylüyorum ki, powershell komutları Linux komutlarından en az on kat daha fazla. Neyse, zaten hayatım boyunca öğrenemedim.
3 Linux daha çok grafiğe bağımlıdır ve çok az komut içerir. Ve win command sadece Linux'tan çok daha fazlası. 3.1 Herhangi bir Linux'ta, posta sunucusundaki komutlar Exchange'den daha eksiktir mi? Değişimden daha mı kullanışlı mı? 3.2 Linux'un DNS sunucu bağlaması, win'in DNS komutu kadar kullanışlı değildir. Bind'in bir alan adına ipv4 A kaydı eklemek için [komutu] var mı? Henüz web grafiklerine bağlı değil mi? Bazı insanlar nsupdate kullanmamı söylüyor. Bu, bir metin yapıp sonra metni çalıştırmakla ilgili değil. [DNS zone dosyası]'nı sed ile değiştirmek ile [DNS zone]'u yeniden yüklemek arasındaki fark nedir?
4 Win'in yeni versiyonunda veya powershell'de hepsi [komut + parametre] olur. Ve Linux'un çoğu hâlâ [sed metni]. 4.1 Örneğin ağ kartına atanan IP adresini ele alalım. nmcli bağlantı add type ethernet con-name NEW_STATIC ifname eno1234567 ip4 192.168.1.111 gw4 192.168.1.1, ifcfg-eth0 dosyasını kazımak için sed kullanmaktan daha pratik değil mi?
5 Her dil veriyi işler, script de öyle. Nesnelerin yardımıyla, PowerShell awk'tan daha kullanışlıdır. Shenma csv, excel, xml, json SQL tablosu, nosql tablosu. html vb.
S: PowerShell [sed -i "s/ne ararmalı//g ile değiştirilmeli" dosya adı]nı nasıl uygular? A: @(Get-Content dosya adı) -'aaa','bbb' yerine | Set-Content dosya adı $aaa Yani, dosyayı açın, değiştirin, dosyayı kaydedin.
S: Linux'ta neden giderek daha az kişi SED kullanıyor? A: Argüman 1: AWK, SED'nin yerini alabilir, ancak SED, AWK'nin yerini alamaz. sed, yani sadece ikame bulmak. AWK, karmaşık işleme uygulamak için benzeri yöntemlere sahiptir.
Argüman 2: AWK standart normal kullanır ve sed'in düzenliliği sed'in düzenlisi ile aynıdır, ancak bölümler farklıdır. SED öğrenmek, beyindeki iki uyumsuz normal standart setinin birbirleriyle savaştığı anlamına gelir.
S: Yani AWK öğrenmek doğru mu? A: PowerShell öğrenmek, AWK öğrenmekten daha kolaydır. PowerShell [split and then split], [if ve if], where-object, string.substing(), string[-3] vb. kullanır. Dizi problemini katman katman ayırın. Normal gark olmaktan daha basit.
S: PowerShell'de pipelines ve AWK kullanılabilir mi? A: PowerShell'de awk çağırabilirsiniz, Bash'teki gibi aynı. Eski dövüş sanatları tamamen Torino'dur.
S: PowerShell'de [awk '{print $3}'] fonksiyonu nasıl uygulanır? A: ($line -split "\s+|\t+") [0] #第一行 ($line -split "\s+|\t+") [2] #第三行
Mutlaka Bulun /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'
S: [awk -f a.awk file] fonksiyonunu PowerShell kullanarak nasıl uygulayabilirim? A: Temelde, bu bir boru kullanan bir filtreleme fonksiyonudur. PowerShell'de buna filtre veya filtre denir. PowerShell, komut + boru + filtre kombinasyonunu destekler. Komuta 1 | Filtre 1 | Komuta 2 | Filtre 2 | Filtre 3 filtre1 filtre
{ AWK benzeri işlevsellik
}
S: PowerShell'de [xargs] var mı? A: Boru hattında kullanılan boru değişkeni [$psitem] olarak adlandırılır ve takma adı [$_]'dir. PowerShell, xargs fonksiyonunu uygulamak için foreach-object ve $_ kullanır.
S: PowerShell'de [<] [<<] numarası var mı? A: Hayır. Belki de sağdan sola doğru [<] sembol insan karşıtı düşüncedir. PowerShell'deki birçok komut soldan sağa değiştirildi. Eğer get-random < (1..100) PowerShell'de yasal değilse, yasal olan get-random -inputobject (1..100) veya 1 olmalıdır. 100 |rastgele Garip komutların %1'inden azı [<] sembolüne dayanmalıdır; bu da PowerShell'de cmd çağrılarak veya PowerShell'de bash (Linux için PowerShell) çağırarak gerçekleştirilebilir. Örneğin, $a = bash -x "komut 1 < komut 2" #linux Örneğin, $a = cmd -c "komut 1 < komut 2" #cmd
S: PowerShell'de bir expect komutu var mı? Win'den bir Linux SSH sunucusuna PowerShell ile nasıl bağlanır? A: 1. Evet. Bazı garip ve kısmi kapı tepki ihtiyaçları için üçüncü taraf modüller var. 2 Hayır. PowerShell bekleme komutunu kullanmaz, ancak bir oturum kullanır.
Powershell + SSH istemci kütüphanesi + IP + port + kullanıcı adı + şifre kullanarak bir bağlantıyı birleştirip bu bağlantıya komutlar gönderin. Kod şöyledir: $connection 1 = Yeni-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credential aaaa #将提示输入密码 $to return = Çağırma-SSHCommand -Komut {cat /etc/issue} -SSHSession $Connection 1
Bu standart işlevsellik, örneğin (MongoDB, mysql, ssh, ftp, http, telnet vb.) sürücüler veya modüller içerir. ps ve. .netprogram, sürücü bağlantısı üzerinden komutlar gönderir ve veri kabul eder. [Veri] göndermek ve almak için modüller veya sürücüler kullanmanın faydaları şunlardır: Veriler .net nesnesine dönüştürülecek, o da PS nesnesine dönüştürülecek. Aksi takdirde, hepsi ipler ve PS tarikatının [nesne yönelimli dövüş sanatları] tamamen işe yaramaz.
MongoDB'yi örnek alarak, komut göndermek için modüller veya sürücüler kullanmanın avantajları nelerdir? Kim konuşuyor? Faydaların şunlar olduğunu düşünüyorum: 1 Çok Parçacıklı Bağlantı. Arka plan iş parçacığı çalışır ve mevcut iş parçacığı işgal etmez. 2. Oturumdan istediğimiz zaman [yarı yolda bağlantıyı kesebiliriz], diğer PS kodlarını, fonksiyonlarını çalıştırabilir ve [oturuma istediğimiz zaman geri dönebiliriz]. Scriptler yazılması daha esnek ve hata ayıklamak kolay. 3session birden fazla kullanıcı getiriyor ve farklı kullanıcıların farklı sunucu izinleri olabilir.
S: Powershell'de su, runas komutu var mı? PowerShell ile başka bir kullanıcının komutunu nasıl çalıştırır? A: Hayır. PowerShell'de Linux yerel komutlarını ve boru hatlarını çalıştırmak zahmetsizdir. Örneğin: Şşaaa@127.0.0.1"Kullanıcı AAA ayrıcalıklarıyla çalıştırıldı, xxx komutu" sshpass -p user_password sshaaa@192.168.1.1
S: SSHD'li iki Linux makinesi mi? PowerShell ile komutları nasıl bağlayıp gönderir? A: Yukarıdaki yönteme ek olarak, yeni bir Linux oturumu oluşturma yöntemini de kullanabilirsiniz. (Linux'tan başka bir SSHD'ye bağlandı) Not: Bu yöntem /etc/ssh/sshd_config dosyasının düzenlenmesini gerektirir. Aşağıdaki satırı ekleyin Alt sistem powershell powershell -sshs -NoLogo -NoProfile Bundan sonra SSHD sunucusunu yeniden başlatın. Detaylı kullanım kılavuzu burada:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting
Komut: $connect 2 = New-PSSession -HostName 127.0.0.1 -UserName user006 #手动输入密码或用-KeyFilePath seçeneği invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}
Özet: Win istemcisi, Linux sunucusuna bağlı. Şu anda üçüncü taraf modüller zorunlu, tabii ki bu resmi kütüphanedeki bir modül, sadece kurulum modülü PoshSSH kullanın. Linux istemcisi, Linux sunucusuna bağlı. /etc/ssh/sshd_config dosyasını düzenlemen gerekiyor. Linux istemcisi, Win sunucusuna bağlı. Hizmeti sunucuda açmanız gerekiyor. İstemcideki sunucuya güvenin. Win istemcisi, Win sunucusuna bağlı. Hizmeti sunucuda açmanız gerekiyor. İstemcideki sunucuya güvenin.
S: PowerShell'de [grep] var mı? A: Select-string komutu powershell'de kullanılır. Sadece kodlama açısından bakıldığında, select-string=smart, grep=stupid + sert bir kusura sahip :mrgreen: Bir BOM başlığı olduğunda, select-string dosya kodlama tipini otomatik olarak tanır. BOM başlığı olmadığında, linux+grep gibi shell ortamını değiştirmeye gerek yoktur ve belirli bir koda göre dosya kaydetmeye gerek yoktur. Sadece -encoding parametresini dosya kodlamasına göre belirtmeniz yeterlidir. Ve grep bu fonksiyona sahip değil, yani [dosya kodlama tipini belirtemiyor] şeklinde sert bir kusur var. Tabii ki, grep işe yaramaz değildir, grep bazı parametrelere sahiptir, ek benzersiz fonksiyonları vardır, select-string yoktur, burada grep select-string'den daha güçlüdür.
S: PowerShell'de bir [değerlendirme] var mı? A: PowerShell'de dizileri çalıştırmak için Invoke-Expression kullanın.
S: PowerShell'de bir -f kuyruğu var mı? Bir dosyanın yeni oluşturulan satırlarını gerçek zamanlı olarak çıkarmak mümkündür. A: Yetinme D:\a.txt -Kuyruk 10 -Okuma Sayısı 0 -Bekle
S: Küçük bir klavye kullanmak istiyorum ve ayrıca 256 renkli bir terminal istiyorum, peki xshell nasıl kurulmalı? A: Terminal --- Terminal Tipi --- [macun-256color] veya [export TERM=putty-256color] Terminal --- Klavye --- varsayılan veya Linux.
Eterm-256color gnome-256color çalışmıyor konsole-256color çalışmıyor Putty-256color PowerShell Missionary Orijinal Paylaşım 2017-02-15 RXVT-256COLOR çalışmıyor screen-256color çalışmıyor ST-256COLOR VTE-256COLOR çalışmıyor xterm-256color çalışmıyor Aynı ilke SecureCRT için de geçerlidir
S: Kabuk mu yoksa python mu daha güçlü? A: Her birinin kendine özgü güçlü yönleri vardır ve birbirini tamamlayabilir. Ama bunlar tamamlayıcı değiller. Bunun hakkında aşağıda daha fazla bilgi var.
S: PowerShell'in Linux versiyonu, işletim ve bakım personeli için neden daha uygun komut yazıyor? (Linux versiyonu olan Python ile karşılaştırıldığında) A: 1 Python, nesne yönelimli fonksiyonlara sahiptir ve PowerShell'in Linux versiyonu mevcuttur.
2 Python'da komut satırı yok. 2.1 Python SSH için varsayılan terminal olamaz, ancak Linux için PowerShell olabilir. Bölüme bakınız: "SSHD ile iki Linux Makinesi? PowerShell ile komutları nasıl bağlayıp gönderir? 》 2.2 Python'da shell komutlarını (awk, grep vb.) kullanmak oldukça zahmetli. Bolca py sözdizimi ve kod eklemem gerekiyor. Linux için PowerShell, bash gibi awk komutlarını çalıştırıyor.
3 Python'da boru yok. n [komut satırı programı] arasında değer aktarmak çok zahmetlidir. Bolca py sözdizimi ve kod eklemem gerekiyor. PowerShell'in Linux versiyonunda pipeline var ve awk komutlarını çalıştırmak bash ile aynı.
4 Python'un 2. sürümü var, sürüm 3 kanser ile uyumlu değil! Soru. PowerShell for Linux böyle bir sorun yaşamıyor. 4.1 Bu sorular kodlama problemleri içerir.
Sonuç: GREP gibi shell komutları kodlama desteği için iyi değil, evde PowerShell'deki yukarıdaki 4.1 kodlama sorunları kadar iyi değil. Üstelik yukarıdaki 2,3 puan. Linux kullanıcılarını rahatsız ediyor, ama çok az kişi py'da harici komutlar kullanıyor. [py komut kütüphanesi] ve [shell komut] öldü ve neredeyse birbirini tamamlayamaz. PS'nin Linux versiyonu farklıdır.
S: Powershell'in Shell'den daha iyi olduğu neden söylenir? A: 1 PowerShell nesne odaklıdır ve özellikler doğrudan erişilebilir verileri döndürür. Bu, dize çıkarımı gerektiren karakter betik dillerine (bat, shell) kıyasla çok daha az yaygındır. Daha az [kaçması gereken içerik] ile doğmuşum. 2 String arama yerine geçme, PowerShell'de .NET sınıfında kaçış gerektirmeyen yöntemler vardır. Örneğin: [string]$a = 'abc\\def' $b = $a.replace('\\','ne zaman') #返回: [ABC tam olarak savunma] Bir IP'nin meşru olup olmadığını belirlemek için IPAddress sınıfında TryParse() yöntemini kullanabilirsiniz. Kısacası, önerim mümkün olduğunca çok .net yöntemi kullanmak, mümkün olduğunca az regex kullanmak ya da sadece basit düzenli yöntemler kullanmak. 3 PowerShell, ['] kaçış sembolü olarak kullanır. ['], [\]'ye göre daha az kullanılır ve kaçış sembolü olarak çok daha az kullanılır. 3.1 Veritabanı scriptleri yazarken, ['] ile daha fazla çatışma yaşanır. Örneğin, ['table'] ['t] ile çelişir, örneğin ['biao'] ['b] ile çelişir ve ben daha sonra ['table'] ile çözdüm. 4 ps dizi arama ve değiştirme, normal bir motora sahip, Linux ile uyumludur ve kaçış olarak [\] kullanır. Ancak, önce kaçıp sonra bulunup yerine getirilen özel bir dizi kaçış fonksiyonu [[Regex]:::Escape()] vardır ve kod oldukça okunabilirdir. $Original escape öncesi dizi = '\+\&*|]' $escaped string = [regex]::escape($original dizisi escaping) ------------- Yazı örnekleri [string]$a = 'abc\\def' $Original kaçışdan önceki diziye = '\' $Escaped Dizisi = [regex]::Escape($Original Escape'den önceki dizide) #[\]--->[\\] $b = [Regex]::replace($a,$Escaped String, 'ne zaman') $b #返回 [ABC Dangdang DEF] ------------- 5 bash ve awk, her birinin kendi kaçış yolu var, her birinin kendi kaçış yolu var. Birleştiğinde, A'nın B'yi etkilemesi kolaydır ve A'nın B'yi yutması kolaydır. Ayrıca ['], ["], [\] ve [*] ile karşılaşıldığında sorun yaşanmak da kolaydır. İki kat uzun pantolon giymek gibi, bir katmanı çekiyorsunuz, diğer katman da hareket ediyor, uyumları konusunda endişelenmeniz gerekiyor. Bu bir kanser ve çözülmesi zor. Ama sıkıştırmak gerekirse, bu sorun da belli bir ölçüde önlenebilir. Bu, kabuğu yazan kişinin kötü kokan sorunu düzeltmesini gerektirir. [Awk kodunu .awk dosyasına ayrı koy, komut satırına değil] PowerShell'de bu sorun yok, komut satırına koy, scripte ekle, hiçbir etkisi yok.
|