PowerShell

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とかで実装されていると嬉しいのですが。。。)作ってみ…

PowerShellでDelegateに近いことことしてみた(並列実行など)

PowerShellでDelegate使いたいと思って動かしていたのですが、結局ScriptBlockが一番近いのかなと思いメモです。 #ScriptBlockを変数に割り当てます PS>$d = {param($p) return $p * 2} PS>$d.gettype() IsPublic IsSerial Name BaseType -------- -------- …

PowerShellで文字列などの変数のNullまたは空文字を確認するには

まず、.Net的にStringのIsNullOrEmptyを使う方法があります。 PS > $foo = "bar" PS > [String]::IsNullOrEmpty($foo) False PowerShellでは変数をboolにキャストするだけでも同じことができます。 $stringNull = $null $stringEmpty = "" $stringNotEmpty =…

PowerShellで現在のユーザやグループなどのID情報を取得する方法

PowerShellでIdentity関連情報を取得する方法です。 ユーザ情報を取得する まず、ユーザ情報のオブジェクトを取得します。 [System.Security.Principal.WindowsIdentity]::GetCurrent() WindowsIdentityオブジェクトが返ってきます。 WindowsIdentity クラス…

PowerShellが64bitプロセスと32bitプロセスどちらで動いているか確認する方法

時々裏でPowerShellが実行されている場合、64bitだと思ったら32bitで動いていたということがあるので。判別には以下のコマンドを使います。 [System.Environment]::Is64BitProcess 64bitの場合 powershell.exeの場所 C:\Windows\System32\WindowsPowerShell\…

インストール済みのWindows Serverの役割と機能を一覧するPowerShellコマンド

