Powershell

PowershellでExcelファイルの印刷ページ数を取得する

PowershellからCOM経由でExcelにアクセスしたあと、各ワークシートの印刷設定(PageSetup)から、ページ枚数(Pages.Count)を取得できるので、それを合算してファイル毎のページ数を求めることができる。

PowershellでWindowsのCapsLockキーをWindowsキーに変更する

Windowsキーのないキーボードを使っていたが、Windowsキーが欲しくなったので、既存キーをPowershellで割り当てる。 # CapsLock(00 1D)を左Win(E0 5B)のキーへ変更 Set-ItemProperty ` "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyb…

Powershellで日付、時刻の名称でフォルダやファイルを生成する

ちょっと大量にフォルダやファイルを作りたいときの小ネタ。 Powershellで日時の文字列でフォルダやファイルを生成する方法。 # ファイル 1..10 | %{New-Item -ItemType File $(Get-Date).AddDays($_).ToString("yyyyMMdd")} # フォルダ 1..10 | %{New-Item …

Powershellでファイルをロックする

小ネタ。Powershellでファイルをロックする方法。 System.IOのFileクラスを使ってファイルを開くことでロックをかける。 # Lock $file = [System.IO.File]::Open($filePath,[System.IO.FileMode]::Open,[System.IO.FileAccess]::Read,[System.IO.FileShare]:…

Windowsの送る(SendTo)メニューでスラッシュ区切りのパス文字列をクリップボードにコピーする

概要 Windowsのパス文字列を他の言語に渡す際、円記号(¥)もといバックスラッシュ(\)を毎回処理するのが面倒 エクスプローラなどのGUIメニューで選択するときにスラッシュ(/)を区切り文字とする標準的なパス文字列を取得したい。 Powershellスクリプトを作成…

Powershellを使ってBasic認証を通してWebアクセスする

概要 Powershell、Invoke-WebrequestのCredentialパラメータを使えば、簡単にBasic認証のかかったページにwebアクセスできる 実際 Invoke-WebRequest , Invoke-RestMethod で 基本認証 基本的に上記の通りCredentialを生成した上で、Invoke-Webrequesの-Cred…

Powershellで特定のフォルダの拡張子の一覧を取得する

特定のフォルダ配下に含まれるファイルの拡張子の一覧を取得するための方法のメモ Powershellを使ってファイルの拡張子を得るにはいくつか方法があって、例えばSystem.IO.Pathクラスを使う手もあったりするが、それよりはSystem.IO.FileInfoクラスを生成して…

Powershellスクリプト・モジュールのヘルプトピックの作り方

Powershellのスクリプト・モジュールで正しくGet-Helpで読むことができるヘルプトピック(Help topic)を作る方法のメモ。 そもそもヘルプトピックとは? 要するにGet-Helpしたときに表示されるヘルプのこと*1。細かいことは詳しいヘルプ情報の取得 | Microsof…

PowershellでWunderListのAPIを触ってみる(新刊.netのRSS Feedを利用して本をWunderListに登録する)

環境 Invoke-RestMethod と ConvertTo-Json が必要なのでPowershell v3.0以降で動くはず 前準備 Authorization | Wunderlist Developerに従って以下のことをしておく WunderListへのアプリケーションの登録 Web Server Application Integrationに従って、ア…

Powershellで名前解決する

なにも考えずにResolve-DnsNameする PS C:> Resolve-DnsName google.com Name Type TTL Section IPAddress ---- ---- --- ------- --------- google.com AAAA 204 Answer 2404:6800:4004:80f::200e google.com A 204 Answer 216.58.197.238 (≒nslookup) 単純…

Powershellでローカルユーザーを管理する(Microsoft.PowerShell.LocalAccounts)

昨日の「Hey, Scripting Guy」!*1を読んでいて知ったのだが、最新のPowershell*2ではローカルユーザーを管理できる。 実行環境 Microsoft Windows 10 Pro (10.0.14393) Major Minor Build Revision ----- ----- ----- -------- 5 1 14393 576 実際のコマンド…

Powershellでループを書かずに指定回数処理を繰り返す

範囲演算子(..)とパイプ(|)でループ処理のようなことができる 普通にループで書くなら以下のようになる。 #forループの場合 for ($i=0; $i -lt 10; $i++){ echo "hoge" } #foreachループの場合 foreach($cnt in 1..10){ echo "hoge" } でも下のほうがすっき…

Powershellでプリンターの状態を取得する

Powershellでプリンタの状態(ステータス)を取得するにはPrintManagementモジュールのGet-Printerを利用すればよい。 必要な環境 Powershll 3.0 以降 実行例 Get-Printerコマンドレットで特定のプリンタ名を指定してでCIMインスタンス*1を取得し、PrinterStat…

Powershellでアナグラムの判定をする

技術面接で出された問題 - esm アジャイル事業部 開発者ブログ 上記のエントリを読んでPowershellだとどうやって実装するかなーと思ったので、テキトーに試す。 ソートだとこんな感じ?*1 [String]$a="ABCB" [String]$b="BCAB" if($a -eq $b){return $false}…

Copy-itemを使ったディレクトリコピーはしないほうが無難なのでは、という話

