Bir süre önce izlediğim 2019 tarihli bir Powershell DevOps Global Summit videosunda konuşan Chris Gardner kısaca yanlış yapılan bazı şeylerden bahsetmiş. Aşağıda özetlemeye çalıştım.
Array kullanımı konusunda
Kötü
$array = @()
foreach ($user in $userlist) {
$array += [PSCustomObject]@{
UserName = $user.Name
Email = $User.SamAccountName + "@domain.com"
}
}
İyi
$array = foreach ($user in $userlist) {
[PSCustomObject]@{
UserName = $user.Name
Email = $User.SamAccountName + "@domain.com"
}
}
Hatta ArrayList de kullanmayın, Generic List kullanın diyor:
$array = [System.Collections.Generic.List[PSObject]]::New()
foreach ($user in $userlist) {
$array.add([PSCustomObject]@{
UserName = $user.Name
Email = $User.SamAccountName + "@domain.com"
})
}
Kötü
0..(($array.count)-1) | % {
Get-Something -Parameter ($array[$_])
}
İyi
foreach ($item in $array) {
Get-Something -Parameter $item
}
Kurulu programların listesi için WMI (ki aslında CIM eşdeğerleri kullanılmalı, ama onlar bile yavaş) yerine Registry okuması yapmak lazım diyor.
Kötü
Get-CimInstance -Class Win32_Product
İyi
Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall |
Get-ItemProperty |
Select-Object DisplayName
Tam olarak aynı şeyleri vermiyorlar bu arada, ama CIM yöntemi daha hızlı.
Hiç yorum yok:
Yorum Gönder