Güç kalkanı? Onu kullanır mısın? Bana onunla yapabileceğim harika sistem yönetimi şeyleri gösterebilir misin? [kapalı]


45

PowerShell'in geleceğin yolu olduğunu her yerde okumaya devam ediyorum . İlk piyasaya sürüldüğünde bir sürü sanal laboratuar yaptım, ancak o zamandan beri hala bir üretim ortamında kullanmadım. Zaten kurulu olduğu işletim sistemleri ile uğraşırken günün geleceğini biliyorum, bu yüzden hazır olmak istiyorum.

Bilmek istiyorum:

  1. Onu kullanır mısın?
  2. PowerShell kullanmak için 'bootstrapping' işleminiz nelerdi?
  3. Ne tür bir sistem yönetimi görevini yazdınız?
  4. Ben bir SQL Server veritabanı yöneticisiyim. Bununla yapmak için harika şeyler nelerdir?

Herkesin Microsoft'un bunu zorladığını kabul ettiği anlaşılıyor, ancak henüz kimse bunu kullanmıyor. Orada her gün görev yapmak ve bazı kod örneklerini paylaşmak için kullanan sistem yöneticilerinden duymak istiyorum.


JScript öldü mü?
Sophie Alpert

7
Bir dahaki sefere yanıltıcı başlıkları ile trol olmayın.
Jaykul

Belki bunun nedeni bazen keşke jscript gibi ortadan kalkmasını diliyorum . Sadece ben miyim yoksa çok çirkin mi?
Nick Kavadias

Yanıtlar:


34

Microsoft, PowerShell'i her yerde güçlü kullanıcı ve otomasyon yazarı seçimi yapmak için elinden geleni yapıyor. Aynı şeyi yapmak için .NET'te kod derleme günleri artık geride kaldı, şimdi sadece notepad.exe ve google'a ihtiyacınız var. Ofisteki büyük hayranlarıyız, özellikle Exchange 2007'nin Yönetim Konsolu PowerShell'de yapabileceğiniz her şeyi İÇERMEdiğinden. Microsoft kasıtlı olarak, uzun bir süre sonra sadece bir kez yapılan şeyleri uygulamada başarısız oldu, bu şekilde geliştirmek daha kolaydı;

Microsoft'un yeni nesil ürünlerini yönetme (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) hepsi çok zengin PowerShell kancalarına sahiptir. Remote Powershell (PowerShell 2.0 IIRC), Server 2008 R2 ile konuşlandırıldığında, otomasyon yazarları için daha da faydalı olacak.

