Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
PowerShell'i öğrenmeye başladığımda başlangıçta basit PowerShell komutları için çok karmaşık görünen görevler için Grafik Kullanıcı Arabirimi'ni (GUI) kullandım. Ancak öğrenmeye devam ettikçe becerilerimi geliştirdim ve temel tek satırdan betikler, işlevler ve modüller oluşturmaya geçtim. Çevrimiçi gelişmiş örnekler karşısında bunalmış hissetmenin normal olduğunu unutmamak önemlidir. Kimse PowerShell'de uzman olarak başlamaz; hepimiz yeni başlayanlar olarak başlarız.
Yönetim görevleri için öncelikli olarak GUI kullananlar için, sunucularınızı uzaktan yönetmek için yönetim iş istasyonunuza yönetim araçlarını yükleyin. Sunucunuz ister GUI ister Sunucu Çekirdeği işletim sistemi yüklemesi kullanıyor olsun, bu yaklaşım yararlıdır. PowerShell ile yönetim görevlerini gerçekleştirme hazırlığında uzak sunucu yönetimi hakkında bilgi edinmenin pratik bir yoludur.
Önceki bölümlerde olduğu gibi bu kavramları laboratuvar ortamınızda deneyin.
Tek Cümlelik Espriler
PowerShell tek satırlık bir komutla kesintisiz bir işlem hattıdır. Bir komutun fiziksel olarak tek bir satırda yer almasının, PowerShell'de tek satırlık bir komut olduğu yaygın bir yanılgıdır, ancak bu her zaman doğru değildir.
Örneğin, aşağıdaki örneği göz önünde bulundurun: komut birden çok fiziksel satırın üzerine uzanır, ancak sürekli bir işlem hattı oluşturduğu için bir PowerShell tek satırlık komuttur. Okunabilirliği ve netliği artırmak için, bir PowerShell tek satır komutunu, doğal bir kesme noktası olan pipe sembolünde bölmek önerilir. Satır sonlarının bu stratejik kullanımı, işlem hattının akışını kesintiye uğratmadan okunabilirliği artırır.
Get-Service |
Where-Object CanPauseAndContinue -EQ $true |
Select-Object -Property *
Name : LanmanWorkstation
RequiredServices : {NSI, MRxSmb20, Bowser}
CanPauseAndContinue : True
CanShutdown : False
CanStop : True
DisplayName : Workstation
DependentServices : {SessionEnv, Netlogon}
MachineName : .
ServiceName : LanmanWorkstation
ServicesDependedOn : {NSI, MRxSmb20, Bowser}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Automatic
Site :
Container :
Name : Netlogon
RequiredServices : {LanmanWorkstation}
CanPauseAndContinue : True
CanShutdown : False
CanStop : True
DisplayName : Netlogon
DependentServices : {}
MachineName : .
ServiceName : Netlogon
ServicesDependedOn : {LanmanWorkstation}
ServiceHandle :
Status : Running
ServiceType : Win32ShareProcess
StartType : Automatic
Site :
Container :
Name : vmicheartbeat
RequiredServices : {}
CanPauseAndContinue : True
CanShutdown : False
CanStop : True
DisplayName : Hyper-V Heartbeat Service
DependentServices : {}
MachineName : .
ServiceName : vmicheartbeat
ServicesDependedOn : {}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Manual
Site :
Container :
Name : vmickvpexchange
RequiredServices : {}
CanPauseAndContinue : True
CanShutdown : False
CanStop : True
DisplayName : Hyper-V Data Exchange Service
DependentServices : {}
MachineName : .
ServiceName : vmickvpexchange
ServicesDependedOn : {}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Manual
Site :
Container :
Name : vmicrdv
RequiredServices : {}
CanPauseAndContinue : True
CanShutdown : False
CanStop : True
DisplayName : Hyper-V Remote Desktop Virtualization Service
DependentServices : {}
MachineName : .
ServiceName : vmicrdv
ServicesDependedOn : {}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Manual
Site :
Container :
Name : vmicshutdown
RequiredServices : {}
CanPauseAndContinue : True
CanShutdown : False
CanStop : True
DisplayName : Hyper-V Guest Shutdown Service
DependentServices : {}
MachineName : .
ServiceName : vmicshutdown
ServicesDependedOn : {}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Manual
Site :
Container :
Name : vmicvss
RequiredServices : {}
CanPauseAndContinue : True
CanShutdown : False
CanStop : True
DisplayName : Hyper-V Volume Shadow Copy Requestor
DependentServices : {}
MachineName : .
ServiceName : vmicvss
ServicesDependedOn : {}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Manual
Site :
Container :
Name : webthreatdefsvc
RequiredServices : {RpcSs, wtd}
CanPauseAndContinue : True
CanShutdown : True
CanStop : True
DisplayName : Web Threat Defense Service
DependentServices : {}
MachineName : .
ServiceName : webthreatdefsvc
ServicesDependedOn : {RpcSs, wtd}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Manual
Site :
Container :
Name : webthreatdefusersvc_644de
RequiredServices : {}
CanPauseAndContinue : True
CanShutdown : True
CanStop : True
DisplayName : Web Threat Defense User Service_644de
DependentServices : {}
MachineName : .
ServiceName : webthreatdefusersvc_644de
ServicesDependedOn : {}
ServiceHandle :
Status : Running
ServiceType : 240
StartType : Automatic
Site :
Container :
Name : Winmgmt
RequiredServices : {RPCSS}
CanPauseAndContinue : True
CanShutdown : True
CanStop : True
DisplayName : Windows Management Instrumentation
DependentServices : {}
MachineName : .
ServiceName : Winmgmt
ServicesDependedOn : {RPCSS}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Automatic
Site :
Container :
Doğal satır sonları virgül (,) ve açılış köşeli parantezleri ([), küme ayraçları ({) ve parantez (() gibi yaygın olarak kullanılan karakterlerde oluşabilir. Bu kadar yaygın olmayan diğer semboller noktalı virgül (;), eşittir işareti (=) ve hem tek hem de çift tırnak açma işareti (',") içerir.
Satır devamı olarak ters tırnak (`) veya vurgu karakterinin kullanılması tartışmalıdır. Mümkünse bundan kaçınmak en iyisidir. Doğal bir satır sonu karakterinin ardından ters eğik işareti kullanmak yaygın bir hatadır. Bu yedeklilik gereksizdir ve kodu karmaşık hale gelebilir.
Aşağıdaki örnekteki komutlar PowerShell konsolundan doğru şekilde yürütülür. Ancak, bunları PowerShell Tümleşik Betik Ortamı'nın (ISE) konsol bölmesinde çalıştırma girişimi bir hatayla sonuçlanır. Bu fark, PowerShell konsolundan farklı olarak ISE'nin konsol bölmesinin bir komutun sonraki satıra devamını otomatik olarak tahmin etmemesi nedeniyle oluşur. Bir komutu birden çok satıra genişletmeniz gerektiğinde ISE konsol bölmesinde,
Get-Service -Name w32time |
Select-Object -Property *
Name : w32time
RequiredServices : {}
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
DisplayName : Windows Time
DependentServices : {}
MachineName : .
ServiceName : w32time
ServicesDependedOn : {}
ServiceHandle :
Status : Running
ServiceType : Win32OwnProcess, Win32ShareProcess
StartType : Manual
Site :
Container :
Bu sonraki örnek, tek ve kesintisiz bir PowerShell veri hattı olmadığı için tek satırlı olarak değerlendirilemez. Bunun yerine, noktalı virgülle ayrılmış olarak tek bir satıra yerleştirilmiş iki ayrı komut vardır. Bu noktalı virgül, bir komutun sonunu ve diğerinin başlangıcını gösterir.
$Service = 'w32time'; Get-Service -Name $Service
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
Birçok programlama ve betik dili, her satırın sonunda noktalı virgül gerektirir. Ancak PowerShell'de satırların sonundaki noktalı virgüller gereksizdir ve önerilmez. Daha temiz ve daha okunabilir kodlar için bu kodlardan kaçınmanız gerekir.
Sola Filtrele
Bu bölümde çeşitli komutların sonuçlarının nasıl filtreleneceği gösterilmektedir.
PowerShell'de sonuçları işlem hattında mümkün olan en erken şekilde filtrelemek en iyi yöntemdir. Bunu başarmak, genellikle işlem hattının başındaki ilk komutta parametreleri kullanarak filtre uygulamayı içerir. Bu genellikle sol filtreleme olarak adlandırılır.
Bu kavramı göstermek için aşağıdaki örneği göz önünde bulundurun: Get-Service parametresini kullanarak işlem hattının başındaki sonuçları filtreleyin ve yalnızca Windows Saat hizmetinin ayrıntılarını döndürin. Bu yöntem, verimli veri alımını gösterir ve yalnızca gerekli ve ilgili bilgileri döndürmenizi sağlar.
Get-Service -Name w32time
Status Name DisplayName
------ ---- -----------
Running w32time Windows Time
PowerShell komutunun sonuçlarını filtrelemek için Where-Object cmdlet'ine yöneltildiği çevrimiçi örnekleri görmek yaygındır. İşlem hattındaki önceki bir komutun filtrelemeyi gerçekleştirmek için bir parametresi varsa bu teknik verimsizdir.
Get-Service | Where-Object Name -EQ w32time
Status Name DisplayName
------ ---- -----------
Running W32Time Windows Time
İlk örnek, doğrudan kaynakta filtrelemeyi gösterir ve sonuçları özellikle Windows Saat hizmeti için döndürür. Buna karşılık, ikinci örnek tüm hizmetleri alır ve ardından sonuçları filtrelemek için başka bir komut kullanır. Bu küçük ölçekli senaryolarda önemsiz görünebilir, ancak Active Directory gibi büyük bir veri kümesini içeren bir durumu göz önünde bulundurun. Binlerce kullanıcı hesabının detaylarını toplamak ve yalnızca küçük bir alt kümeye daraltmak verimsiz bir süreçtir. Görünüşte önemsiz durumlarda bile sol filtreleme uygulaması yapın — filtreleri komut dizisinde mümkün olduğunca erken uygulayın. Bu alışkanlık, daha önemli hale geldiği daha karmaşık senaryolarda verimliliği sağlar.
Etkili filtreleme için komut sıralaması
PowerShell'deki komutların sırasının önemsiz olduğu yanlış bir algı vardır, ancak bu bir yanlış anlamadır. Özellikle filtreleme sırasında komutları yerleştirdiğiniz sıra önemlidir. Örneğin, belirli özellikleri seçmek için Select-Object'ı ve filtrelemek için Where-Object'i kullandığınızı varsayalım. Bu durumda, önce filtrelemenin uygulanması önemlidir. Bunun başarısız olması, işlem hattında filtreleme için gerekli özelliklerin kullanılamayabileceği ve bu da etkisiz veya hatalı sonuçlara yol açabileceği anlamına gelir.
CanPauseAndContinue özelliği Select-Object, Where-Object'a yönlendirildiğinde olmadığından, aşağıdaki örnek sonuç üretemiyor. Bunun nedeni CanPauseAndContinue özelliğinin Select-Objecttarafından yapılan seçime dahil olmamasıdır. Etkili bir şekilde dışlanır veya filtrelenir.
Get-Service |
Select-Object -Property DisplayName, Running, Status |
Where-Object CanPauseAndContinue
Select-Object ve Where-Object sırasını tersine çevirme, istenen sonuçları üretir.
Get-Service |
Where-Object CanPauseAndContinue |
Select-Object -Property DisplayName, Status
DisplayName Status
----------- ------
Workstation Running
Netlogon Running
Hyper-V Heartbeat Service Running
Hyper-V Data Exchange Service Running
Hyper-V Remote Desktop Virtualization Service Running
Hyper-V Guest Shutdown Service Running
Hyper-V Volume Shadow Copy Requestor Running
Web Threat Defense Service Running
Web Threat Defense User Service_644de Running
Windows Management Instrumentation Running
Boru Hattı
Bu kitaptaki birçok örnekte görüldüğü gibi, genellikle bir komutun çıkışını başka bir komut için giriş olarak kullanabilirsiniz. Bölüm 3'te, bir komutun ürettiği nesne türünü belirlemek için Get-Member kullanıldı.
3. Bölüm, hangi komutların bu tür girişleri kabul ettiğini belirlemek için 'nin Get-Command parametresinin nasıl kullanılacağını da gösterdi. Bir komuta yönelik yardımın kapsamına bağlı olarak, bir INPUTS ve OUTPUTS bölümü içerebilir.
INPUTS bölümü, ServiceController veya String nesnesini Stop-Service cmdlet'ine aktarabileceğinizi gösterir.
help Stop-Service -Full
Yardımın ilgili bölümünü göstermek için aşağıdaki çıktı kısaltılmıştır.
...
INPUTS
System.ServiceProcess.ServiceController
You can pipe a service object to this cmdlet.
System.String
You can pipe a string that contains the name of a service to this
cmdlet.
OUTPUTS
None
By default, this cmdlet returns no output.
System.ServiceProcess.ServiceController
When you use the PassThru parameter, this cmdlet returns a
ServiceController object representing the service.
...
Ancak, hangi parametrelerin bu tür girişi kabul ettiği belirtilmez.
Stop-Service cmdlet'i için yardımın tam sürümündeki farklı parametreleri denetleyerek bu bilgileri belirleyebilirsiniz.
help Stop-Service -Full
Bir kez daha, aşağıdaki sonuçlarda yalnızca ilgili yardım gösterilir.
DisplayName parametresinin işlem hattı girişini kabul etmediğinden dikkat edin.
InputObject parametresi, ServiceController nesneleri için değere göre işlem hattı girişini kabul eder. Name parametresi,
...
-DisplayName <System.String[]>
Specifies the display names of the services to stop. Wildcard
characters are permitted.
Required? true
Position? named
Default value None
Accept pipeline input? False
Accept wildcard characters? true
-InputObject <System.ServiceProcess.ServiceController[]>
Specifies ServiceController objects that represent the services to
stop. Enter a variable that contains the objects, or type a command
or expression that gets the objects.
Required? true
Position? 0
Default value None
Accept pipeline input? True (ByValue)
Accept wildcard characters? false
-Name <System.String[]>
Specifies the service names of the services to stop. Wildcard
characters are permitted.
Required? true
Position? 0
Default value None
Accept pipeline input? True (ByPropertyName, ByValue)
Accept wildcard characters? true
...
İşlem hattı girişini işlerken, hem özellik adına göre hem de değere göre işlem hattı girişini kabul eden bir parametre, önce değere göre bağlamaya önceliklendirir. Bu yöntem başarısız olursa, işlem hattı girdisiniözellik adına göre işlemeye çalışır. Ancak değer göre
Örneğin, ServiceController nesnesi oluşturan bir komutun çıkışını Stop-Service'a aktarırsanız, bu çıkış InputObject parametresine bağlıdır. Kanallı komut bir String nesnesi oluşturursa, çıkışı Name parametresiyle ilişkilendirir.
ServiceController veya String nesnesi üretmeyen, ancak Nameadlı bir özellik içeren bir komuttan çıkış gönderirseniz, Stop-ServiceName özelliğinin değerini Name parametresine bağlar.
Get-Service komutunun ürettiği çıkış türünü belirleyin.
Get-Service -Name w32time | Get-Member
Get-Service bir ServiceController nesne türü oluşturur.
TypeName: System.ServiceProcess.ServiceController
Stop-Service cmdlet'i için yardımda gösterildiği gibi, InputObject parametresi, işlem hattı üzerinden ,değerine sahip ServiceController nesnelerini kabul eder.
Get-Service cmdlet'inin çıkışını Stop-Service'e aktardığınızda, tarafından üretilen Get-Service nesneleri, 'nin Stop-Service parametresine bağlanır.
Get-Service -Name w32time | Stop-Service
Şimdi dize girişini deneyin.
w32time'dan Get-Member'e bir dize olduğunu doğrulamak için yönlendirin.
'w32time' | Get-Member
TypeName: System.String
PowerShell yardım belgelerinde, bir dizeyi w32time'den Stop-Service'e yönlendirin. Bu örnekte, Stop-Service durdurulacak hizmetin adı olarak w32time dizesini nasıl işlediği gösterilmektedir. Bu bağlamayı ve komut yürütmeyi uygulamada gözlemlemek için aşağıdaki komutu yürütür.
'w32time' tek tırnak içine alınmış olduğuna dikkat edin. PowerShell'de, dizelerin genişletme gerektiren değişkenler içerdiği durumlarda çift tırnak, statik dizeler için ise tek tırnak kullanmak en iyi uygulamadır. Tek tırnak işaretleri, PowerShell'e içeriği değişkenler için ayrıştırma yapmadan tam olarak ele almasını söyler. PowerShell tek tırnak içindeki dizelerde daha az işlem çabası gösterdiğinden, bu yaklaşım betiğinizin dizeyi yorumlama biçiminin doğruluğunu sağlamakla kalmaz, aynı zamanda performansı da iyileştirir.
'w32time' | Stop-Service
'nin Stop-Service parametresinin özellik adına göre işlem hattı girişini test etmek için özel bir nesne oluşturun.
$customObject = [pscustomobject]@{
Name = 'w32time'
}
CustomObject değişkeninin içeriği bir PSCustomObject nesne türüdür ve Nameadlı bir özellik içerir.
$customObject | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Name NoteProperty string Name=w32time
PowerShell'de bu örnekteki $customObject gibi değişkenlerle çalışırken, değişkeni tırnak içine almanız gerekiyorsa çift tırnak kullanmanız önemlidir. Çift tırnaklar değişkenlerin genişletilmesine olanak tanır; PowerShell değişkeni değerlendirir ve değerini kullanır. Örneğin, $customObject'ı çift tırnak içine alıp Get-Member'e yönlendirirseniz, PowerShell $customObjectdeğerini işler. Buna karşılık, tek tırnak işareti kullanıldığında, değişkenin değeri değil, sabit dize $customObject, Get-Memberile gönderilir. Bu ayrım, değişkenlerin değerini değerlendirmeniz gereken senaryolar için önemlidir.
$customObjectNameadlı bir özellik içeren bir nesne olmasıdır. Bu senaryoda PowerShell, içindeki $customObject özelliğini tanımlar ve değerini Stop-Service parametresi için kullanır.
Servicegibi farklı bir özellik adı kullanarak başka bir özel nesne oluşturun.
$customObject = [pscustomobject]@{
Service = 'w32time'
}
w32time hizmeti, $customObjectStop-Service'ye yönlendirilerek durdurulmaya çalışılırken bir hata oluştu.
$customObject, bir ServiceController veya String nesnesi oluşturmadığı ve bir Name özelliği içermediği için, işlem hattı bağlaması başarısız olur.
$customObject | Stop-Service
Stop-Service : Cannot find any service with service name
'@{Service=w32time}'.
At line:1 char:17
+ $customObject | Stop-Service
+ ~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (@{Service=w32time}:String) [
Stop-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShe
ll.Commands.StopServiceCommand
Bir komutun çıkış özellik adları başka bir komutun işlem hattı giriş gereksinimleriyle eşleşmediğinde, özellik adlarını yeniden adlandırmak için Select-Object kullanarak doğru şekilde sıralanabilir.
Aşağıdaki örnekte, Select-Object özelliğini Nameadlı bir özelliğe yeniden adlandırmak için kullanın.
İlk bakışta, bu örneğin söz dizimi karmaşık görünebilir. Ancak, söz dizimini öğrenmek için kod kopyalama ve yapıştırmadan daha fazlasının gerekli olduğunu anlamak önemlidir. Bunun yerine, kodu el ile yazmak için zaman ayırın. Bu uygulamalı pratik, söz dizimini hatırlamanıza yardımcı olur ve tekrarlanan çaba gösterildikçe daha sezgisel hale gelir. Birden çok monitör veya bölünmüş ekran kullanmak da öğrenme sürecine yardımcı olabilir. Örnek kodu bir ekranda görüntülerken, diğerinde aktif olarak yazın ve onunla deney yapın. Bu kurulum, izlemeyi kolaylaştırır ve söz dizimini anlamanızı ve saklamanızı artırır.
$customObject |
Select-Object -Property @{Name='Name';Expression={$_.Service}} |
Stop-Service
İşlem hattı girişini kabul etmeyen bir parametre kullanmanız gerekebilecek örnekler vardır. Bu gibi durumlarda, bir komutun çıkışını başka bir komutun girişi olarak kullanmaya devam edebilirsiniz. İlk olarak, belirli birkaç Windows hizmetinin görünen adlarını alın ve bir metin dosyasına kaydedin. Bu adım, kaydedilen verileri başka bir komut için giriş olarak kullanmanıza olanak tanır.
'Background Intelligent Transfer Service', 'Windows Time' |
Out-File -FilePath $env:TEMP\services.txt
Bir komutun çıkışını parametrenin girişi olarak başka bir komuta geçirmek için parantez kullanabilirsiniz.
Stop-Service -DisplayName (Get-Content -Path $env:TEMP\services.txt)
Bu kavram, Cebir'deki işlemlerin sırası gibidir. Parantez içindeki matematiksel işlemlerin önce hesaplandığı gibi, parantez içine alınmış komut da dış komut öncesinde yürütülür.
PowerShellGet
PowerShell sürüm 5.0 ve üzeri sürümlerle birlikte sunulan bir modül olan PowerShellGet
PowerShell Galerisi, Microsoft tarafından barındırılan ve PowerShell modüllerini, betiklerini ve diğer kaynakları paylaşmak için merkezi bir merkez olarak tasarlanmış bir çevrimiçi depodur. Microsoft, PowerShell Galerisi'ni barındırırken, PowerShell topluluğu kullanılabilir modüllerin ve betiklerin çoğuna katkıda bulunur. Bu modüllerin ve betiklerin kaynağı göz önüne alındığında, PowerShell Galerisi'nden herhangi bir kodu ortamınıza tümleştirmeden önce dikkatli olun. Yalıtılmış bir test ortamında PowerShell Galerisi'nden indirmeleri gözden geçirin ve test edin. Bu işlem, kodun güvenli ve güvenilir olmasını sağlar, beklendiği gibi çalışır ve ortamınızı kaldırılmamış koddan kaynaklanan olası sorunlardan veya güvenlik açıklarından korur.
Birçok kuruluş kendi iç, özel NuGet deposunu kurmayı tercih eder. Bu depo çift amaçlıdır. İlk olarak, şirket içinde geliştirilen ve yalnızca dahili kullanıma yönelik modülleri depolamak için güvenli bir konum görevi görür. İkinci olarak, genel depolardan gelenler de dahil olmak üzere dışarıdan alınan modüllerin ayrıntılı bir koleksiyonunu sağlar. Şirketler genellikle bu dış modülleri iç depoya eklemeden önce kapsamlı bir doğrulama süreci üstleniyor. Bu süreç, modüllerin kötü amaçlı içerikten arındırıldığından ve şirketin güvenlik ve operasyonel standartlarıyla uyumlu olduğundan emin olmak için önemlidir.
Find-Module modülünün parçası olan cmdlet'ini kullanarak, benim yazdığım MrToolkitadlı bir modülü PowerShell Galerisi'nde bulun.
Find-Module -Name MrToolkit
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to
interact with NuGet-based repositories. The NuGet provider must be available
in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\mikefrobbins\AppData\Local\PackageManagement\ProviderAssemblies'.
You can also install the NuGet provider by running 'Install-PackageProvider
-Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to
install and import the NuGet provider now?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
Version Name Repository Description
------- ---- ---------- -----------
1.3 MrToolkit PSGallery Misc PowerShell Tools
PowerShellGet modülündeki komutlardan birini ilk kez kullandığınızda NuGet sağlayıcısını yüklemeniz istenir.
MrToolkit modülünü yüklemek için, önceki komutu Install-Moduleöğesine aktarın.
Find-Module -Name MrToolkit | Install-Module -Scope CurrentUser
Untrusted repository
You are installing the modules from an untrusted repository. If you trust
this repository, change its InstallationPolicy value by running the
Set-PSRepository cmdlet. Are you sure you want to install the modules from
'https://www.powershellgallery.com/api/v2'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "N"):y
PowerShell Galerisi güvenilmeyen bir depo olduğundan modülün yüklenmesini onaylamanızı ister.
İşlem hattı girişini kolayca bulma
MrToolkit modülü Get-MrPipelineInputadlı bir işlev içerir. Bu cmdlet, kullanıcılara işlem hattı girişini kabul edebilen bir komutun parametrelerini tanımlamak için uygun bir yöntem sunmak üzere tasarlanmıştır. Özellikle, üç önemli yönü ortaya çıkar:
- Bir komutun hangi parametreleri işlem hattı girdisi alabilir?
- Her parametrenin kabul edilen nesne türü
- İşlem hattı girişini değere veya özellik adına göre kabul edip etmediklerini
Bu özellik, PowerShell komutlarının işlem hattı özelliklerini anlama ve kullanma sürecini önemli ölçüde basitleştirir.
Daha önce yardım belgeleri analiz edilerek elde edilen bilgiler bu işlev kullanılarak belirlenebilir.
Get-MrPipelineInput -Name Stop-Service | Format-List
ParameterName : InputObject
ParameterType : System.ServiceProcess.ServiceController[]
ValueFromPipeline : True
ValueFromPipelineByPropertyName : False
ParameterName : Name
ParameterType : System.String[]
ValueFromPipeline : True
ValueFromPipelineByPropertyName : True
Özet
Bu bölümde PowerShell tek satırlık komutların karmaşıklıklarını öğrendiniz. Ayrıca, bir komutun fiziksel satır sayısının PowerShell tek satırlı sınıflandırmasıyla ilgisiz olduğunu da öğrendinsiniz. Ayrıca sola filtreleme, işlem hattı ve PowerShellGetgibi temel kavramlar hakkında bilgi edindiniz.
Eleştiri
- PowerShell 'tek satırlı' nedir?
- PowerShell'de doğal çizgi sonlarının oluşabileceği bazı karakterler nelerdir?
- Neden sola filtre uygulamalısınız?
- PowerShell komutunun işlem hattı girişini kabul etmenin iki yolu nelerdir?
- PowerShell Galerisi'nde bulunan komutlara neden güvenmemelisiniz?
Kaynaklar
- about_Pipelines
- Komut_Sözdizimi_Hakkında
- parametreler_hakkında
- PowerShellGet'i : PowerShell modüllerini bulmanın, yüklemenin ve güncelleştirmenin BÜYÜK KOLAY yolu
Sonraki adımlar
5. Bölümde biçimlendirme, diğer adlar, sağlayıcılar ve karşılaştırma işleçleri hakkında bilgi edineceksiniz.
PowerShell