LoginSignup
6
8

More than 5 years have passed since last update.

PowerShell コマンドメモ

Last updated at Posted at 2015-08-17

レジストリキー登録

Chef クライアントインストール

PS > Invoke-WebRequest https://opscode-omnibus-packages.s3.amazonaws.com/windows/2008r2/x86_64/chef-client-12.4.1-1.msi -OutFile:chef-client-12.4.1-1.msi

外付けディスクのマウント

サーバー作成直後の状態。

PS > Get-Disk

Number Friendly Name                            OperationalStatus     Total Size Partition Style
------ -------------                            -----------------     ---------- ---------------
0      VMware Virtual disk SCSI Disk Device     Online                     80 GB MBR

ニフティクラウドのコントロールパネルからディスクをアタッチすると、Get-Disk で認識されているディスクの数が増えていることが分かる。

PS > Get-Disk

Number Friendly Name                            OperationalStatus     Total Size Partition Style
------ -------------                            -----------------     ---------- ---------------
0      VMware Virtual disk SCSI Disk Device     Online                     80 GB MBR
1      VMware Virtual disk SCSI Disk Device     Offline                   100 GB RAW


参考:

パスを通す

PS > $Env:Path += ";${Env:ProgramFiles}\vim74-kaoriya-win64\"
PS > vim

恒常的な設定とするには上記を $Profile に書く。

参考: PowerShell/環境変数のパスにパスを追加する - TOBY SOFT wiki

環境変数に関する操作を行う

コマンドプロンプトとは異なり、%TEMP% のような形式では環境変数にアクセスできない。PS ドライブとしてアクセスする。

## 環境変数表示
PS > $env:temp

ファイルを編集する

  • notepad
  • Set-Content
  • vim インストール

PowerShell スクリプトをファイルに書き実行する

PS > notepad test.ps1 # Write-Host 'Hello World' と書き込む
PS > ./test.ps1
Hello World

対話せずにすべてデフォルト値を入力させる (-y みたいなやつ)

-Force オプションを使えばよいらしい。デフォルト値以外を入力させる方法は不明。

PS > Enable-PSRemoting -Force

参考: scripting - Automatic confirmation of deletion in powershell - Stack Overflow

プロフィール (.bash_profile のようなもの) を作成する

プロフィール用ファイルのパスは $Profile に格納されている。

## プロフィールファイルが存在するかどうかを確認
PS > Test-Path $Profile

## 上記で False と表示された場合、ファイルを作成しておく
PS > New-Item –Path $Profile –Type File –Force

## PowerShell 起動時に実行したいコマンドを書き込む
PS > notepad $PROFILE

なお、powershell 起動時に $Profile が実行されるようにするためには、Set-ExecutionPolicy Unrestricted, Set-ExecutionPolicy Bypass 等で実行ポリシーを変更しておく必要がある。

参考:

コマンドレットではないコマンドをコマンドレットに変換して表示する

それ専用のものはないっぽけど、

Get-Help clear

とかやると clear が Clear-Host のエイリアスであることが分かる。

また、

Get-Help -Category:Alias

でエイリアスの一覧を表示できる。

未分類

サービス

サービス起動/停止/一時停止/再起動

サービスの起動タイプ取得・変更

サービス登録

基本

cat/head/tail/wc する

Get-Content でいろいろできるっぽい。
単純なテキストのファイル書き込みは Set-Content

sleep する

Start-Sleep -Seconds:5

grep する

Web からファイルをダウンロードする

PS > Invoke-WebRequest -Uri http://files.kaoriya.net/goto/vim74w64 -OutFile vim.zip

参考: PowerShell で wget のようにファイルダウンロードをしたい - tech.guitarrapc.cóm

zip を展開する

PS > function Expand-ZIPFile($file, $destination) {
  $shell = new-object -com shell.application
  $zip = $shell.NameSpace($file)
  foreach($item in $zip.items()) {
    $shell.Namespace($destination).copyhere($item)
  }
}
PS > mkdir vim
PS > Expand-ZipFile -File vim.zip -Destination vim

参考: How to Extract ZIP Files Using PowerShell

アプリケーション

git を使えるようにする

vim を使えるようにする

function Expand-ZIPFile($file, $destination) {
  $shell = new-object -com shell.application
  $zip = $shell.NameSpace($file)
  foreach($item in $zip.items()) {
    $shell.Namespace($destination).copyhere($item)
  }
}

## vim ダウンロード
Invoke-WebRequest -Uri http://files.kaoriya.net/goto/vim74w64 -OutFile "${Env:Tmp}\vim7w64.zip"

## ダウンロードした zip ファイルを ProgramFiles フォルダへ展開
Expand-ZipFile -File "${Env:Tmp}\vim7w64.zip" -Destination $Env:ProgramFiles

## 展開されたディレクトリにパスを通す
$Env:Path += ";${Env:ProgramFiles}\vim74-kaoriya-win64\"

## vim 起動
vim

WinRM 経由では vim を起動できなかった…。

ページャでファイルを読む

more は普通に使える。less (前後移動) はできない (?)

ネットワーク

名前解決できるようにする (ニフティクラウド限定)

クラウド上のサーバーで名前解決ができない。 | ニフティクラウド

とりあえず Google の DNS サーバーを設定しておく。

## グローバルインターフェースの設定を表示し InterfaceIndex をメモ
PS > Get-NetConnectionProfile -IPv4Connectivity Internet

## 上記の InterfaceIndex に対して Google の DNS サーバーを設定
## InterfaceIndex は 13 ではなく 14 だったりそのときによって変わるっぽいので注意
PS > Set-DNSClientServerAddress -interfaceIndex 13 -ServerAddresses("8.8.8.8", "8.8.4.4")

## 名前解決できるようになっていることを確認
PS > Resolve-DnsName -Name www.google.com

管理

OS 起動・停止・再起動

Start-Computer
Stop-Computer
Restart-Computer

あたり。

Windows Server Core および最小インストールに切り替える

PS > Uninstall-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell -Restart

参考: Windows Server 2012クラウドジェネレーション:第6回 不要な機能を省いて安全性を高めたServer Core (2/2) - @IT

WinRM サービスを有効化する

Enable-PSRemoting -Force
Set-NetConnectionProfile -InterfaceAlias (Get-NetConnectionProfile -IPv4Connectivity Internet).InterfaceAlias -NetworkCategory Private

場合によっては BASIC 認証を有効化する必要もあるかも。 (Ansible 経由で WinRM ログインする場合等?)

PS > winrm get winrm/config/service/auth
PS > winrm set winrm/config/service/auth '@{Basic="true"}'

ruby の winrm gem を利用するには WinRM/README.md at master · WinRb/WinRM に書いてあるように下記が必要だった。

winrm set winrm/config/client/auth @{Basic="true"}
winrm set winrm/config/service/auth @{Basic="true"}
winrm set winrm/config/service @{AllowUnencrypted="true"}

参考:

Windows Server Core でコマンドプロンプトを落としてしまった場合の対処方法

  1. Ctrl+Shift+ESC でタスクマネージャーを表示
  2. ミニマムモードみたいなやつになっているので「詳細」をクリック
  3. 「ファイル」メニューから「新しいタスクの実行」をクリック
  4. cmdpowershell と入力して OK をクリック

参考: Server Coreでコマンド・プロンプトを表示させる- @IT

メモ・疑問

  • Windows 7 では Get-Disk というコマンドレットが使えないが Windows Server では Get-Disk が使えるのはなぜか?

参考

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8