Bununla ne yaptık:

  • Bazı yönetici görevlerini yardım masası kullanıcılarına devretmek için bir web sayfası oluşturun. Web sayfası, PowerShell'de yürütülen komutları atar. Yaptığı şeyler:
    • Exchange 2007 posta kutularını ve giriş dizinlerini sağlama dahil olmak üzere kullanıcı hesapları oluşturun ve silin
    • Kilitli hesapların kilidini açar
    • Grup oluştur / sil
    • Kullanıcıları gruplara ekle / kaldır
    • Kullanıcıları posta depoları arasında taşı
    • Şifreleri ayarla
  • ERP sisteminden alıntılar alın ve global-adres defteri verilerini her gece Active Directory'ye aktarın.
  • Exchange 2003'ten Exchange 2007'ye geçişi tamamlayan LegacyExchangeDN sorununu çözün. Exchange 2003'teki herkese bir X500 adresi eklemek zorunda kaldı. Oldukça kısa bir PowerShell betiği sorunu çözdü.
  • "Grup posta kutularının" (birden fazla kullanıcının posta kutusuna erişebildiği Exchange'deki paylaşılan posta kutuları) komut dosyasıyla oluşturulması, başlamadan önce ihtiyaç duyduğumuz verilerin niteliği nedeniyle el ile yapılan bir işlemdir. Bu posta kutularının kurulumunu büyük ölçüde standartlaştırdı.
  • Belirli bir kayıt defteri anahtarını sıfırlayan ve bir hizmeti yeniden başlatan tüm etkilenen makinelerde dolaşan bir komut dosyası oluşturuldu. Tamamlanması 18 saat sürdü, ancak işi tamamladı.

Yani evet, PowerShell uzunca bir süre bizimle birlikte olacak.

EDIT : İstendiğinden beri bir kod örneği ekleme

$ Liste = ithalat CSV ( "groupusers.csv")
$ Lastseengroup = $ liste [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{redacted - biçiminde, ou = gruplar, dc = etki alanı, dc = etki alanı, dc = etki alanı}"
Değişkenleri Temizle üye listesi
Clear-Variable bilinmeyen kullanıcılar
foreach ($ listesindeki $ girişi) {
    if ($ ($ entry.group) -ne $ lastseengroup) {
        echo "$ lastseengroup'ta değişiklik yapan yeni grupta $ ($ entry.group) rastladı"
        $ Newgroup = $ ADgroupPrefix + $ lastseengroup
        $ Newgroupdn = ' " '+ "cn = $ newgroup $ ADGroupSuffix" +'"'
        echo "$ newgroup için DN alma"
        $ existinggroup = dsquery grubu domainroot -name $ newgroup
        if (($ var olan grup-bir $ boş)) {
            dsmod group $ newgroupdn -chmbr $ üye listesi
        } Başka {
            dsadd grubu $ newgroupdn -scope u -secgrp evet -members $ memberlist -desc "eDirectory'den içe aktarılan grup"
        }
        Değişkenleri Temizle üye listesi
    }
    $ Kullanıcı = kullanıcı-kullanıcı $ ($ entry.member) -ErrorAction SilentlyContinue
    if ($ User.isvalid) {
        $ KullanıcıDN = $ User.distinguishedname
        $ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
    } Başka {
        $ Unknownusers = $ unknownusers + $ ($ entry.member)
    }
    $ Lastseengroup = $ ($ entry.group)

}
dsadd grubu "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist

Bu, perl betiğiyle oluşturulan bir CSV dosyasını alır ve bir grup grubu günceller. Grup zaten mevcutsa, üyeliği dosyada belirtilenle değiştirir. Grup mevcut değilse, onu oluşturur. Bu tek yönlü bir senkronizasyondur. Ayrıca, değil oldukça üretimde henüz ama yakındır.


6
uzak güç kablosu! ssh gibi demek istiyorsun? zaman hakkında!
Nick Kavadias

2
Bir web sitesinden powershell scriptlerini nasıl çalıştırıyorsunuz, powershell scriptlerini web programlama dili olarak kullanıyor musunuz? powershellASP kullanıyor musunuz? komut dosyalarınızı IIS kullanıcısı olarak mı kullanıyorsunuz?
quentin

17

Microsoft'un sunucu ürünlerinin en başından itibaren PowerShell etkin olacağı göz önüne alındığında (Exchange'in bir sonraki sürümünün PowerShell aracılığıyla tüm yapılandırmasına sahip olduğuna inanıyorum ) ve Uygulamada PowerShell gibi kitapların , aksi takdirde monoton görevleri otomatikleştirmek için bazı harika yollar tanımladığını düşünüyorum. PowerShell’in bir süredir Windows serverland’da yaygın bir teknoloji olacağını öne sürmek makul.


Bu kitap hala beta aşamasında / yazılıyor
Nick Kavadias

Evet, öyle - ama yine de şimdi satın alabilir ve içeriğe erken erişebilirsiniz. Ve orada bir sürü sunucu-bakım malzemesi var :)
moobaa

4
Exchange, Exchange 2007'den beri tüm PowerShell'dir. OCS, bir sonraki sürümünde tamamen PowerShell özellikli olacaktır; System Center ürünlerinin çoğu ya tam olarak destekliyor ya da bir sonraki sürümlerinde olacak. PowerShell hiçbir yere gitmiyor.
paulr

12

Scott Hanselman'ın Podcast # 162'sini öneririm . Tüm Microsoft sunucu ekipleri PowerShell cmdlet'leri sağlamaya ve aynı zamanda tek bir tutarlı sözdizimi izlemeye zorlanıyor gibi görünüyor.