インストール済みのWindows Severの役割と機能はGet-WindowsFeatureで簡単に一覧できます。いくつかバリエーションを書いてみます。 以下のコマンドではInstalled(インストール済み)の役割と機能を一覧しています。 PS> Get-WindowsFeature | ?{$_.InstallS…

Azure PowerShell Toolsの更新(アップデート)方法

Azure関連のブログなどを読んでいると、結構頻繁にAzure管理用のPowerShellモジュールである、Azure PowerShell Toolsの新バージョンがリリースされましたという情報が見つかります。 Azure PowerShell Toolsの最新版をダウンロードするには、Azureの公式サ…

PowerShellからlog4netでロガー作って使ってみた

PowerShellのロガーについて、Out-Fileとかを使った自作ロガー作っていたりしたのですが、他に方法無いか探してみました。そこでPowerShellからNlog使えるという以下の記事を見つけて、log4netも試してみました。 PowerShellとNLog | 84zume Works 必要なフ…

PowerShellでコンピュータ内の証明書を一覧したりアクセスするには

PowerShellではディレクトリだけでなく、証明書ストアの中をファイルディレクトリのように移動できます。 #現在のユーザの証明書ストアに移動 PS C:\> cd Cert:\CurrentUser #プロンプトの先頭がCertになります PS Cert:\CurrentUser> #個人(My)に移動します…

PowerShellでFQDNを取得する方法色々

PowerShellで自コンピュータのFQDNを取得する方法を色々と。 単純に環境変数を組み合わせる これが一番シンプルですが全部大文字になってしまいます。 "$env:COMPUTERNAME.$env:USERDNSDOMAIN" WMIを利用する $info = Get-WmiObject Win32_ComputerSystem "{…

進化を続けるPowerShell DSCで利用できるリソースを確認する方法

こちらの記事でDSCでAzure上の仮想マシンの自動構築のやり方を書きました。しかし、DSCさえあれば100%何でもできると言う訳ではありません。DSCで何かできるのかはDSCのリソースというもので表現されています。デフォルトではこちらの12種類のリソースがDSC…

Azure PowerShellでデフォルトのサブスクリプションを指定する

PowerShellでAzureを操作する時に、複数のサブスクリプションを管理している場合、 最初にどのサブスクリプションを操作するか指定する必要があります。その際に使うのがSelect-AzureSubscriptionコマンドです。まず、自分のアカウントに紐づいているサブス…

PowerShell DSCを利用したAzure仮想マシン構築の自動化

PowerShellのDSC(Desired State Configuration)はWindows Management Framework 4.0から導入されたMicrosoftのテクノロジで、ChefやPuppetのようなものですが、知らない人はこちらのページがわかりやすかったです。 PowerShell DSCで導入された新しい構文キ…

PowerShellの書き方とパフォーマンスについて、パイプラインと構造化どちらが良いの?

自分の場合は、PowerShellを大きなデータ処理などに使ったことが無いため、実は意識したことは少ないのですが、少しの書き方の違いでPowerShellのパフォーマンスは大きく変わるようです。内容はこちらの動画を参考にして書いています。 Windows PowerShell B…

PowerShellでキーボードのキー入力を取得する

PowerShellではキーボードのキー入力を以下の書き方で取得できるようです。 [Console]::ReadKey($true) これをPowerShellコンソールから実行してみると動きがわかりやすいです。 #Ctrl+C+Enterで抜けます while($true){[Console]::ReadKey($true)} 取得でき…

【PowerShell】New-AzureVMでAzure仮想マシンの作成サンプル

仮想マシンの作成には色々なパターンがあると思いますが、一つの例としてサンプルスクリプトを載せておきます。 サンプルで作る仮想マシン 今回作るマシンには以下のような設定を含んでいます。 PowerShellのリモート実行用のエンドポイントを解放 タイムゾ…

Azure BLOBコピー処理のPowerShellスクリプト

前にもこちらの記事でAzureのBLOBのコピースクリプトを載せましたが、 PowerShellでAzureストレージアカウント間のBLOBをコピーする - YOMON8.NET.Netのクラスを多用していて読みにくかったので、PowerShellのコマンドレットを利用する形で書き換えてみまし…

Azure BlobオブジェクトをPowerShellでダウンロード

BLOBに置いたデータをPowerShellを使ってローカルにダウンロードしてくるスクリプトです。 Import-Module Azure #パラメータ設定 $StorageAccountName = "ストレージアカウント名" $AccountKey = "ストレージアカウントキー" $containerName = "コンテナ名" …

Azure環境の仮想マシンやディスクなどを一括削除

新しいサブスクリプションに引越したため、古いサブスクリプション側に残っていた仮想マシンやディスクなどを一括削除する必要がありました。 最初はAzure Portalから一つづつ削除していたのですが、このやり方だと凄い時間がかかります。そこでPowerShellで…

PowerShellで特定の名前のプロセスの数を取得する

PowerShellでWindowsのプロセス数を取得する方法です。 Get-Processで取れば良いのですが、該当プロセスが0件の時にエラーになってしまうので、以下のように書いてみました。 #svchostプロセス数を取得 (Get-Process -ErrorAction 0 "svchost").Count #ファ…

PowerShell Windows形式⇔UNIX形式でのテキスト出力(改行コード調整)

PowerShellを使ってのWindows 形式の改行コード (CRLF) とUNIX形式の改行コード (LF) の相互変換の方法です。 Windows形式→UNIX形式 [string]::Join("`n",(Get-Content .\winText.txt)) | Set-Content .\unixText.txt UNIX形式→Windows形式 [string]::Join("…

PowerShell 正規表現を使ってコマンド一本で文字列抽出

テキストファイルから正規表現使って文字列抽出したい場合、 PowerShellからこんなコマンドで一発で抽出できます。 [regex]::Matches((Get-Content 対象のファイル),"正規表現文字列","任意オプション") | foreach{$_.Value} 例えばXMLからCDATAの値を抽出し…

PowerShellで"="や":"区切りの設定ファイルを読み込む

XML形式の設定ファイルなんかも増えてきていますが、"="区切りの設定ファイルは今も良く見ると思います。 USERID = user01 PASSWORD = passw0rd HOSTNAME = myhost.local PowerShellでこのような設定ファイルを読み込みたい場合はImport-Csvのコマンドレッ…

Azure上の仮想マシンにPowerShellでリモートコマンドを実行する

PowerShellはリモートコンピュータ上でコマンドを実行できる機能があります。 PowerShell 2.0の新機能(2) ――リモート処理編 (1/4):CodeZine Azure上に仮想マシンを構築して、そこに自動化処理を組み込む場合などは、この機能を使えると便利です。 コマ…

【Azure】VHD(BLOB)をリージョンの違うストレージアカウント間でコピーする

Azureの日本リージョンでのサービスが開始したので、東アジアに置いてあったvhdファイルイメージを、東日本のストレージアカウントに移動しましたので、その対応方法書いてみます。異なるリージョンにあるVHDファイルを基に仮想マシンを追加しようとしたら以…

【Azure】PowerShellでBLOB上のVHDのSnapshot作成・取得・削除の操作をする

BLOBのスナップショットですが、AWSのManagement ConsoleのようにAzureのポータルからスナップショットの取得などの操作ができるのかと思ってたのですができないみたいです。(調べたりないのかも)そこで、MSDNを探したところ、C#のコードでやるように書かれ…

WORDファイル(docx)を一括PDF変換するPowerShellスクリプト

AzureのCDP(Cloud Design Pattern)がこちらでWORD形式で提供されていました。後でタブレット端末で見たかったのでPDF変換しようと思ったのですが、35ファイルもあったので、PDFに一括変換するためのスクリプト作りました。