パワーシェル?使いますか?私にできることをいくつか教えてくれますか?[閉まっている]


45

PowerShellが未来への道であることを随所に読み続けています。最初にリリースされたとき、私はたくさんのバーチャルラボを行いましたが、それ以来、実稼働環境では使用していません。OSが既にインストールされているOSを扱う日が来ることはわかっているので、準備を整えたいと思います。

私は知りたいです:

  1. 使いますか?
  2. PowerShellを使用するための「ブートストラップ」プロセスは何ですか?
  3. どのようなシステム管理タスクでスクリプトを作成しましたか?
  4. 私はSQL Serverデータベース管理者です。それに関係するクールなことは何ですか?

マイクロソフトがこれを一生懸命に推進していることに誰もが同意しているようですが、実際にはまだ誰も使用していません。私は毎日のタスクを実行し、いくつかのコードサンプルを共有するためにそれを使用しているシステム管理者から話を聞きたいです。


JScriptは死んでいますか?
ソフィーアルパート

7
次回、誤解を招く見出しでトロルにならないようにしてください。
ジェイクール09年

たぶん、jscriptのように消えることを望むからです。それは私だけですか、それとも非常にくて冗長ですか?
ニックカバディアス09年

回答:


34

マイクロソフトは、PowerShellをあらゆる場所のパワーユーザーとオートメーションライターの選択肢にするために、できる限りのことを行っています。同じことをするために.NETでコードをコンパイルする時代は終わりました。今はnotepad.exeとgoogleだけが必要です。特にExchange 2007の管理コンソールにはPowerShellで実行できるすべての機能が含まれていないため、私たちはオフィスで大ファンです。マイクロソフトは、たまに一度しか行わないことを意図的に実装しなかったため、そのように開発するのが簡単でした。

Microsoftの新世代製品(Win7、Windows Server 2008、Exchange 2007/2010、SQL Server 2008)の管理には、すべて非常に豊富なPowerShellフックがあります。リモートPowershell(PowerShell 2.0 IIRC)がServer 2008 R2で展開されると、オートメーションライターにとってさらに便利になります。

私たちがそれでやったこと:

  • 特定の管理タスクをヘルプデスクユーザーに委任するためのWebページを作成します。Webページは、PowerShellで実行されるコマンドを起動します。それがすること:
    • Exchange 2007メールボックスとホームディレクトリのプロビジョニングを含む、ユーザーアカウントの作成と削除
    • ロックアウトされたアカウントのロックを解除します
    • グループの作成/削除
    • グループからユーザーを追加/削除する
    • メールストア間でユーザーを移動する
    • パスワードを設定する
  • ERPシステムから抽出物を取得し、グローバルアドレス帳データを毎晩Active Directoryにプッシュします。
  • Exchange 2003からExchange 2007への移行で生じたLegacyExchangeDNの問題を解決します。Exchange 2003を使用していたすべてのユーザーにX500アドレスを追加する必要がありました。かなり短いPowerShellスクリプトで修正されました。
  • 「グループメールボックス」(複数のユーザーがメールボックスにアクセスできるExchangeの共有メールボックス)のスクリプト作成、それ以外の場合は開始する前に必要なデータの性質による手動プロセス。これらのメールボックスのセットアップを大幅に標準化しました。
  • 特定のレジストリキーをリセットし、サービスを再起動するすべてのドメインマシンをウォークスルーするスクリプトを作成しました。完了するには18時間かかりましたが、仕事は完了しました。

はい、そうです、PowerShellはかなり長い間私たちと一緒にいるでしょう。

編集:要求されたため、コードサンプルを追加

$ list = import-csv( "groupusers.csv")
$ lastseengroup = $ list [0] .group
$ ADGroupPrefix = "grp.netware。"
$ ADGroupSuffix = "{編集済み-の形式で、ou = groups、dc = domain、dc = domain、dc = domain}"
クリア変数メンバーリスト
クリア変数の不明なユーザー
foreach($ listの$ entry){
    if($($ entry.group)-ne $ lastseengroup){
        echo "新しいグループ$($ entry.group)につまずき、$ lastseengroupへの変更をコミットしました"
        $ newgroup = $ ADgroupPrefix + $ lastseengroup
        $ newgroupdn = '"' +" cn = $ newgroup $ ADGroupSuffix "+ '"'
        echo "$ newgroupのDNを取得"
        $ existinggroup = dsquery group domainroot -name $ newgroup
        if(($ existinggroup -ne $ null)){
            dsmodグループ$ newgroupdn -chmbr $ memberlist
        } else {
            dsadd group $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc「eDirectoryからインポートされたグループ」
        }
        クリア変数メンバーリスト
    }
    $ User = get-user $($ entry.member)-ErrorAction SilentlyContinue
    if($ User.isvalid){
        $ UserDN = $ User.distinguishedname
        $ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
    } else {
        $ unknownusers = $ unknownusers + $($ entry.member)
    }
    $ lastseengroup = $($ entry.group)

}
dsaddグループ "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist

これは、perlスクリプトで作成されたCSVファイルを受け取り、グループのセットを更新します。グループがすでに存在する場合、メンバーシップをファイルで指定されたものに置き換えます。グループが存在しない場合、作成します。これは一方向の同期です。また、まだ完全には生産されていませんが、近いです。


6
リモートPowerShell !! ssh!?!良い頃!
ニックカバディアス2009年

2
powershellスクリプトをWebサイトからどのように実行しますか?powershellスクリプトをWebプログラミング言語として使用しますか?powershellASPを使用していますか?IISユーザーとしてスクリプトを実行していますか?
クエンティン2009年

17

Microsoftのサーバー製品は最初からPowerShell対応になり(Exchangeの次のバージョンではすべての構成が PowerShellで利用できると思います)、PowerShellのような本では単調なタスクを自動化するいくつかの優れた方法について説明していますPowerShellはしばらくの間、Windowsサーバーランドで普及しているテクノロジーであると提案するのは合理的です。


本はまだベータ版であることを/書かれている
ニックKavadiasを

はい、それはそうです-しかし、あなたは今でもそれを購入して、コンテンツへの早期アクセスを得ることができます。そして、そこには大量のサーバー保守があります:)
moobaa

4
Exchangeは、Exchange 2007以降、すべてPowerShellでした。OCSは、次のリリースで完全にPowerShell対応になります。System Center製品のほとんどは、完全にサポートするか、次のリリースでサポートします。PowerShellはどこにも行きません。
ポール2009年

12

Scott HanselmanのPodcast#162をお勧めします。すべてのMicrosoftサーバーチームは、PowerShellコマンドレットを提供し、単一の一貫した構文に従うように「強制」されているようです。

また、VMWareのようなサードパーティがそれを採用しています

要するに、2.0以降のPowerShellは、非常に些細なタスクを除くすべてのバッチファイルを置き換えるビジネスに真剣に取り組んでいると思います。


10

私がSQL Serverデータベース管理者として使用している10個のPowerShellスクリプト(すべてブログに説明/投稿されています):

  1. すべてのSQL Serverのディスク容量を確認し、SQLテーブルにデータをロードします
  2. すべての実稼働SQL Serverで権限レポートを実行し、SQLデータベースにデータをロードします
  3. ネットワーク上のすべてのWindows Server 2003クラスター、ノード、および仮想を検出し、SQLテーブルにロードする
  4. SCCMで定義されているすべてのSQL Server上のすべてのデータベースを検出し、SQLテーブルにロードします
  5. すべてのSQL Serverのバックアップ情報をSQLテーブルにロードして、SQL Serverバックアップスコアカードを作成します
  6. Windows Server 2003 SP2でTCPオフロードエンジンが無効になっていることを確認します(これは、多くのSQL Serverのパフォーマンスキラーです)。
  7. ディスクパーティションの配置を確認します(ディスクが不適切に配置されている場合もパフォーマンスを低下させます)
  8. サーバー間でSQLテーブルをコピーする
  9. Recursivley は、フォルダー構造を含む1つのサーバーから別のサーバーにMSDBストレージを使用してすべてのSSISパッケージをコピーします
  10. 独自のグラフィカルオブジェクト依存関係ビューアを作成する

8

どのような種類の管理タスクを使用してスクリプトを作成しましたか?

アプリケーション/サービスの監視:(リモート)EventLogおよびストアドプロシージャから主要なパフォーマンス番号を取得し、単一のバッチファイルから表示する

私はSQL ServerのDBAですが、それを使ってクールなことを教えてください。

automssqlbackup:ローテーションを伴うMSSQLの毎日のバックアップ(daily = incremental、weekly + monthly = full。毎日5回、毎週5回のバックアップを保持)、zip、電子メール通知


MSSQLバックアッププロセス全体を自動化するための+1。
アンドレイリネア2009年

はい。Powershellは、SQL Serverでの複雑なバックアップを自動化するための純金です。:私たちは、オフサイトストレージのためにアマゾンS3にファイルを送信ジップにそれを使用して、時間単位のバックアップを暗号化し、codeblog.theg2.net/2010/02/...
グレッグブレイ

