PowerShell

PowerShellがOSSになりLinux/Mac版と出てきたので触ってみた

Mac/LinuxばかりでWindows触らなくなってもう半年になります。やっとBashが手についてきたこのごろですが、昨日こんなニュースを見つけました。 www.itmedia.co.jp Windows使っていた時にはお世話になりっぱなしだったPowerShellがまた使えるかもと思い早速…

PowerShellのWhere-Object句のパフォーマンスが遅いので対応例

PowerShellのパイプラインは手元で使っている分には凄い便利ですが、大量のデータを扱うとしばしばパフォーマンスがとても遅くなる場合があります。PowerShellのWhere-Objectは便利なので使うことが多いと思います。しかし大きな処理をすると問題になること…

12桁のAWSアカウントIDをPowerShellで取得する

取得するためのCmdletが見つからなかったので、やり方を模索してみました。 メタデータのIAM情報から取得してみる。(正規表現) PS>(Invoke-WebRequest "http://169.254.169.254/latest/meta-data/iam/info").Content -match "arn:.*:.*:.*:[0-9]{12}:.*" |…

AWS Tools for PowerShellで別アカウントの処理を実行する(Cross Account)

EC2からAWS Tools for PowerShellを利用する際に、クロスアカウントアクセスロールを利用して別のAWSアカウントの操作をする方法を書いていきます。具体的には、 アカウントAのAWSの情報を、 アカウントBのEC2上で実行するPowerShellから、 AWS Tools for Po…

Proxy経由でAWS Tools for PowerShellを利用する時にひっかかった点

プロキシは正しく設定されていて、EC2にも正しいロールが設定されている。にも関わらず以下のようなメッセージでAWSのコマンドレットが失敗してしまう。認証がうまくいっていないようです。 No credentials specified or obtained from persisted/shell defa…

【PowerShell】クラス名わからないけどWMIを使ってOS情報を取得したい