Ayrıca, VMWare gibi üçüncü taraflar da benimsiyor

Kısacası, 2.0 ile başlayan PowerShell'in toplu iş dosyalarını en önemsiz görevler yerine değiştirme işinde ciddi olduğuna inanıyorum.


10

On PowerShell komutları Bir SQL Server veritabanı yöneticisi olarak kullanmak (tüm anlatılmıştır / yayınlanan bloguma ):

  1. Tüm SQL Sunucularındaki disk alanını kontrol edin ve verileri bir SQL tablosuna yükleyin
  2. Tüm üretim SQL Sunucularında izin raporlarını çalıştırın ve verileri bir SQL veritabanına yükleyin
  3. Ağdaki tüm Windows Server 2003 kümelerini, düğümlerini ve sanallarını keşfedin ve SQL tablolarına yükleyin
  4. SCCM'de tanımlandığı şekilde tüm SQL Sunucularındaki tüm veritabanlarını keşfedin ve bir SQL tablosuna yükleyin
  5. Tüm SQL Sunucuları üzerinden bir SQL tablosuna yedekleme bilgisi yükleyerek bir SQL Server yedek puan kartı oluşturun
  6. TCP Boşaltma Motorunun Windows Server 2003 SP2'de devre dışı olduğunu doğrulayın (bu, birçok SQL Sunucusu için bir performans katilidir).
  7. Disk Bölümü hizalamalarını doğrulayın (diskler düzgün şekilde hizalanmazsa performans katili)
  8. SQL tablolarını bir sunucudan diğerine kopyala
  9. Recursivley , klasör yapısı da dahil olmak üzere, bir MSDB Depolama Birimi kullanarak bir sunucudan diğerine tüm SSIS paketlerini kopyalar.
  10. Kendi grafik nesne bağımlılık görüntüleyicimi yarat

8

Hangi tür yönetici görevlerini bununla yazdınız?

uygulama / servis izleme: (uzak) EventLog ve Stored Prosedürlerinden önemli performans numaralarını alın ve bunları tek bir toplu iş dosyasından görüntüleyin

Ben bir SQL Server DBA'yım, bana bununla bir şeyler yapabileceğimi göster.

automssqlbackup : MSSQL için rotasyonlu günlük yedekleme (günlük = artan, haftalık + aylık = dolu; 5 günlük tutma, 5 haftalık yedekleme), sıkıştırma, e-posta bildirimi


Tüm MSSQL yedekleme işlemini otomatikleştirmek için +1.
Andrei Rînea

Evet ... Powershell, SQL Server'da karmaşık yedekleri otomatikleştirmek için saf bir altındır. Saatlik yedeklemeleri ziplemek
Greg Bray

7

Önceki bir kariyerde unix shell scriptleri kullandıktan sonra windows server yönetimine geçtim, gerçekten, gerçekten powershell'i takdir ettiğimi söyleyebilirim - çok fazla arcane sözdizimi öğrenmek için zamanım veya kabiliyetim yok ve hoş bir sürpriz oldu. powershell scriptleri çok basit bir dille yazılabilir ... ksh için alışkın olduğum şeyi al!

Bunun uzun süre civarında olacağını tahmin ediyorum.


7

Bunun harika olduğunu düşündüm: SQL Server 2008 ile, yerel dosya sisteminizde veya kayıt defterinizde olduğu gibi SQL veritabanlarında gezinmenizi sağlayan yeni PowerShell uzantılarına sahip olursunuz.

SQL Server İstemci araçlarını kurduktan sonra herhangi bir veritabanını PowerShell'de açabilir (sağ tıklama bağlam menüsü ile) ve onunla nesne yönelimli bir şekilde oynatabilirsiniz:

PS SQLSERVER:\SQL\MyServer\MyInstance\Databases\ExampleDB\>function prompt {"PS >"}
PS >cd tables
PS >dir

SCHEMA          NAME         CREATED
------          ----         -------
dbo             MyTable      25/06/2009 17:02