7

前のキャリアでUNIXシェルスクリプトを使用してから、Windowsサーバー管理に移行したことで、PowerShellに本当に感謝していると言えます。あまりにも難解な構文を学ぶ時間も能力もありません。 powershellスクリプトのほとんどは、非常に簡単な言語で記述できます。

私はそれが長い間続くと予測しています。


7

SQL Server 2008を使用すると、ローカルファイルシステムまたはレジストリと同じようにSQLデータベースをナビゲートできる新しいPowerShell拡張機能が得られます。

SQL Serverクライアントツールをインストールした後、PowerShellで(右クリックのコンテキストメニューを使用して)任意のデータベースを開き、オブジェクト指向の方法でデータベースを操作できます。

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)}

最初の行はプロンプトを変更するだけなので、それほど長くはありません。

それとは別に、ここで何が起こっているのか自明だといいのですが。


+1うわー、これは非常に便利です。ありがとう!
jftuga

5

SQL Server 2008では、Management StudioにPowerShellコンテキストオプションが追加されたため、Exchangeが受け入れている以上のものがあります。また、MSが下位互換性の問題に対してDOSのセキュリティを向上させることができないため、MSが考えていたように、DOSの代わりと考えてください。


4

私もDBAであり、長年のスクリプト作成者であり、DOSバッチファイルV3.3に戻っています!VB Scriptに移行しましたが、PSは非常に強力です。ご覧ください-新しいユーザーであるため、リンクを投稿できません。これはOtto Helwegのブログから入手しました。安価で陽気なソフトウェアインベントリツールです。

  • 1-データベーステーブルからクエリするコンピューターのリストを取得します
  • 2-現在のデータと時刻を結果に追加します
  • 3-監査結果をデータベースに記録します

PowerShellスクリプトの例:

# 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()

デイブJ


3

次のタスクは、PowerShellを使用して非常に定期的に私のチームによって実行されます

  • Hyper-Vクラスターのすべてのノードで使用可能なメモリを一覧表示します。
  • Netappファイラーを管理する
  • 新しいHyper-V仮想マシンのプロビジョニング
  • SharePointリストへの書き込みと読み取りをプログラムで行う

日々、PSプロンプトが常に表示され、CMDを使用していた1回限りのタスクにそれを使用します。

Sharepointリストを読み取るためのコードサンプルを次に示します。SharepointのWebサービスとPowerShell V2.0の新しい「New-WebServiceProxy」コマンドレットを使用します

$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には、すべての機能を作成するためのベースとして使用したSharepoint Webサービスの使用に関する素晴らしいブログ投稿があります。彼は、まだPowerShell V1を使用している場合に使用できる素晴らしいnew-webservice.ps1スクリプトを用意しています。

また、これは、クラスター内のノードで使用可能なメモリを取得するために使用した基本関数です

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 {}    

}

共有したいサンプルコードはありますか?SharePointリストの読み取りと書き込みに特に興味があります。
ブライアン

2

職場の小さなプロジェクトでPowerShellを試しました。CSVのようなファイルを使用して、企業のADから古いUNIXシステムに、最大 600人のユーザーと200のグループのサブセットを毎日移行しました。出発点として1つのグループとそのユーザーを引き出す500行のVBScriptスクリプト(!)が提供されました。

〜20行のPowerShellスクリプトがすべてを実行できることが判明しました...

* NIXユーザー(サーバーおよびクライアント側)として、PowerShellには非常に喜んでいます。コマンドの小さなサブセットを知っているだけでも、本当に強力な作業を行うことができます。SSH(のような)リモートアクセスが必要です...


ルックアップpsremoting-
サム

1

どうして使えないの?アップグレードされる予定のMicrosoftサーバーアプリケーションはすべて、Powershellを使用して管理されるようになりました。多かれ少なかれ面倒なUI /管理コンソールがこのコアの上に構築されて提供されますが、これはしばしば犬のように遅く、誰かが指摘しているように、利用可能な機能が欠けています... ^


この小さなpowershellスクリプトをチェックして、アセンブリをngenにし、すべてのpowershellベースのコンソールを高速化します。msexchangeteam.com/ archive
Jesse Weigert

1

Powershellは完璧ではありませんが、使用したことがあれば、かなりクールです。.netライブラリ全体に加えて組み込みのコマンドレット(および2.0のPSを使用して独自のコマンドレットを作成)にアクセスできることは、非常に便利です。