Copy-itemを使ったディレクトリコピーはコピー先に指定するディレクトリの有無に依存して挙動が変わってしまう。 面倒でもディレクトリコピーはしないほうが無難であり、コピー先フォルダを作成した上で、コピー元フォルダ以下をワイルドカードコピーすべき…

PowershellでARPテーブルを表示する(Get-NetNeighbor)

PowershellでARPテーブルを確認するときはGet-NetNeighborコマンドレットが使える 環境 PS C:\> #OSのVersion PS C:\> "$((get-wmiobject win32_operatingsystem).caption) ($((get-wmiobject win32_operatingsystem).version))" Microsoft Windows 10 Pro (…

Powershellでいろいろな形式の設定ファイルを読み込む(*.properties, *.xml, *.json, *.csv)

主題の通り、Powershellを使用した設定ファイルの読み込んで変数に格納して使う方法のメモ。 日本語でググってもまとまった情報がないのでまとめる。 環境 PS C:\> #OSのVersion PS C:\> "$((get-wmiobject win32_operatingsystem).caption) ($((get-wmiobje…

知らぬまにはてなブログのシンタックス・ハイライトにPowershellが追加されてる

こんな感じ(下記はMarkdownで書いた) Get-ChildItem -Path $dir -Verbose なおファイルタイプはps1の模様

Powershellでファイルとフォルダの区別をする方法

普通にPSIsContainerプロパティを使えばよい #カレントディレクトリのフォルダだけを表示 > Get-ChildItem | Where-Object {$_.PSisContainer} #同じくファイルだけを表示 > Get-ChildItem | Where-Object {$_.PSisContainer} ちょっとした解説 PSIsContaine…

Powershellのローカルヘルプを更新する

単純にUpdate-Helpコマンドレットでhelpを更新できる。 日本語ヘルプがないコマンドもあるため、むしろ英語のヘルプを導入しておくと便利。

VimをPowershell上で呼び出せるようにする

PowershellのProfileにvimのエイリアス設定を追加すればOK #Profileの場所の確認 $PROFILE #以下のコマンドをProfileに記載する Set-Alias vim "<Vimのパス>" VimをインストールしてPowerShellから使用する | PowerShell from Japan!! Blog</vimのパス>

Powershell でWindowsOSのVersionを取得する。

Powershell でWindowsOSのVersionを取得するには、WMIを利用して情報を取得する必要がある。とはいえ、参照するだけなので、そこまで難しくはない。 環境 もの 詳細 OS Microsoft Windows 8.1 Pro (6.3.9600) Powershell 4.0 実行例 PS > "$((get-wmiobject …

PowershellでWindowsの証明書情報を確認する

PowershellでWindowsの証明書情報を確認するには、証明書ストアを指定してGet-ChildItem(ailias:ls)を実行する。 > ls Cert:\ Location : CurrentUser StoreNames : {SmartCardRoot, Root, Trust, AuthRoot...} Location : LocalMachine StoreNames : {Trust…

Poweshell の乱数がランダムか確かめる。

サイコロのアナロジーで適当に乱数を作って分布を調べる。 >$test = New-Object System.Random >for ($i = 0; $i -lt 1MB; $i++){$test.Next() % 6 + 1 >> random.log } 結構時間がかかるので、途中(775997個)で中断したけれど、結果は以下の通り 出目 頻度 …

Powershellにおけるプロパティへのアクセスにネスト数の上限はあるのか

Powershellでプロパティにアクセスするとき、ネストが深くなるとアクセスできなくなるのだろうか。 #適当にWebAPIを実行して内容を取得 PS D:\> $test = Invoke-RestMethod -uri "http://ja.wikipedia.org/w/api.php?action=query&format=json&titles=WBC&pr…

Powershellのプロバイダって何だ

いきなり出てくる「プロバイダ」、意味不明なので追加で調べた。

Powershellで使用できるデータ容量単位はどこまでか

環境 種別 詳細 OS Windows 8.1 Pro Powershell(PSVersion) 4.0 結論 KB(キロバイト)からP(ペタバイト)までは、問題なく計算で使用できる。 EB(エクサバイト)以降とB(バイト)は使用できない。 PS > 1KB / 1024 1 PS > 1MB / 1024 1024 PS > 1GB / 1024 10485…

Windowsの「ドキュメント(以前の「マイドキュメント」)」の場所を変更する

環境 Windows 8.1 Pro 作業概要 移動用のフォルダを作成し、そのフォルダに[ドキュメント]などの設定を紐づける。 作業内容 移動元のフォルダ名をもとに、移動先に同名のフォルダを作成する。 #移動先のフォルダを作成する。 $srcPath = <ドキュメント関連の…

Powershellのスクリプトを実行可能にする

環境 Windows 8.1 Pro 作業概要 Powershellの実行ポリシーを変更し、ローカル環境のスクリプト実行を許可する。 作業内容 デフォルト設定の実行ポリシー(Restricted/全てのスクリプトが実行禁止)を確認したのち、ローカル環境のスクリプトは実行できるポリシ…

英字レイアウトのキーボードをWindosにおいて使用する設定

PCを買い替えたので、以前使っていた英字レイアウトのキーボードをWindows 8.1 Proでも使用できるようにするために設定を行った。 環境 Windows 8.1 Pro 作業概要 キーボード関連のレジストリを書き換える*1。 作業内容 Powershellを使って、該当するレジス…