PS > dir | format-table name, columns, rowcount, parent

NAME            COLUMNS      ROWCOUNT      PARENT
----            -------      --------      ------
MyTable         {Id, Name}   0             {ExampleDB}

PS >$myTable = dir | where {$_.Name -eq "MyTable"}
PS >$myTable.Script()

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[MyTable](
[Id] [int] IDENTITY(1,1) NOT NULL
[Name] [nText] NOT NULL
) ON [PRIMARY]

PS >set-location \SQL\AnotherServer\Default
PS >cd databases\Northwind\tables
PS >$myTables = dir | where {$_.Rowcount -gt 100 -and $_.HasIndex -eq 1}
PS >$myTables.Count

8

PS >foreach ($table in $tables) {$table.RebuildIndexes(90)}

İlk satırın sadece istemi değiştirdiğini ve böylece uzun sürmeyeceğini unutmayın.

Umarım bunun dışında burada neler olup bittiğini açıkça belli olur :)


+1 Vay, bu oldukça faydalı. Teşekkürler!
jftuga

5

SQL Server 2008 artık Management Studio'da PowerShell içerik seçeneklerine sahiptir, bu yüzden Exchange onu kucaklıyor. Ayrıca, bunun DOS'un yerine geçmesi olarak düşünün, çünkü bu, MS'in geriye dönük uyumluluk sorunları için DOS güvenliğini geliştiremediği için ne düşündüğüdür, bu yüzden sadece yeni bir şey yarattılar, sorun çözüldü!


4

Ben de bir DBA'yım ve uzun süredir scripter, DOS toplu iş dosyalarına geri dönüyorum, V3.3! VB Script'e taşındı, ancak PS çok güçlü. Şuna bir bak - Maalesef, yeni bir kullanıcı olduğum için bağlantıyı gönderemiyorum. Bunu Otto Helweg'in Blog'undan aldım. Ucuz ve neşeli bir yazılım envanter aracıdır.

  • 1- Sorgulanacak bilgisayarların listesini veritabanı tablosundan çeker.
  • 2- Geçerli veriyi ve süreyi sonuca ekler.
  • 3- Denetim sonuçlarını veri tabanına kaydeder.

Örnek PowerShell betiği:

# Open the database connection
$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

# Get all known computers
$sqlQuery.CommandText = "select * from Inventory..Computers"
$reader = $sqlQuery.ExecuteReader()
$computersToQuery = @()
while ($reader.Read()) {
   $computersToQuery += $reader["Computer"]
}

# Close the database connection
$dbConn.Close()

