レジストリキー登録
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
参考:
-
Use PowerShell to Initialize Raw Disks and to Partition and Format Volumes - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs
- 複数の RAW ディスクがある場合どうなるのか?
- confirm false だけどなんか聞かれた
- 実行後 E ドライブになったが Get-PSDrive しても見えなかった
- Get-Volume してから Get-PSDrive したら見えるようになったっぽい
- Disk - Set as Offline or Online
- Set-Disk
- Windows Server にEBS Volumeを追加する | Developers.IO
パスを通す
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"}
参考:
- NiftyCloud - ニフティクラウド 上の SQL Server 2012 R2 サーバーに Windows 7 から WinRM 経由でログインする - Qiita
- AnsibleからWindowsを叩く | 雲間を泳ぐ
Windows Server Core でコマンドプロンプトを落としてしまった場合の対処方法
- Ctrl+Shift+ESC でタスクマネージャーを表示
- ミニマムモードみたいなやつになっているので「詳細」をクリック
- 「ファイル」メニューから「新しいタスクの実行」をクリック
-
cmd
やpowershell
と入力して OK をクリック
参考: Server Coreでコマンド・プロンプトを表示させる- @IT
メモ・疑問
- Windows 7 では
Get-Disk
というコマンドレットが使えないが Windows Server ではGet-Disk
が使えるのはなぜか?