私が欠けていると思う唯一のものは、いつかMSから来ると確信している、それのための良いIDEです。今は、デバッグを可能にし、かなりクールなIderaのpowershell plusとadminscripteditorを使用しています。

VBからかなりうまく離乳できました。

これまでの私の最大のプロジェクトは、「powershellASP」を使用して、powershellコマンドを実行し、12を超えるVMWare ESXi(無料)ホストからvmwareホストとVM情報を引き出し、HTMLテーブルに表示する基本的なWebページを作成することです これは、無料のVMWare ESXiと仮想センターがないため、社内のすべてのVMのリアルタイムの概要を取得する他の方法がないためです。PowershellASPは、IIS用に作成された無料のサードパーティパーサーであり、MSではサポートされていません。そのため、現時点ではいくつかの制限されたことができ、ドキュメントはかなりまばらです。


そこPowerguiブロックがあり、Powerguiブロックを使用ScriptEditor.exeに、私は...それなしで生きることができるか想像することはできません
ニコラDorier

Powershell 2には、優れたPowershell ISE(統合スクリプトエディター)が含まれています。CTP 3が利用可能で、RTMは2009
Precipitous

1

ADを介してさまざまなものを検索し、サーバー上の共有、ディスク領域、使用済みディスク領域などの重要な統計情報をWMI経由で検索する管理/インベントリスクリプトが多数あります。

一般的なスクリプト:

  1. 空き/使用済みディスク領域、RAMなどを取得します。
  2. BIOS情報、サーバー製造モデルなどについてWMIを照会します。
  3. AVバージョンを確認し、特定のレジストリエントリがあることを確認します
  4. Windowsサーバー上の共有の監査

ユーザースクリプト:

  1. すべてのユーザーを把握しているADを列挙し、ユーザーが属しているグループをExcelまたはCSVに書き込む
  2. TSおよびコンソールで現在ログオンしているユーザーを見つける

ESXサーバー上のすべてのVMWareゲストマシンを列挙するものがあります

x日後にファイルを取得し、安全に削除するスクリプトがあります。

基本的に、約200行のVBScriptを10のPowerShellで実行できます。また、VBScriptでできないことやうまくいくこと(添付ファイル付きの電子メールの送信など)を行うこともできます。これは、スクリプトの結果を定期的に送信するために行います。また、カスタムサービス名とイベントIDを使用して、意味のある一意のエントリをイベントログに書き込むことができます。

それが私の頭上から考えることができるものです。私が選んだツールはPowerShellです。今では、作業が楽になっています。

基本的に、システム管理者にとっては、BashスクリプトがUnix管理者にとって有用であるのとほぼ同じです。


0

クライアントバッチスクリプト(プログラム、ログオンスクリプトなどの実行)を置き換えるために、poweshellを探していました。

しかし、ログオン時間に少なくとも10秒が追加されていることがわかりました。つまり、すべての「微調整」が設定されています。結局、私たちが使用していたものにとどまることになりました。


これは世界最速のものではありませんが、ほぼすべてのことができます。いくつかのドライブをマップするだけで済む場合、バッチスクリプトの方がはるかに高速です。
sysadmin1138

0

.NET開発者ではないため、PSで使用できるすべての.NET関連グッズの使用は制限されています。ただし、(特に)Exchange管理者であるため、Exchange 2007のPowerShell統合は素晴らしいです。メールシステム用の信頼できるスクリプトエンジンがついに完成しました。これまでのところ、私はすべてのメールボックスの毎月の統計情報を送信し、時刻に応じてさまざまなメールアドレスを割り当てる人を調整し、パブリックフォルダのアクセス許可を自動的に作成して割り当て、2つのメールメールボックスDB間でユーザーを負荷分散しました。Ex07の観点からのもう1つの素晴らしい点は、GUIで何かを行った後、今行ったことに関連するPowerShellコマンドが表示されることです。それらをコピーすると、最終的にExchange環境を一から作り直すことができるPSスクリプトのセットができます。


0

私が働いているサーバーチェックで特定のことを自動化する(WMIから基本情報を収集し、イベントログからエラーと警告を収集する)。

イベントログの処理は素晴らしいです。

先日、Foxit Readerがスクリプトが実行されているドメイン全体でデフォルトで有効にした自動更新ポップアップを無効にするスクリプトを作成しました。ADからコンピューターのリストを取得し、テストしてそのアップを確認し、1を0に変更します。

忘れてしまったこと!