$softwareInventory = @{}
foreach ($computer in $computersToQuery) {
   $psinfoOutput = ./psinfo.exe -s Applications \\$computer

   $foundSoftwareInventory = 0
   $computerName = ""
   foreach ($item in $psinfoOutput) {
      if ($foundSoftwareInventory -eq 1) {
         # Force the results to a string
         # Remove any single quotes which interfere with T-SQL statements
         # Load the result into a hash whereby removing any duplicates
         [string]$softwareInventory[$computerName][$item.Replace("'","")] = ""
      }

      if ($item -like "System information for *") {
         $computerName = $item.Split("\")[2].TrimEnd(":")
      } elseif ($item -eq "Applications:") {
         $foundSoftwareInventory = 1
         $softwareInventory[$computerName] = @{}
      }
   }
}

$dbConn = new-object System.Data.SqlClient.SqlConnection "server=kcdb;database=Inventory;Integrated Security=sspi"
$dbConn.Open()
$sqlQuery = $dbConn.CreateCommand()

foreach ($computer in $softwareInventory.Keys) {
   foreach ($softwareItem in $softwareInventory[$computer].Keys) {
      "Loading-" + $computer + ":" + $softwareItem

      # Try an Update then an Insert 
      trap {
         $sqlQuery.CommandText = "update Inventory..SoftwareInventory set AuditDate = getdate() where  Computer = '" + $computer + "' and Software = '" + $softwareItem + "'"
         $result = $sqlQuery.ExecuteNonQuery()
         continue
      }

      $sqlQuery.CommandText = "insert into Inventory..SoftwareInventory (Computer,Software,AuditDate) values ('" + $computer + "','" + $softwareItem + "',getdate())"
      $result = $sqlQuery.ExecuteNonQuery()
   }
}

$dbConn.Close()

Dave J


3

Aşağıdaki görevler ekibim tarafından PowerShell ile düzenli olarak yapılmaktadır.

  • Hyper-V kümelerimizin tüm düğümlerindeki kullanılabilir belleği listeler.
  • Bir Netapp dosyasını yönetme
  • Yeni Hyper-V Sanal Makineleri sağlama
  • Program aracılığıyla SharePoint listelerine yaz ve oku

Günden güne, her zaman bir PS istemim var ve CMD'yi kullandığım herhangi bir kapalı görevde kullanıyorum.

İşte Sharepoint Listelerini okumak için bazı kod örnekleri. PowerShell V2.0'daki Sharepoint'ten ve yeni "New-WebServiceProxy" cmdlet'inden web servisleri kullanıyorum

$url = "http://server/sites/site/_vti_bin/lists.asmx"
$listWebService = new-webServiceProxy -uri $url -UseDefaultCredential
$listName = "MyList"
$viewGuid = $null
$query= $null
$viewFields = $null
$numRowsReturned = 20000
$queryOptions = $null
$result = $listWebService.GetListItems($listName,$ViewGuid,$query,$viewFields,$numRowsReturned,$queryOptions,$null)

Oisin Grehan, tüm işlevlerimi oluşturmak için üs olarak kullandığım Sharepoint Web Services'i kullanmak konusunda harika bir blog yazısına sahip . Evens, hala PowerShell V1 kullanıyorsanız kullanabileceğiniz harika bir new-webservice.ps1 komut dosyasına sahiptir.

Ayrıca, kümemdeki düğümlerdeki kullanılabilir belleği almak için kullandığım temel işlev burada

Function Get-AvailableMemory {
param
(
[string[]]
$servers
)
BEGIN {
$query = "select AvailableBytes,__SERVER from Win32_PerfRawData_PerfOS_Memory"

$availableMemory = @{
                    Name="AvailableMemory";
                    Expression = {[math]::round($_.AvailableBytes/1gb,2)}
                    }
$serverName = @{  
                Name ="Server";
                Expression = {$_."__SERVER"}                                      
               }
}
PROCESS {
foreach ($server in $servers){
    get-wmiobject -query $query -computer $server |
    select-object $availableMemory, $serverName
    }
}

END {}    

}

Paylaşmak istediğiniz herhangi bir örnek kod var mı? Özellikle SharePoint listelerini okumak ve yazmakla ilgileniyorum.
Brian,

2

İşyerinde küçük bir proje için PowerShell'i denedim - CSV benzeri dosyalar kullanan kurumsal AD'den ~ 600 kullanıcı ve ~ 200 gruba sahip bir alt kümenin günlük bir göçünü . Tek bir grubu ve kullanıcılarını başlangıç ​​noktası olarak belirleyen 500 satırlık bir VBScript komut dosyası (!) Teklif edildi.

~ 20 satırlık bir PowerShell betiğinin her şeyi yapabileceği ortaya çıktı ...

Bir * NIX kullanıcısı olarak (sunucu ve müşteri tarafı), PowerShell ile çok hoş bir şekilde şaşırdım. Sadece küçük bir komut alt grubu bilseniz bile, onunla gerçekten güçlü çalışmalar yapabilirsiniz. Sadece SSH (benzeri) uzaktan erişime ihtiyacım var ...


arama psremoting
Sam

1

Nasıl kullanamam? Çıkan / yükseltilen tüm Microsoft sunucu uygulamaları artık Powershell kullanılarak yönetiliyor. Daha fazla ya da daha az sinir bozucu UI / Yönetim Konsolu daha sonra, genellikle köpeğin yavaş olduğu ve birisinin de belirttiği gibi, mevcut özelliklerden yoksun olan bu çekirdeğin üzerine inşa edilmiş olarak sunuluyor ... ^


Meclislerinizi düzenlemek ve tüm powershell tabanlı konsollarınızı hızlandırmak için bu küçük powershell betiğini inceleyin: msexchangeteam.com/archive/2008/08/01/449426.aspx
Jesse Weigert

1

Powershell mükemmel değildir, ancak kullandıysanız oldukça iyi olduğunu bilirsiniz. Tüm .net kütüphanesine ve dahili cmdlet'lere erişime sahip olmak (ve 2.0'da PS kullanarak kendi cmdlet'inizi oluşturun), bu oldukça harika.

Eksik olduğunu düşündüğüm tek şey, bir gün MS'ten geleceğinden emin olduğum için iyi bir IDE. Şu anda Idera'nın powershell plus ve hata ayıklamaya izin veren ve oldukça havalı olan adminscripteditor kullanıyorum.

Kendimi VB'den oldukça iyi mahrum bırakabildim.

Posh ile bugüne kadarki en büyük projem powershell komutlarını çalıştıran ve vmware ana bilgisayarını ve VM bilgilerini bir düzineden fazla VMWare ESXi (ücretsiz) ana bilgisayarımdan çeken ve HTML tablolarında görüntüleyen temel bir web sayfası oluşturmak için "powershellASP" kullanmak. Bunu yaptım çünkü ücretsiz VMWare ESXi ve sanal merkez olmadan, şirketteki tüm VM'lerimin gerçek zamanlı incelemesini almanın başka bir yolu yoktu. PowershellASP, IIS için yazılmış ve MS tarafından desteklenmeyen ücretsiz bir üçüncü taraf ayrıştırıcıdır. Bu yüzden şu anda bazı sınırlı şeyler yapabilir ve belgeler oldukça seyrek.


PowerGUI var ve powergui içinde ScriptEditor.exe kullanıyor, onsuz nasıl yaşayabileceğimi hayal edemiyorum ...
Nicolas Dorier

Powershell 2, mükemmel bir Powershell ISE (Integrated Script Editor) içerir. CTP 3 mevcut, RTM şu an civarında, Ekim 2009’da son sürüm.
Precipitous

1

AD'de farklı şeyleri araştıran ve WMI üzerinden sunucudaki paylaşımlar, disk alanı, kullanılmış disk alanı vb. Gibi hayati istatistikler için sorgulayan çok sayıda yönetim / envanter komut dosyası var.

Genel Scriptler:

  1. Ücretsiz / kullanılmış disk alanı, RAM vb.
  2. BIOS bilgileri, sunucu markası modeli vb. İçin Sorgu WMI
  3. AV sürümünü kontrol edin ve belirli kayıt defteri girişlerinin olduğundan emin olun.
  4. Windows Sunucularında Denetim Payları

Kullanıcı Scriptleri:

  1. Tüm kullanıcıları kapan AD'yi ve hangi gruplara ait olduklarını sonra Excel'e veya CSV'ye yazmayı numaralandırın
  2. Şu anda oturum açmış kullanıcıları TS üzerinden ve konsolda bulun

ESX sunucularımdaki tüm VMWare misafir makinelerini sıralayan bir tane var

X gün sonra dosyaları kapmak ve güvenli bir şekilde silen bir komut dosyası var.

Temelde yaklaşık 200 satır VBScript'in ne yaptığını yapabilirim ve bunu 10 PowerShell'de yapabilirim. Ayrıca VBScript'te yapamayacağınız veya yapamayacağınız şeyleri de yapabilirsiniz - ekleri içeren e-postalar göndermek gibi - ki betiğimin sonuçlarını düzenli olarak bana gönderirim. Ayrıca, özel servis adları ve Olay Kimlikleri ile olay günlüğüne anlamlı ve benzersiz girişler yazabilirsiniz.

Kafamın üstünden düşünebildiğim bu. Seçim aracım artık PowerShell, hayatı kolaylaştırıyor.

Temelde, bir sistem yöneticisi için Bash komut dosyası bir Unix yöneticisinde olduğu kadar faydalıdır.


0

Müşteri toplu komut dosyalarımızı değiştirmek için poweshell'e bakıyordum - çalışan programlar, oturum açma komut dosyaları vb.

Ancak, oturum açma süresine en az 10 saniye eklediğini - buradaki tüm "tweaks" ların olduğunu buldu. Yani ne kullanıyorduk ile kalıyorum sona erdi.


Dünyadaki en hızlı şey değil ama hemen her şeyi yapabilir. Tek yapmanız gereken birkaç sürücüyü eşlemekse, toplu komut dosyaları daha hızlıdır.
sysadmin1138

0

.NET geliştiricisi olmamakla birlikte, PS'nin size izin verdiği tüm .NET ile ilgili güzellikler için sınırlı kullanımım var. Bununla birlikte, bir Exchange yöneticisi olarak (diğer şeylerin yanı sıra), Exchange 2007 için PowerShell entegrasyonu harikadır. Sonunda posta sistemim için güvenilir bir komut dosyası altyapısı var; Şimdiye kadar, bana herkesin posta kutularında aylık istatistikler göndermesini sağladım, günün hangi saatine bağlı olarak çeşitli e-posta adreslerinin atandığını ayarlayarak, ortak klasörler ve yük dengeleme kullanıcılarına otomatik olarak iki posta posta kutusu DB'lerimiz arasında izinler oluşturup atadım . Ex07 bakış açısından diğer harika şey, GUI'de bir şey yaptıktan sonra, yaptığınız şey için ilgili PowerShell komutlarını size sunmasıdır. Bunları kopyalayın; sonunda Exchange ortamınızı sıfırdan yeniden oluşturabilen bir dizi PS komut dosyası alacaksınız.


0

Çalıştığım yerdeki sunucu kontrolleriyle bazı şeyleri otomatikleştirmek (WMI'dan temel bilgileri toplamak ve olay günlüklerinden hatalar ve uyarılar toplamak).

Olay Günlüklerinin yönetimi harika.

Geçenlerde, Foxit Reader'ın varsayılan olarak komut dosyasının çalıştığı bir etki alanında etkinleştirdiği otomatik güncelleme açılır penceresini devre dışı bırakmak için bir komut dosyası yazdım. AD'den bilgisayarların bir listesini çıkarır, daha sonra yukarı olup olmadığını görmek için test eder, ardından 1'den 0'a değişir.

Unuttuğum bir şey var!

.NET kitaplıklarına tam olarak erişebiliyorsunuz. Gerçekten karmaşık şeyler yapmak biraz acı ama biraz ihtiyaç duyarsan senin için orada.


0

Çoğu Microsoft mağazası olan epeyce yönetici görevleri için kullanıyoruz. Bazı komut dosyaları, eski dosyaları temizlemek veya makineleri birleştirmek ve sonuçları kaydetmek gibi basittir. Bir komut dosyası, çoğunlukla WMI kullanarak bilgisayarları denetler ve sonuçları bir veritabanına kaydeder. Donanım (CPU, RAM, sürücüler vb.), Ağ bilgileri, yerel kullanıcılar, yüklü yazılımlar ve profil bilgileri gibi şeyler alır. E-posta göndermek için bir web servisini çağıran bir tane var. Gelecekte , halen kullanılmakta olan VBScript kodlarının geri kalanının yerini alacağını düşünüyorum . Henüz Exchange veya SQL Server görevleri için kullanmıyoruz.

Arkaplan işleri, işlemler, daha iyi istisna işleme, yeni bir İMKB (Integrated Scripting Environment), daha iyi hata ayıklama vb. Desteği olacak bir sonraki sürümü dört gözle bekliyorum.


0

Windows yöneticilerim henüz PowerShell kullanmıyor. Hepsi bunu duydular, ancak tanımak için zaman harcamamışlar.

Ona kendim bakmaya karar verdim. Bir Unix kabuk arkaplanından geliyorsanız, Windows'un nihayet gerçek bir kabuk programlama ortamına sahip olması gerektiğini düşündüm. Microsoft'un PowerShell ile bazı şeyleri iyi yaptığını ve bazı şeylerin pek iyi olmadığını düşünüyorum.

İyi tarafta PowerShell'deki nesneler cmdlet'ler arasında aracı olarak kullanılmasıdır. Bu, PowerShell'e metin tabanlı komut dizisinin işe yaraması için kesmek zorunda olduğu bir güç seviyesi getiriyor.

Olumsuz tarafta, Unix kabuk komutlarının çoğundan gerçekten yararlanmıyorlar. Bu yüzden öğrenme eğrisi gereksiz yere diktir ve insanların Unix'ten PowerShell'e veya tam tersine kolayca hareket etmesine yardımcı olmaz. Yaptıkları en PowerShell bazı gibi cmdletler için diğer adlar tanımlamak olduğu ls örtüşme Get-ChildItem komut satırı farklı olmak şalteri tüm.

Sadece iki sentim...


0

Bu bir geliştirici cevabından daha fazlasıdır, fakat gerçek dünyadır ve bunu önümüzdeki birkaç ay içinde bir noktada test etmeye başlayacağız. SQL Server görevlerini sürekli entegrasyon ortamımıza getirmek için komut dosyaları yazmak için PowerShell'i öğrenmeye başladım . Sürekli entegrasyon komut dosyaları öncelikle NAnt ve MSBuild tarafından JetBrains TeamCity aracılığıyla çalıştırılacak .

Buna ek olarak, genel amaçlı ve özellikle de SQL Server veritabanı yönetimi görevleri için birincil Windows komut kabuğum olarak PowerShell'e geçmeyi düşünüyorum.

Üzgünüz, paylaşacak kod örneğim yok, çünkü hala öğreniyorum! Yine de yaptığımda bazılarını göndermekten mutlu olacağım :)

İşte sizinkiyle başka bir sorunuzu yanıtladığım tek satırlı bir kod örneği :) Ama hey, wiki için ...

