2016年12月31日
2016年12月30日
2016年12月29日
【PowerShell】フォルダ構成を保ったまま指定のファイルのバックアップを行う
2016年12月29日 (木) 21:05 in PowerShell
単純にバックアップを行うには、Copy-Itemでフォルダごとコピーすればいいと思いますが、指定のファイルだけ、しかもフォルダ構成を保ったままコピーするには次のようにします。
PS C:\work> Copy-Item C:\work -Destination I:\Backup -Recurse -Filter "*.log" -Forceこの例では、C:\work以下から拡張子が「log」のファイルをコピーしています。
ポイントは、Filterパラメータでコピーするファイルをフィルタリングしている点です。このFilterパラメータを使わないで単純にコピー元ファイルにワイルドカードで指定しただけではフォルダ構成を保ってのコピーはできません。
結果は、I:\Backup直下にフォルダ構成を保ったまま「work」フォルダが作られます。
ただし、拡張子が「log」以外のファイルはコピーされないので、「log」ファイルが存在しないフォルダは中身が空のフォルダだけが作成されます。
この方法は、例えばファイル名が同じでそれぞれ違うフォルダに入っているような場合に効果を発揮すると思います。
2016年12月28日
【PowerShell】コンソール画面をクリアにする
2016年12月28日 (水) 21:46 in PowerShell
2016年12月27日
【PowerShell】Write-Host
2016年12月27日 (火) 22:47 in PowerShell
Write-Hostを使用すると、コンソールにメッセージを表示できます。
構文
文字列を表示
PS C:\work> Write-Host "Hello PowerShell" Hello PowerShell
-NoNewline
NoNewlineパラメータを使うと、改行が後ろに入りません。PS C:\work> Write-Host "焼肉" -NoNewline ; Write-Host "定食" 焼肉定食
-Separator
Separatorパラメータを使うと、配列を指定したセパレータで区切って表示できます。PS C:\work> Write-Host (1,2,3,4,5) -Separator "==" 1==2==3==4==5 PS C:\work> Write-Host ("a","b","c","d","e") -Separator "; " a; b; c; d; e
テキストの色と背景色を変更する
ForegroundColorパラメータとBackgroundColorパラメータを使うことによって、文字の色と背景色を変更することが出来ます。PS C:\work> Write-Host "Hello PowerShell" -foregroundcolor red -backgroundcolor yellow Hello PowerShell実行するとこんな感じになります。
この機能を使ってこんなことをしてみました。
なんかいろいろ遊べそうです。
2016年12月26日
【PowerShell】Write-Output
2016年12月26日 (月) 22:26 in PowerShell
Write-Outputは、指定されたオブジェクトをパイプラインの次のコマンドに送ります。もしコマンドがパイプラインの最後のコマンドの場合、オブジェクトはコンソールに表示されます。
構文
オブジェクト>
オブジェクトをコンソールに表示
おそらく単純にコンソールに表示するこの使い方が多いと思います。PS C:\work> $p = Get-Process PS C:\work> Write-Output $p Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 275 16 9640 15592 0.05 16468 11 ApplicationFrameHost 250 23 44800 43920 2.09 380 11 chrome 335 33 67904 87852 3.13 936 11 chrome 233 20 32104 32872 1.22 1208 11 chrome 346 39 82904 107948 5.17 4304 11 chrome 403 40 79928 118800 17.95 4348 11 chromeこの例では、Get-Processで取得したオブジェクトを変数$pに格納し、そしてWrite-Outputで$pをコンソールに表示しています。
パイプラインで次のコマンドに送る
PS C:\work> Write-Output "Hello PowerShell" | Get-Memberこの例では、オブジェクト"Hello PowerShell"をパイプラインの次のコマンドGet-Memberに渡しています。
2016年12月25日
PayPalを使ってみた
2016年12月25日 (日) 19:33 in その他
今日、
オライリーで電子書籍を購入したのですが、
なんと、
その支払いを、
PayPalでしてしまいました!
まあ、そんな大げさなことじゃないんですけど、実は今回初めてPayPalを利用してみました。
ていうかPayPalの登録自体も初めてです。
もっと言うとオライリーの電子書籍があること自体、今日初めて知りました。
一応、決済は普通のクレジットカードでも出来たのですが、なんかオライリーのPayPal推しがすごくて流れで登録してしまいました。(笑)
いままでPayPalのことは名前ぐらいしか知らなくて、「クレジットカードの一種なのかな」ぐらいにしか考えてませんでした。
あとで調べて分かったのですが、PayPalというのはメールアドレスとパスワードだけで決済ができるというのが特徴で、クレジットカードの情報などを購入先に教えなくて済むようになっています。これにより今まで以上に簡単に、そして安心して買い物することが出来るようになっています。
日本ではまだあまり馴染みがないですが、海外では既に一般的な決済サービスとして利用されてるようです。
たまにクレジットカードでの決済に不安を感じてわざわざ代金引換してる友人とかいるんで、早く日本でも普及してほしいですね。
2016年12月24日
【PowerShell】Wordのテキストボックスに文字を入力する
2016年12月24日 (土) 20:38 in PowerShell , Word
PowerShellからWordのテキストボックスに文字を入力する方法です。
まず、ワードファイルに一つテキストボックスを貼り付けます。
今回ファイル名は、「TestWordFile.docx」としています。
次にテキストボックスに名前を付けます。
[ホーム]の[編集]から[選択]→[オブジェクトの選択と表示]を選びます。
そして名前を付けます。
今回、「TextBox1」と名前を付けました。
スクリプト
$word = New-Object -ComObject "Word.Application" $word.Visible = $true $word.Documents.Open("C:\work\TestWordFile.docx") $shp = $word.ActiveDocument.Shapes("TextBox1") $shp.TextFrame.TextRange.Text = "あいうえお"
少し解説すると、まず1行目でCOMオブジェクトを作成しています。
そして、4行目でファイルを開き、5行目でShapeオブジェクトを取得し、7行目で文字を入力しています。
結果は、このようになります。
2016年12月23日
【PowerShell】特殊フォルダを取得する
2016年12月23日 (金) 19:16 in PowerShell
PowerShelで特殊フォルダを取得するには、.Net FrameworkのSystem.EnvironmentクラスのGetFolderPathメソッドを使用します。
構文
主な特殊フォルダの表示例
#マイドキュメント PS C:\work> [Environment]::GetFolderPath('MyDocuments') C:\Users\hosopro\Documents #マイミュージック PS C:\work> [Environment]::GetFolderPath('MyMusic') C:\Users\hosopro\Music #マイピクチャ PS C:\work> [Environment]::GetFolderPath('MyPictures') C:\Users\hosopro\Pictures #マイビデオ PS C:\work> [Environment]::GetFolderPath('MyVideos') C:\Users\hosopro\Videos #デスクトップ PS C:\work> [Environment]::GetFolderPath('Desktop') C:\Users\hosopro\Desktop #フォントが含まれる仮想フォルダ PS C:\work> [Environment]::GetFolderPath('Fonts') C:\WINDOWS\Fonts #SendTo PS C:\work> [Environment]::GetFolderPath('SendTo') C:\Users\hosopro\AppData\Roaming\Microsoft\Windows\SendTo #スタートアップ PS C:\work> [Environment]::GetFolderPath('Startup') C:\Users\hosopro\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup #現在のローミングユーザーのApplication Dataフォルダ PS C:\work> [Environment]::GetFolderPath('ApplicationData') C:\Users\hosopro\AppData\Roaming #ローカルApplication Dataフォルダ PS C:\work> [Environment]::GetFolderPath('LocalApplicationData') C:\Users\hosopro\AppData\Local
その他の特殊フォルダについては、下記のサイトをご覧ください。
Environment.SpecialFolder 列挙型
2016年12月22日
【PowerShell】PowerShellのバージョンを確認する
2016年12月22日 (木) 22:40 in PowerShell
PowerShellのバージョンを確認するには、$PSVersionTableを使います。
PS C:\work> $PSVersionTable Name Value ---- ----- PSVersion 5.1.14393.576 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.14393.576 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
2016年12月21日
【PowerShell】TimeSpanオブジェクトを作成する
2016年12月21日 (水) 22:03 in PowerShell
TimeSpanオブジェクトを作成するには、New-TimeSpanを使用します。
構文
New-TimeSpan [-Days <Int32>] [-Hours <Int32>] [-Minutes <Int32>] [-Seconds <Int32>]
TimeSpanオブジェクトの作成
PS C:\work> $TimeSpan = New-TimeSpan -Hours 1 -Minutes 15 PS C:\work> (Get-Date) + $TimeSpan 2016年12月21日 22:47:54この例では、1時間15分のTimeSpanオブジェクトを作成しています。
作成したオブジェクトを使って、現在時刻に対して1時間15分後の時刻を表示しています。
開始と終了を指定してオブジェクトを作成
PS C:\work> New-TimeSpan -Start (Get-Date -Year 2016 -Month 12 -Day 1) -End (Get-Date -year 2017 -Month 1 -Day 1) Days : 31 Hours : 0 Minutes : 0 Seconds : 0 Milliseconds : 0 Ticks : 26784000000000 TotalDays : 31 TotalHours : 744 TotalMinutes : 44640 TotalSeconds : 2678400 TotalMilliseconds : 2678400000この例では、-Startパラメータで開始日を指定し、-Endパラメータで終了日を指定し、TimeSpanオブジェクトを作成しています。
ファイルの更新日からTimeSpanオブジェクトを取得
この例では、test.logが最後に更新されてからの経過時間しています。パイプラインを使った方法
PS C:\work> dir .\test.log | New-TimeSpan Days : 28 Hours : 4 Minutes : 14 Seconds : 12 Milliseconds : 369 Ticks : 24344523696573 TotalDays : 28.1765320562188 TotalHours : 676.23676934925 TotalMinutes : 40574.206160955 TotalSeconds : 2434452.3696573 TotalMilliseconds : 2434452369.6573
-Startパラメータを使った方法
PS C:\work> New-TimeSpan -Start (dir .\test.log).LastWriteTime Days : 28 Hours : 4 Minutes : 14 Seconds : 38 Milliseconds : 506 Ticks : 24344785067793 TotalDays : 28.1768345692049 TotalHours : 676.244029660917 TotalMinutes : 40574.641779655 TotalSeconds : 2434478.5067793 TotalMilliseconds : 2434478506.7793
2016年12月20日
【PowerShell】システム時刻を指定した時刻に変更する
2016年12月20日 (火) 21:47 in PowerShell
システム時刻を指定した時刻に変更するには、Set-Dateを使用します。
構文
-Date
-Dateパラメータを使って時刻を設定するには次のようにします。PS C:\work> Set-Date -Date "2016/12/20 21:40" 2016年12月20日 21:40:00
AddDate
AddDateメソッドを使用して時刻を3日進めるには次のようにします。PS C:\work> Set-Date -Date (Get-Date).AddDays(3) 2016年12月23日 21:42:42
-Adjust
-Adjustパラメータを使用して時刻変更するには次のようにします。PS C:\work> Set-Date -Adjust -0:10:0 2016年12月20日 21:31:45上の例では、10分戻しています。
2016年12月19日
【PowerShell】現在の日付と時刻を取得する
2016年12月19日 (月) 21:43 in PowerShell
現在の日付と時刻を取得するには、Get-Dateを使用します。
構文
Get-Date [-Format <書式指定子>]
Get-Date [-UFormat <書式指定子>]
現在の日付と時刻を表示
PS C:\work> Get-Date 2016年12月18日 18:21:12
日付だけ表示
PS C:\work> Get-Date -DisplayHint Date 2016年12月18日
時刻だけ表示
PS C:\work> Get-Date -DisplayHint Time 18:28:36
書式を設定して表示する
PS C:\work> Get-Date -Format d 2016/12/18 PS C:\work> Get-Date -Format D 2016年12月18日 PS C:\work> Get-Date -Format f 2016年12月18日 18:44 PS C:\work> Get-Date -Format F 2016年12月18日 18:44:18 PS C:\work> Get-Date -Format g 2016/12/18 18:44 PS C:\work> Get-Date -Format G 2016/12/18 18:44:24 PS C:\work> Get-Date -Format M 12月18日 PS C:\work> Get-Date -Format O 2016-12-18T18:44:37.3080963+09:00 PS C:\work> Get-Date -Format R Sun, 18 Dec 2016 18:44:54 GMT PS C:\work> Get-Date -Format t 18:45 PS C:\work> Get-Date -Format T 18:45:04 PS C:\work> Get-Date -Format u 2016-12-18 18:45:07Z PS C:\work> Get-Date -Format U 2016年12月18日 9:45:10 PS C:\work> Get-Date -Format Y 2016年12月 PS C:\work> Get-Date -Format ddd 日 PS C:\work> Get-Date -Format gg 西暦 PS C:\work> Get-Date -Format MMM 12 PS C:\work> Get-Date -Format MMMM 12月 PS C:\work> Get-Date -Format tt 午後書式の詳細は、https://msdn.microsoft.com/library/system.globalization.datetimeformatinfo.aspx#Formatting_dates_timesを参照ください。
-UFormat
Get-Date -UFormat %いくつか例を紹介します。
PS C:\work> Get-Date -UFormat %D 12/18/16 PS C:\work> Get-Date -UFormat %x 12/18/16 PS C:\work> Get-Date -UFormat %G 2016 PS C:\work> Get-Date -UFormat %Y 2016 PS C:\work> Get-Date -UFormat %b 12 PS C:\work> Get-Date -UFormat %W 50 PS C:\work> Get-Date -UFormat %a 日 PS C:\work> Get-Date -UFormat %R 18:51 PS C:\work> Get-Date -UFormat %p 午後その他の設定値は、https://technet.microsoft.com/ja-JP/library/dd347647.aspxをご覧ください。
2016年12月18日
【Windows10】起動時にWindows Time サービスを起動させる
2016年12月18日 (日) 22:28 in Linux , Windows10
以前、Windows10の時刻自動設定がおかしいという記事を書いたのですが、すみません、時刻が同期されないのは別の原因だったことが分かりました。
まず、前提として、私の環境なんですが、Windows10とLinuxをデュアルブートしている環境なんです。そして、このデュアルブートの環境が、時刻のずれる原因の一つでした。
そしてもう一つ、Windowsのサービスの起動方法が影響していました。
OSの時刻の管理方法の違い
まずWindowsでは、起動時にハードウェアクロックから時刻を取得してきてOS側で管理しているのですが、このときWindowsはこのハードウェアクロックをローカルタイムとして認識しています。次にLinuxですが、Linuxも同じように起動時にハードウェアクロックから時刻を取得しているのですが、このときLinuxはハードウェアクロックをUTCとして認識しているんです。
そして、このOSによるハードウェアクロックの認識の違いが、デュアルブートにおいて時刻のずれを引き起こします。
では、具体的に例をあげると次のようになります。
2016年12月17日
【PowerShell】カレンダー表示スクリプトを作ってみた
2016年12月17日 (土) 21:16 in PowerShell
今年もあと残りわずかとなってきましたが、そろそろ来年のカレンダーの購入なんて考えてる方も多いのではないでしょうか。
そこでふと思ったのは、PowerShellでカレンダーの表示はできないものか?
調べたところ、どうやらそういうコマンドレットは無いらしいです。(当たり前か)
うーん・・・、じゃあ作るか!
そんなわけで、PowerShellでカレンダー表示スクリプトを作成してみました。
#カレンダー表示スクリプト #パラメータ Param($year, $month) if (($year -eq $null) -And ($month -eq $null)){ #両方nullなら今月 $y = (Get-Date).Year $m = (Get-Date).Month } elseif (($year -ne $null) -And ($month -ne $null)) { #パラメータがある場合は入力値の月 $y = $year $m = $month } else { #それ以外はエラー Write-Output 'パラメータが間違っています。[年] [月]を指定してください。' exit } #ついたちの曜日値を取得 $firstDayOfWeek = (Get-Date -Year $y -Month $m -Day 1).DayOfWeek.value__ #始まりの空白を設定 $startWeek = $firstDayOfWeek * 7 + 2 $space = "" for ($j=0; $j -lt $startWeek; $j++){ $space = $space + " " } #その月の最終日を取得 $nextMonthDate = (Get-Date -Year $y -Month $m -Day 1).AddMonths(1) $lastDay = (Get-Date -Year $nextMonthDate.Year -Month $nextMonthDate.Month -Day 1).AddDays(-1).day #年月表示 Write-Host $y"年"$m"月" #曜日の表示 Write-Host "SUN MON TUE WED THU FRI SAT" #日付部分を作成 $weekValue = $firstDayOfWeek $dayString = $space for ($i=1; $i -le $lastDay; $i++){ if ($i -ge 9){ $dayString = $dayString + $i + " " } else { $dayString = $dayString + $i + " " } $weekValue = $weekValue + 1 if ($weekValue -eq 7) { #土曜日までいったら改行 $dayString = $dayString.TrimEnd() if ($i -lt 9){ $dayString = $dayString + "`n" + " " } else { $dayString = $dayString + "`n" + " " } $weekValue = 0 } } #日付の表示 Write-host $dayString.TrimEnd()パラメータで年、月を指定すると、その年月のカレンダーが表示されます。
何も指定しなければ今月のカレンダーが表示されるようにしました。
実行するとこんな感じになります。
パラメータなし。
今月のカレンダーが表示されます。
パラメータあり。
2017年1月のカレンダーが表示されています。
2016年12月16日
【PowerShell】指定したファイルに対してデフォルトアクションを実行する
2016年12月16日 (金) 21:46 in PowerShell
指定したファイルに対してデフォルトアクションを実行するには、Invoke-Itemを使用します。
構文
ファイル名>
指定したファイルを開く
PS C:\work> Invoke-Item "TestWordFile.docx"ファイルの拡張子に関連付け得られたアプリケーションで指定されたファイルが開きます。
この例では、Wordでファイルが開かれます。
ワイルドカードですべてのファイルを開く
PS C:\work> Invoke-Item "*.xlsx"ワイルドカードによりすべてのファイルが開かれます。
この例ではExcelで「xlsx」ファイルが開かれます。
2016年12月15日
【PowerShell】コマンド履歴からコマンドを実行する
2016年12月15日 (木) 22:00 in PowerShell
コマンド履歴からコマンドを実行するには、Invoke-Historyを使用します。
構文
コマンドid>
直前のコマンドを実行する
コマンド履歴の中から直前のコマンドを実行するには、単にInvoke-Historyと実行します。PS C:\work> Invoke-History
ちなみにこのInvoke-Historyは履歴には残りません。
IDを指定して実行する
たとえばいま履歴がこのようになっていたとします。PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 dir 3 Start-Process -FilePath "notepad.exe" 4 Get-Help Copy-Item
ここで、Id=3のコマンドを実行させるには次のようにします。
PS C:\work> Invoke-History -Id 3 Start-Process -FilePath "notepad.exe"
<関連記事>
【PowerShell】コマンド履歴に追加する
【PowerShell】コマンド履歴をクリアする
【PowerShell】入力されたコマンドの履歴を取得する
【PowerShell】コマンドの実行時間を計測する
【PowerShell】指定した期間動作を一時停止する
2016年12月14日
【PowerShell】コマンド履歴に追加する
2016年12月14日 (水) 22:06 in PowerShell
コマンド履歴に追加するには、Add-Historyを使用します。
構文
オブジェクト>
CSVファイルからのインポート
コマンド履歴をCSVファイルに出力し、それをインポートして履歴に追加することが出来ます。例えば、次のような履歴があったとします。
PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 dir 3 Start-Process -FilePath "notepad.exe" 4 Get-Help Copy-Item
これをCSVファイルにエクスポートします。
PS C:\work> Get-History | Export-Csv C:\work\history.csv
そして、次にこのCSVファイルをインポートします。
PS C:\work> Import-Csv .\history.csv | Add-History PS C:\work> PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 dir 3 Start-Process -FilePath "notepad.exe" 4 Get-Help Copy-Item 5 Get-History | Export-Csv C:\work\history.csv 6 Import-Csv .\history.csv | Add-History 7 cd c:\work 8 dir 9 Start-Process -FilePath "notepad.exe" 10 Get-Help Copy-ItemCSVファイルの履歴が後ろに追加されました。
オブジェクト変数に読み込んだリストを追加する
CSVファイルをオブジェクト変数に読み込み、履歴に追加する方法です。PS C:\work> $a = Import-Csv C:\work\history.csv PS C:\work> Add-History -InputObject $a -Passthru Id CommandLine -- ----------- 5 cd c:\work 6 dir 7 Start-Process -FilePath "notepad.exe" 8 Get-Help Copy-Item$aにインポートしたCSVデータを読み込み、-InputObjectパラメータで履歴を追加しています。
PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 dir 3 $a = Import-Csv C:\work\history.csv 4 Add-History -InputObject $a -Passthru 5 cd c:\work 6 dir 7 Start-Process -FilePath "notepad.exe" 8 Get-Help Copy-Item読み込んだ履歴が後ろに追加されました。
<関連記事>
【PowerShell】コマンド履歴からコマンドを実行する
【PowerShell】コマンド履歴をクリアする
【PowerShell】入力されたコマンドの履歴を取得する
【PowerShell】コマンドの実行時間を計測する
【PowerShell】指定した期間動作を一時停止する
2016年12月13日
【PowerShell】コマンド履歴をクリアする
2016年12月13日 (火) 21:49 in PowerShell
コマンド履歴をクリアするには、Clear-Historyを使用します。
構文
クリアするエントリ数>コマンドid>
履歴を全てクリアする
例えば下記のようにコマンド履歴があったとします。PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 dir 3 Start-Process -FilePath "notepad.exe" 4 Get-History 5 Get-Help Get-ChildItem
この履歴をすべてクリアするには単純にClear-Historyを実行します。
PS C:\work> Clear-History PS C:\work> PS C:\work> Get-History Id CommandLine -- ----------- 7 Clear-HistoryClear-Historyを実行する前の履歴がすべてクリアされました。
-Id
指定したIDのコマンドをクリアします。例えば下記のようにコマンド履歴があったとします。
PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 Get-ChildItem 3 Get-Help Copy-Item 4 Get-Clipboard 5 Get-Clipboard
この履歴のId=3のコマンドをクリアするには次のようします。
PS C:\work> Clear-History -Id 3 PS C:\work> PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 Get-ChildItem 4 Get-Clipboard 5 Get-Clipboard 6 Get-History 7 Clear-History -Id 3Id=3のコマンドがクリアされました。
直近の指定した数分コマンドをクリア
例えば下記のようにコマンド履歴があったとします。PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 Get-ChildItem 4 Get-Clipboard 5 Get-Clipboard 6 Get-History 7 Clear-History -Id 3
この履歴の直近の3つのコマンドをクリアするには次のようにします。
PS C:\work> Clear-History -Count 3 -Newest PS C:\work> PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 Get-ChildItem 4 Get-Clipboard 5 Get-Clipboard 9 Clear-History -Count 3 -Newest
指定したIDからCount数分遡って履歴をクリア
例えば下記のようにコマンド履歴があったとします。PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 Get-ChildItem 4 Get-Clipboard 5 Get-Clipboard 9 Clear-History -Count 3 -Newest 10 Get-History 11 Get-History 12 Start-Process -FilePath "notepad.exe"
この履歴から、Id=5から遡って3つのコマンド履歴をクリアするには次のようにします。
PS C:\work> Clear-History -Id 5 -Count 3 PS C:\work> PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 9 Clear-History -Count 3 -Newest 10 Get-History 11 Get-History 12 Start-Process -FilePath "notepad.exe" 13 Get-History 14 Clear-History -Id 5 -Count 32, 4, 5のコマンドがクリアされました。
<関連記事>
【PowerShell】コマンド履歴からコマンドを実行する
【PowerShell】コマンド履歴に追加する
【PowerShell】入力されたコマンドの履歴を取得する
【PowerShell】コマンドの実行時間を計測する
【PowerShell】指定した期間動作を一時停止する
2016年12月12日
【PowerShell】入力されたコマンドの履歴を取得する
2016年12月12日 (月) 22:21 in PowerShell
入力されたコマンドの履歴を取得するには、Get-Historyを使用します。
構文
最近の履歴エントリ数>コマンドid>
パラメータを何もつけないで実行したときです。
最新の32個のコマンドが表示されます。
PS C:\work> Get-History Id CommandLine -- ----------- 1 cd c:\work 2 Get-ChildItem 3 Start-Process -FilePath "notepad.exe"
-Id
指定したIDのコマンドを表示します。PS C:\work> Get-History -Id 2 Id CommandLine -- ----------- 2 Get-ChildItem
-Count
指定した数分の直近の履歴を表示します。PS C:\work> Get-History -Count 3 Id CommandLine -- ----------- 3 Start-Process -FilePath "notepad.exe" 4 Get-History 5 Get-History -Id 2
-Idと-Countの組み合わせ
指定したIDからCount数分遡って履歴を表示します。PS C:\work> Get-History -Id 4 -Count 3 Id CommandLine -- ----------- 2 Get-ChildItem 3 Start-Process -FilePath "notepad.exe" 4 Get-History
<関連記事>
【PowerShell】コマンド履歴に追加する
【PowerShell】コマンド履歴をクリアする
【PowerShell】コマンド履歴からコマンドを実行する
【PowerShell】コマンドの実行時間を計測する
【PowerShell】指定した期間動作を一時停止する
2016年12月11日
WELQ問題で思うこと
2016年12月11日 (日) 21:56 in コラム
「成長を追い求めすぎた」──DeNA守安社長、キュレーションメディア問題に謝罪 南場会長もコメント
DeNAの説明だと医療・健康に関する不正確な情報の内容を記載してたとして11月下旬、WELQ全記事を非公開にしたそうです。
問題は、専門家の監修のないまま記事を掲載していたのと、他サイトの記事をパクってたことなんですが、いや~ひどいですね。個人がやってるならまだしも、DeNAというべイスターズの親会社にもなっている大きな会社がこういうことしてるっていうのは信じられないというか、まったく企業体質自体を疑いたくなってきますね。
そもそもなんでこんなキュレーションサイトの運営に手を出したんですかね。たしかDeNAってゲーム作ってる会社ですよね。ゲームだけじゃやってけないんですかね?ていうかキュレーションサイトってそんなに儲かるんですかね?
たぶん儲かるんでしょうね。ここ3年ぐらいじゃないですか、こういうキュレーションサイトが増えてきたのって。おそらく、みんながスマホでネットにアクセスするようになって、それでグノシーとかスマートニュースとかLINEニュースで記事を読むようになったっていうのが大きいと思うんですよ。自分なんかも電車乗ってるときとかに暇つぶしに見てしまうんですが、スマホで見てると間違って広告をタップしてしまうことってよくあるんです。だから、PCで見るよりクリック率が高いんじゃないですかね。
ただ、こういうキュレーションサイトってどうなんですかね。なかには面白い記事もあるんですが、だいたいはタイトル倒れだったり、中身の薄いどうでもいいことが書いてあったり、それってほんと?って思えるようなことが書いてあったりします。なんで正直もう飽き飽きしてるというか、キュレーションサイト多すぎ!って思います。
それとあと他にも問題ありますよ。
こんなキュレーションサイトの記事がどうやって作られてるかってことですよ。
私は以前個人事業主で働いてて、仕事をクラウドワークスやランサーズ、@SOHOといった、いわゆるクラウドソーシングと言われるところから得てたりしてたんですが、そういうところにはライティングの仕事が結構あるんですよね。
自分はシステム開発が仕事なんでそういうライティングの仕事はしたことないんですが、だいたい1件あたり2000文字以上で3000~5000円という感じで出ています。中には1記事1000文字以上で200~300円という単価のところもあります。1記事200円ですよ。そんなの絶対割に合わないですよ。自分で取材して記事にするなんて絶対無理です。はっきり言って他のサイトから記事をパクってくるしかないですよ、こんな安かったら。
今回問題になったWELQもパクリ記事が結構あったみたいですし、その背景にはこういうクラウドソーシングの安い単価の問題も隠されてるんじゃないですかね。
大企業が安い労働力で利益を得ている。
まさにブラックですね。
今の日本経済の縮図がここに表れてるんじゃないでしょうか。
2016年12月10日
【Linux】Linux Mint にSophos Anti-Virus for Linux(Free Edition)を入れてみた
2016年12月10日 (土) 23:26 in Linux
2016年12月9日
【PowerShell】新しいWindowsサービスを登録する
2016年12月9日 (金) 22:00 in PowerShell
新しいWindowsサービスを登録するには、New-Serviceを使用します。
構文
説明>スタートアップ種類>表示名>サービスプログラム名>サービス名>
表示名、スタートアップの種類、説明を含むサービスの作成
PS C:\> New-Service -Name "TestService" -BinaryPathName "C:\work\Service\ServiceProgramTest.exe" -DisplayName "Test Service" -StartupType Manual -Description "This is a test service." Status Name DisplayName ------ ---- ----------- Stopped TestService Test Service
追加したサービスの表示
PS C:\> Get-WmiObject win32_service -Filter "name='TestService'" ExitCode : 0 Name : TestService ProcessId : 9672 StartMode : Manual State : Running Status : OK
サービスの削除
サービスを削除するには、次のいずれかで行います。PS C:\> sc.exe delete TestService [SC] DeleteService SUCCESS
PS C:\> (Get-WmiObject win32_service -Filter "name='TestService'").delete() __GENUS : 2 __CLASS : __PARAMETERS __SUPERCLASS : __DYNASTY : __PARAMETERS __RELPATH : __PROPERTY_COUNT : 1 __DERIVATION : {} __SERVER : __NAMESPACE : __PATH : ReturnValue : 0 PSComputerName :
2016年12月8日
【PowerShell】サービスのスタートアップの種類を設定する
2016年12月8日 (木) 21:58 in PowerShell
サービスのスタートアップの種類をを設定するには、Set-Serviceを使用します。
構文
種類>サービス名>
自動
PS C:\> Set-Service -Name 'MSSQL$MSSQLSERVER2016' -StartupType 'Automatic'
手動
PS C:\> Set-Service -Name 'MSSQL$MSSQLSERVER2016' -StartupType 'Manual'
無効
PS C:\> Set-Service -Name 'MSSQL$MSSQLSERVER2016' -StartupType 'Disabled'
2016年12月7日
【PowerShell】サービスを再開する
2016年12月7日 (水) 21:38 in PowerShell
サービスを再開するには、Resume-Serviceを使用します。
構文
Resume-Service -DisplayName <表示名>
表示名>サービス名>
-Name
PS C:\> Resume-Service -Name 'MSSQL$MSSQLSERVER2016'サービス名が「MSSQL$MSSQLSERVER2016」のサービスを再開する例です。
-DisplayName
PS C:\> Resume-Service -DisplayName 'SQL Server (MSSQLSERVER2016)'表示名が「SQL Server (MSSQLSERVER2016)」のサービスを再開する例です。
※サービス名、表示名で指定する名前は、シングルコーテーションで囲んだほうがいいようです。
-Nameの例のように中に「$」が入っているとダブルコーテーションではうまく認識されないようです。
2016年12月6日
【PowerShell】サービスを一時停止する
2016年12月6日 (火) 21:39 in PowerShell
サービスを一時停止するには、Suspend-Serviceを使用します。
構文
Suspend-Service -DisplayName <表示名>
表示名>サービス名>
-Name
PS C:\> Suspend-Service -Name 'MSSQL$MSSQLSERVER2016' PS C:\> PS C:\> Get-Service -Name 'MSSQL$MSSQLSERVER2016' Status Name DisplayName ------ ---- ----------- Paused MSSQL$MSSQLSERV... SQL Server (MSSQLSERVER2016)サービス名が「MSSQL$MSSQLSERVER2016」のサービスを一時停止する例です。
-DisplayName
PS C:\> Suspend-Service -DisplayName 'SQL Server (MSSQLSERVER2016)' PS C:\> PS C:\> Get-Service -DisplayName 'SQL Server (MSSQLSERVER2016)' Status Name DisplayName ------ ---- ----------- Paused MSSQL$MSSQLSERV... SQL Server (MSSQLSERVER2016)表示名が「SQL Server (MSSQLSERVER2016)」のサービスを一時停止する例です。
※サービス名、表示名で指定する名前は、シングルコーテーションで囲んだほうがいいようです。
-Nameの例のように中に「$」が入っているとダブルコーテーションではうまく認識されないようです。
2016年12月5日
【PowerShell】サービスの再起動する
2016年12月5日 (月) 21:35 in PowerShell
サービスの再起動を行うには、Restart-Serviceを使用します。
構文
Restart-Service -DisplayName [表示名]
-Name
PS C:\> Restart-Service -Name 'MSSQL$MSSQLSERVER2016'サービス名が「MSSQL$MSSQLSERVER2016」のサービスを再起動する例です。
-DisplayName
PS C:\> Restart-Service -DisplayName 'SQL Server (MSSQLSERVER2016)'表示名が「SQL Server (MSSQLSERVER2016)」のサービスを再起動する例です。
※サービス名、表示名で指定する名前は、シングルコーテーションで囲んだほうがいいようです。
-Nameの例のように中に「$」が入っているとダブルコーテーションではうまく認識されないようです。
2016年12月4日
【PowerShell】サービスを停止する
2016年12月4日 (日) 19:48 in PowerShell
サービスを停止するには、Stop-Serviceを使用します。
構文
Stop-Service -DisplayName <表示名>
表示名>サービス名>
-Name
PS C:\> Stop-Service -Name 'MSSQL$MSSQLSERVER2016'サービス名に「MSSQL$MSSQLSERVER2016」を指定した例です。
-DisplayName
PS C:\> Stop-Service -DisplayName 'SQL Server (MSSQLSERVER2016)'表示名に「SQL Server (MSSQLSERVER2016)」を指定した例です。
※サービス名、表示名で指定する名前は、シングルコーテーションで囲んだほうがいいようです。
-Nameの例のように中に「$」が入っているとダブルコーテーションではうまく認識されないようです。
2016年12月3日
【PowerShell】サービスを開始する
2016年12月3日 (土) 21:51 in PowerShell
2016年12月2日
【PowerShell】サービスを取得する
2016年12月2日 (金) 22:50 in PowerShell
サービスを取得するには、Get-Serviceを使用します。
構文
Get-Service -Displayname [表示名]
サービスの一覧を表示
PS C:\> Get-Service登録されているサービスの一覧が表示されます。
-Name
PS C:\> Get-Service -Name "SQL*" Status Name DisplayName ------ ---- ----------- Stopped SQLAgent$MSSQLS... SQL Server エージェント (MSSQLSERVE... Stopped SQLAgent$SQLEXP... SQL Server エージェント (SQLEXPRESS... Stopped SQLBrowser SQL Server Browser Running SQLTELEMETRY$MS... SQL Server CEIP service (MSSQLSERVE... Running SQLWriter SQL Server VSS Writerサービスの「Name」がSQLで始まるサービスの一覧を表示しています。
-Displayname
PS C:\> Get-Service -DisplayName "SQL*" Status Name DisplayName ------ ---- ----------- Running MSSQL$MSSQLSERV... SQL Server (MSSQLSERVER2016) Running MSSQL$SQLEXPRES... SQL Server (SQLEXPRESS2014) Running MSSQLFDLauncher... SQL Full-text Filter Daemon Launche... Stopped SQLAgent$MSSQLS... SQL Server エージェント (MSSQLSERVE... Stopped SQLAgent$SQLEXP... SQL Server エージェント (SQLEXPRESS... Stopped SQLBrowser SQL Server Browser Running SQLTELEMETRY$MS... SQL Server CEIP service (MSSQLSERVE... Running SQLWriter SQL Server VSS Writerサービスの「DisplayName」がSQLで始まるサービスの一覧を表示しています。
現在アクティブなサービスを表示する
PS C:\> Get-Service | Where-Object {$_.Status -eq "Running"}
2016年12月1日
【PowerShell】プロセスをデバッグする
2016年12月1日 (木) 19:49 in PowerShell
実行中のプロセスをデバッグするには、Debug-Processを使用します。
構文
Debug-Process -Id [プロセスID]
Debug-Process -InputObject [オブジェクト変数]
PS C:\> Debug-Process -Name "HelloPowerShell"
対象のプロセスが実行されてる状態でこのように実行すると、デバッガーの選択画面が表示されます。
デバッガーを選択してOKボタンを押すとデバッガーが起動してきます。
この例では、VisualStudioを起動しているのですが、起動したあとのデバッグのやり方はよく分かりませんでした。
ソリューションエクスプローラーで「新しいインスタンスにステップイン」を行えばソースコードが表示されデバッグが行えるのですが、ただそれだと実行中のプロセスではなく新たに起動したプロセスに対してデバッグすることになってしまいます。
ネットでも調べたのですが、この辺のことはよく分かりませんでした。
まあ、PowerShellとはまた別問題ですので、今後また何か分かりましたら書きたいと思います。
<関連記事>
【PowerShell】プロセスの停止を待つ
【PowerShell】プロセスを開始する
【PowerShell】実行中のプロセスを取得する
【PowerShell】実行中のプロセスを停止する
【PowerShell】サービスを取得する