ほとんどの場合、.NETライブラリに完全にアクセスできます。それで本当に複雑なことをするのは少し苦痛ですが、必要があればそれはあなたのためにあります。


0

主にマイクロソフトのショップであるかなりの数の管理タスクに使用します。古いファイルのクリーンアップやマシンのデフラグ、結果の記録など、一部のスクリプトは単純です。1つのスクリプトは、主にWMIを使用してコンピューターを監査し、結果をデータベースに記録します。ハードウェア(CPU、RAM、ドライブなど)、ネットワーク情報、ローカルユーザー、インストール済みソフトウェア、プロファイル情報などを取得します。Webサービスを呼び出して電子メールを送信するものがあります。将来的には、まだ使用されている残りのVBScriptスクリプトを置き換えると思います。ExchangeまたはSQL Serverのタスクにはまだ使用していません。

バックグラウンドジョブ、トランザクション、より優れた例外処理、新しいISE(統合スクリプト環境)、より良いデバッグなどをサポートする次のバージョンを楽しみにしています。


0

私のWindows管理者はまだPowerShellを使用していません。彼らは皆それを聞いたことがありますが、彼らはそれに慣れるのに時間をかけていません。

私は自分でそれを見てみることにしました。Unixシェルのバックグラウンドから来て、Windowsには最終的に実際のシェルプログラミング環境が必要だと考えました。MicrosoftはPowerShellでいくつかのことをうまくやったと思います。

良い面は、PowerShellのコマンドレット間の仲介としてオブジェクトを使用することです。これにより、PowerShellにある程度のパワーがもたらされ、テキストベースのスクリプトを使用して作業を開始する必要があります。

マイナス面では、実際にはUnixシェルコマンドの多くを活用していません。そのため、学習曲線は不必要に急勾配であり、UnixからPowerShellへ、またはその逆への移行を容易にすることはできません。ほとんどの場合、すべてのコマンドラインスイッチが異なるGet-ChildItemをエイリアスするlsなど、PowerShellコマンドレットの一部のエイリアスを定義します。

ちょうど私の2セント...


0

これは開発者の回答に近いものですが、現実の世界であり、今後数か月のうちのある時点でテストを開始します。SQL Serverタスクを継続的統合環境に取り込むスクリプトを作成するために、PowerShellを学び始めています。継続的統合スクリプトは、主にJetBrains TeamCityを介してNAntおよびMSBuildによって実行されます。

それに加えて、一般的な目的、特にSQL Serverデータベース管理タスクのために、Windowsの主要なコマンドシェルとしてPowerShellに切り替えることを検討しています。

申し訳ありませんが、まだ学習中のため、共有するコードサンプルがありません。私がそうするとき、私はいくつかを投稿させていただきますが、:)

ここに、あなたの別の質問に答えたばかりの1行のコードサンプルを示します:)でも、ウィキのために...

これにより、インストールされている修正プログラムが一覧表示されます。

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

powershellのhooray、残念ながら2003サーバーにはデフォルトでインストールされません。レジストリの場所は役に立ちました!
ニックカバディアス

0

ピックアップするのは最も簡単なスクリプト言語ではなく(パイプでの確かな経験)、奇妙な独自のレバレッジ(単純な sedのようなものを教えてください!!)がありますが、PowerShellは非常に強力です。Bashや他のUnixシェルのレベルまでではありませんが、それでもです。

私はそれを使用して、データベースのエクスポートとインポートを監視し、問題が発生した場合に電子メールで警告し、定期的なバッチ操作を行います。

確かに、これは既に私の主要なWindowsシェルですが、実際には "より少なくより多くの操作を行う"種類のものではありません。PowerShellには、冗長性(および.NET継承)があります。


0

PowerShellバージョン1.0は多くの点で非常に制限されていましたが、バージョン2.0はうまく機能しています。バッチスクリプトと比較して、はるかに強力です。私は実際にスクリプトとしてのみシェルとして使用していませんので、私の経験はそれに応じて色付けされています。構文(-eqvs ==-gtvs >など)はあまり好きではありませんが、奇妙なことをする必要がある場合は.NETにドロップできることを感謝しています。バージョン3.0までには素晴らしいものになると思います。今は、「仕事をやり遂げる」というカテゴリーにしっかりと入れます。

主にコードの展開の自動化に使用します。これは、C#で何かを作成する際に輝いている領域です。再帰的なディレクトリコピーや、Bashスクリプト作成者が長年にわたって当たり前のこととして受け止めてきたようなシェル関連の操作により、作業が非常に簡単になります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.