Bu yüklü düzeltmeleri listeler:

Get-ChildItem -Path HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix

powershell için yaşasın, bir 2003 sunucuya varsayılan olarak yüklü değil çok kötü. Kayıt yeri olsa da yardımcı oldu!
Nick Kavadias

0

O (farz borularla katı deneyim) almak için en kolay script dili değildir ve tuhaflıklar kendi kaldıraç olsa da (bana vermek basit sed -like zımbırtı !!), ben PowerShell oldukça güçlü bulabilirsiniz. Değil seviyesine kadar Bash hala veya diğer Unix kabukları, ancak.

Bazı veritabanı ihracatlarını ve ithalatlarını, bazı şeylerin ters gitmesi durumunda e-posta uyarılarıyla denetlemek ve rutin toplu işlemler yapmak için kullanıyorum.

Bu kesinlikle benim birincil Windows kabuğumdur, gerçekte "daha az yaz, daha az iş yap" gibi bir şey değildir. PowerShell, kendisine karşı oynadığı ayrıntılı (ve .NET mirasına) sahiptir.


0

PowerShell sürüm 1.0, birçok yönden oldukça sınırlıydı, ancak sürüm 2.0 güzel bir şekilde geliyor. Toplu komut dosyaları ile karşılaştırıldığında, çok daha güçlü. Gerçekten sadece komut dosyaları için bir kabuk olarak kullanmıyorum, bu yüzden deneyimim buna göre renklendiriyor. Sözdizimi gerçekten sevmiyorum ( -eqvs ==, -gtvs >, vs.), ancak garip bir şey yapmam gerekiyorsa .NET'e girebildiğimi takdir ediyorum . Bence sürüm 3.0 ile harika olacak. Şu anda sıkıca "işi halleder" kategorisine koyardım.

Ben esas olarak kod dağıtımını otomatikleştirmek için kullanıyorum. Burası C # 'da bir şeyler yarattığı için parladığı bir alan. Özyinelemeli dizin kopyası ve Bash komut dosyalarının yıllardır verdiği diğer şeyler gibi kabukla ilgili işlemler işleri çok daha kolaylaştırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.