WMIを使ってOSの情報をコマンドで取得するのに便利なGet-WmiObjectですが、肝心のWMIクラス名がわからない場合の手っ取り早い方法です。 PowerShellコンソール開いて以下をコピペで実行します。 PS> gwmi -List | Out-GridView -PassThru | %{gwmi -Class $_…

インストール済みのフォントを見やすく一覧するPowerShellスクリプト(日本語対応版)

フォントを選ぶときに簡単に一覧を出したいと思い調べてみたら、インストール済みのフォントの一覧をIEブラウザに一覧してくれる大変便利なスクリプトが見つかりました。 https://technet.microsoft.com/en-us/library/ff730944.aspx ただ、これだと日本語特…

C#クラスライブラリ(DLL)をAzure Automationで利用する方法

Azure上からIT管理の自動化ができるAzure Automationですが、Igniteやde:codeを見ていても、Microsoftの自動化ツールの中心になっていくのではと思っています。【SCO・SMA・Azure Automation】Microsoft自動化ツールを整理してみたsolution.realtech.jp Azur…

Azure Billing API(課金API)をPowerShellから試してみた

Azureの課金情報取得のAPIが遂に出ました。ScottGu's Blog - New Azure Billing APIs Availableweblogs.asp.net 早速、こちらの記事で認証方法などを参考に、課金レートのAPIも組み合わせて作ってみました。Export Azure Subscription Usage to CSV with NEW…

ドメイン名、ユーザ名と関連するSIDを相互変換するPowerShellスクリプト

Windowsのドメイン名やユーザ名とSIDを相互変換するPowerShellスクリプトを作ってみました。エラーハンドリング無しです。 function Convert-UserAndSid { [CmdletBinding()] [OutputType([String])] Param ( # パラメーター 1 のヘルプの説明 [Parameter(Ma…

PowerShellコンソールを拡張できるPSReadLineが良さそう

Hey, Scripting Guy!の以下の記事にPowerShell Consoleが拡張できるPSReadLineについて書いてあって、一目見て便利そうなので設定してみました。The Search for a Better PowerShell Console Experience - Hey, Scripting Guy! Blog - Site Home - TechNet B…

PowerShellでファイルやフォルダのアクセス権を設定する

PowerShellでWindowsファイル・フォルダのアクセス権を設定する方法です。 #ファイルやディレクトリ名 $path = "C:\TEMP" #ユーザ名やグループ名(ドメイン名またはコンピュータ名から指定) $userGroup = "MYPC\MyUser" $acl = Get-Acl $path $permission =…

Administrators以外のユーザでPSSessionによるリモート制御をする

リモートのコンピュータを制御できるPSSessionはとても便利です。ただデフォルトではAdministratorsグループのユーザしかPSSessionを張ることはできません。Administratorsグループ以外のユーザでPSSessionが可能になる設定を書きます。 一番簡単な方法 Remo…

PowerShellでHashTableを配列みたいにForeachやWhereする

PowerShellのHashTableの場合、そのままだとパイプラインでForeachやWhere句を通しても意図した通りの処理ができません。 PS>$hashTable = @{a=1;b=2} PS>$hashTable | ForEach-Object{$_.Name + ":" + $_.Value} : GetEnumeratorで列挙用オブジェクトを取り…

PowerShellでOSリソース情報(CPU、Memory、Disk)を取得する

PowerShellでCPUやメモリ、ディスク使用率などのOSリソースに対する情報を取得する方法を書きます。パフォーマンス情報を取得する色々方法はありますが、パフォーマンス モニター (PerfMon) で取得しているシステムも多いと思います。今回はこれをPowerShell…

PowerShell ISEにアドオンを追加して機能拡張する

PowerShellの開発ツールとして有名どころで以下のようなものがあります。 PowerShell ISE Windows標準です。 Visual Studio(Link) こちらのブログに詳しく書かれています。 PowerShell Script の エディタ と Visual Studio - tech.guitarrapc.cóm PowerGui…

PowerShellのInvoke-WebRequestでCookieを取得して使う

例えばGoogleからのCookieを取得してみます。SessionVariableの引数がポイントです。 $uri = "http://www.google.co.jp/" Invoke-WebRequest -Uri $uri -SessionVariable mySession これで変数$mySessionにセッション情報が格納されます。 PS> $mySession | …

Azure File StorageのSMB共有のスピードをPowerShell使って測ってみた

プレビュー機能のAzure File Storageを、Azure上のWindows仮想マシンからネットワークドライブとしてマウントして、コピーや移動のスピードを測ってみました。 準備 Azure Storage Accountを2つ用意しました。ネットワークドライブとしてマウントするためにS…

New RelicのREST APIをPowerShellから使ってみる

手元のWindowsからNew RelicのREST APIを試してみたかったので、PowerShellからアクセスしてみました。 どんなデータが取れるか 実際にどんな機能があるか知りたい場合は、New RelicでAPI Explorerが準備されているので、実際に動かしながらコードを組むこと…

PowerShellでAzure テーブル ストレージ を操作する(Insert,Query etc)

C#からAzureテーブルストレージを操作する方法はこちらに書いてあったので、これを参考にPowerShellで置き換えてみました。http://azure.microsoft.com/ja-jp/documentation/articles/storage-dotnet-how-to-use-tables/ ストレージアカウントへの接続コンテ…

Azure管理証明書(PFXファイル)を利用してPowerShellからAzureを管理する

PFXファイルを利用して、PowerShellからAzureを管理する方法を書きます。 PFXファイルの作成 まず、事前にWindows SDKをインストールしておく必要があります。 http://msdn.microsoft.com/ja-jp/windows/desktop/bg162891.aspx 手元の環境だとデフォルトで以…

世代管理機能付きAzure BLOB Snapshot取得PowerShellスクリプト

前にこちらの記事でAzureのBLOBのSnapshotに関して書きました。【Azure】PowerShellでBLOB上のVHDのSnapshot作成・取得・削除の操作をする - YOMON8.NET 【Azure】PowerShellでBLOB上のVHDのSnapshot作成・取得・削除の操作をする - YOMON8.NET 上記の内容を…

Windowsローカルユーザーのパスワード有効期限確認用PowerShellスクリプト

Windowsのローカルユーザアカウント毎のパスワードの有効期限情報とロックの状態を取得して一覧出力します。ADからユーザ情報を取得する場合はAD用のコマンドレットや、LDAPプロバイダーを利用しますが、今回はWindowsローカルからの情報取得なのでWINNTプロ…

System Center OrchestratorからPowerShellでAzure管理コマンドを実行する

PowerShellのAzure管理用モジュールを実行するにはPowerShell3.0以上が必要になります。最新のOSで作業していると気づかない人もいるかもしれませんが、むりやりVersion 2のPowerShellで実行してみるとエラーメッセージにしっかり書かれています。 requires …

Azure上に複数仮想マシンを展開してドメイン参加させるPowerShellスクリプト

検証で何台も新規のサーバを構築して削除してを繰り返す必要があったので、Azure上に複数のVMを一気に展開してAD(ドメイン)参加させるスクリプト作りました。 仕様 Windows 2008R2をAzureのデフォルトイメージから該当のネットワーク内に展開。展開後にWin…

Windows Update?Microsoft Update?利用可能な更新サービス一覧方法

Windowsの更新サービスにはWindows UpdateやMicrosoft Updateなど複数種類があります。 Windows Update と Microsoft Update ってどう違うの? 環境によって使えるサービスが違うのですが、以下のPowerShellで一覧可能です。 (New-Object -ComObject "Microso…

PowerShellのSplitで複数の変数を同時に設定

PowerShellで配列を生成した時に格納先の変数を複数設定できるんですね。例えば、こんな感じで$weekから$daysの配列を作ると、 $daysbは全ての曜日が格納された配列になります。 $week = "Sun,Mon,Tue,Wed,Thu,Fri,Sat" $days = $week -split "," 曜日の要…

最新OS上で古いバージョンのPowerShellを実行する

操作しているOSに入っているPowerShellとは別バージョンのPowerShellを実行したい場合の手順です。サーバで動くPowerShellをクライアントPCで開発することは良くあると思います。その際にサーバー側とクライアント側のPowerShellのバージョンが同じならば良…

PowerShellでStringからScriptBlockオブジェクトを生成(変換)する

題名の通りなのですが、どのような場面で利用するかというのと一緒に書きます。Invoke-CommandでリモートセッションにScriptBlock型の変数をArgumentListとして渡そうとすると、途中でObjectに変換されてしまいます。 事象 まず、通常通りScriptBlockの変数…

PowerShellコードを自動インデント・整形するスクリプト

PowerShellのインデントが崩れてしまうことがあります。自動インデントをできるツールを探していたのですが、基になるスクリプト見つけたので、結局それを元に自分で関数作りました。(本当は標準のISEとかで実装されていると嬉しいのですが。。。)作ってみ…