2015年5月30日土曜日

[PowerShell] 最新のWindows Serverバックアップの内容を取得する

wbadminコマンドでWindows Serverバックアップの内容を取得するときは
 (1)wbadmin get versions で利用可能なバックアップのバージョンを取得
 (2)wbadmin get items -version:バージョン識別子 でバックアップ内容を取得
という手順になります。いちいちバージョンを確認するのが面倒なのでPowerShellをしようしたスクリプトで自動化しました。
このコマンドはコマンドプロンプトではなくPowerShellにて実行します。


# Windows Serverバックアップにて有効なバックアップの一覧を取得します
$Wbadminlog = wbadmin get versions

# 取得した一覧の情報を1行ずつ取り出せるよう加工します
$Wbadminlog = $Wbadminlog -split "`n"

# 一覧の情報の行数を取得します
$WbadminlogNoteLineCount = $Wbadminlog.Length

# 変数の初期値を設定
$i = 0
$BackupVersion = ""
$BackupDate = Get-Date "2000/01/01"


# 最も新しい日付のバックアップバージョンを取得
while ($i -lt $WbadminlogNoteLineCount){
    if($Wbadminlog[$i] -like "バージョン識別子: *"){
        if ($BackupDate -lt (Get-Date $Wbadminlog[$i].Substring(10,16))){
            $BackupVersion = $Wbadminlog[$i].Substring(10,16)
            $BackupDate = (Get-Date $Wbadminlog[$i].Substring(10,16))
        }
    }
    $i ++
}

# 最も新しいバックアップの内容を取得します
wbadmin get items -version:$BackupVersion




[PowerShell] Get-WinEventで必要なログのみを取得する

PowerShell の Get-WinEvent コマンドを使ってイベントログの内容を出力します。
日常的にイベントログを監視する場合は監視から除外したいログが出てきますので、それを含まない形で出力します。


# 対象コンピュータを指定する
$ComName = [Net.Dns]::GetHostName()

# 抽出を行うログを指定する
$LogName = "System"

# 抽出を行う期間を指定する
$StartTime = (Get-Date).AddDays(-7)
$EndTime   = Get-Date


# 監視対象から除外するイベントを記載する
$ExceptionFilter=
@(
    @{
        Id = 1014;  
        Level = 3; 
        ProviderName = "Microsoft-Windows-DNS-Client";
    },
    @{
        Id = 22;  
        Level = 3; 
        ProviderName = "Microsoft-Windows-Hyper-V-VmSwitch";
    }
)     


# 指定した種類・期間のイベントログを取得する
$EventsList = Get-WinEvent -ComputerName $ComName -FilterHashTable @{LogName=$LogName ; StartTime=$StartTime ; EndTime = $EndTime }


# 重大、エラー、警告以外のイベントを除外する
$EventsList = $EventsList | Where-Object {$_.Level -le 3}


# 除外リストに記載のログを除外する
$Cnt = 0
while ($Cnt -lt $ExceptionFilter.count) {
    $EventsList = $EventsList | Where-Object {-not ($_.Id -eq $ExceptionFilter[$Cnt].Id -and $_.Level -eq $ExceptionFilter[$Cnt].Level -and $_.ProviderName -eq $ExceptionFilter[$Cnt].ProviderName)}
    $Cnt++
}

# イベントのリストを出力する
$EventsList | Format-List -Property  LogName, MachineName, LevelDisplayName, TimeCreated, ProviderName, Id, UserId, Message 
 
 
参考サイト
Get-WinEvent
連想配列を変換してユーザー定義オブジェクトを簡単に作成する

2015年3月7日土曜日

[Powershell] フォルダーオプションを設定し登録されている拡張子を表示させる

フォルダーオプションの設定をPowerShellで行い、登録されている拡張子を表示させるようにします。
(Explorerのサービスは停止しても自動で起動します)

$key = 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced'
Set-ItemProperty $key HideFileExt 0
Stop-Process -processname explorer

[Powershell] NICに固定IPを設定する。

NICに固定のIPアドレスを設定します。
IPv4アドレスをDHCPで取得しているNICを検出して、それが1つだけの場合はIPアドレスを設定します。(PowerShell3.0以上)
# IPアドレス、サブネットマスク、DNSサーバ、デフォルトゲートウェイを設定します。

$IpAddress      = "192.168.24.32"
$SubNetMask     = "24"
$DnsServer      = "192.168.24.1"
$DefaultGateway = "192.168.24.1"

# IPv4でDHCPでIPアドレスを取得しているインターフェースを取得します。
$IPv4Interface = Get-NetIPAddress | ? {$_.PrefixOrigin -eq "Dhcp" -and $_.AddressFamily -eq "IPv4" }

# 取得できたインターフェースが1つだけの場合はネットワーク情報を設定します。
if ($IPv4Interface.Count -lt 2) {

        $NicInterfaceIndex = $IPv4Interface.InterfaceIndex

        New-NetIPAddress `
            –InterfaceIndex $NicInterfaceIndex `
            –IPAddress $IpAddress `
            -PrefixLength $SubNetMask `
            -DefaultGateway $DefaultGateway

        Set-DnsClientServerAddress `
            -InterfaceIndex $NicInterfaceIndex `
            -ServerAddresses $DnsServer

}
 
 


2014年12月11日木曜日

MCP 70-347 「OFFICE 365 サービスの有効化」の参考サイト

MS EXAM 70-347: OFFICE 365 サービスの有効化 の試験範囲の参考サイトのリンク集です。

ANDERS EIDE BLOG
MS EXAM 70-347: ENABLING OFFICE 365 SERVICES
より引用になります。

Office 365 MCSA トラックの2つめのテストになります。
https://www.microsoft.com/learning/ja-jp/mcsa-office365-certification.aspx
試験のホームページは
https://www.microsoft.com/learning/ja-jp/exam-70-347.aspx

下記はこの試験で使用するPowerSehllの参考サイトになります。

Office Ignite Labs (英語)
http://officeignitelabs.cloudguides.com/

Windows PowerShell による Azure AD の管理
http://msdn.microsoft.com/ja-jp/library/azure/jj151815.aspx

Exchange Online の PowerShell
http://technet.microsoft.com/ja-jp/library/jj200677%28v=exchg.150%29.aspx

SharePoint Online Management Shell の概要
https://support.office.com/ja-jp/article/Introduction-to-the-SharePoint-Online-Management-Shell-c16941c3-19b4-4710-8056-34c034493429

Windows PowerShell による Lync Online の管理
http://technet.microsoft.com/ja-jp/library/dn362831.aspx



1 : クライアントおよびエンド ユーザー デバイスの管理

1-1 : ユーザー駆動型のクライアント展開の管理

Office 365 ProPlus のセルフ プロビジョニングの制限、Windows ストア アプリとモバイル アプリ、アクティブ化/アクティブ化の取り消し、Office for Mac

Office 365 ポータルからインストールできる Office ソフトウェアを選択する
http://technet.microsoft.com/ja-jp/library/jj219421.aspx

モバイル デバイスにアプリをインストールする
https://support.office.com/ja-jp/article/Install-apps-on-your-mobile-devices-7dabb6cb-0046-40b6-81fe-767e0b1f014f?ui=en-US&rs=en-US&ad=US

Office 365 ProPlus のライセンスおよびライセンス認証の概要
http://technet.microsoft.com/ja-jp/library/gg982959.aspx

1-2 : Office 365 ProPlus の IT 展開の管理

展開の管理、ストリーミング更新の管理、Office 展開ツールの使用、展開のカスタマイズ

Office 365 ProPlus Deployment for IT Pros (英語)
http://www.microsoftvirtualacademy.com/training-courses/office-365-deployment-for-it-pros

Office 365 ProPlus に使用する展開方法の決定
http://technet.microsoft.com/ja-jp/library/gg998766.aspx

Office 365 ProPlus の展開のためのスタート ガイド
http://technet.microsoft.com/ja-jp/library/jj839718.aspx

Office 365 クイック実行セットアップのアーキテクチャの概要
http://technet.microsoft.com/ja-jp/library/jj219420(v=office.15).aspx

1-3 : テレメトリとレポートのセットアップ

グループ ポリシーによるテレメトリの有効化、テレメトリ サービスのセットアップ、ユーザーに関する問題のレポート、エージェントの展開

Course 2, 3 and 4 in the Office 365 ProPlus Deployment for IT Pros (英語)
- 02 | Office Telemetry Overview
– 03 | Advanced Telemetry
– 04 | Telemetry Custom Reporting
http://www.microsoftvirtualacademy.com/training-courses/office-365-deployment-for-it-pros

Office テレメトリの概要
http://technet.microsoft.com/ja-jp/library/jj863580.aspx

1-4 : Office クライアントの計画

Outlook、Lync クライアント、Office オンデマンド、Office Web Apps、クイック実行と MSI

Plan and deploy Office 2013
http://technet.microsoft.com/ja-jp/library/cc178982.aspx

Office 2013 の計画と展開
http://technet.microsoft.com/ja-jp/library/cc178982.aspx

Office Web Apps
http://technet.microsoft.com/ja-jp/library/jj219456.aspx

Office Web Apps サーバー
http://technet.microsoft.com/ja-jp/library/jj219456.aspx

Clients for Lync Online
http://technet.microsoft.com/ja-jp/library/lync-online-clients.aspx

Lync Online のクライアント
http://technet.microsoft.com/ja-jp/library/lync-online-clients.aspx



2 : SharePoint Online サイト コレクションのプロビジョニング

Find content about the SharePoint Online admin center (英語)
http://office.microsoft.com/en-us/office365-sharepoint-online-enterprise-help/find-content-about-the-sharepoint-online-admin-center-HA103534234.aspx

Find content about SharePoint Online for Office 365 Enterprise and Midsize (英語)
http://office.microsoft.com/en-us/sharepoint-help/find-content-about-sharepoint-online-for-office-365-enterprise-and-midsize-HA103047257.aspx

2-1 : 外部ユーザー共有の構成

グローバルな有効化、サイト コレクションごとの有効化、外部ユーザーとの共有、外部ユーザー アクセスの削除

SharePoint Online 環境の外部共有を管理する
http://office.microsoft.com/ja-jp/office365-sharepoint-online-enterprise-help/manage-external-sharing-for-your-sharepoint-online-environment-HA102849864.aspx

2-2 : SharePoint サイト コレクションの作成

SharePoint Online サイト コレクション管理者の設定、リソース クォータと警告レベルの設定、パブリック Web サイトの構成、サイト コレクションの記憶域のクォータの設定、サイト コレクションの名前と URL の構成

サイト コレクションを作成または削除する
http://office.microsoft.com/ja-jp/office365-sharepoint-online-enterprise-help/create-or-delete-a-site-collection-HA102772354.aspx

Office 365 の一般向け Web サイト ヘルプ
http://office.microsoft.com/ja-jp/office365-sharepoint-online-enterprise-help/public-website-help-for-office-365-HA102891740.aspx

サイト コレクションの管理者を管理する
http://office.microsoft.com/ja-jp/office365-sharepoint-online-enterprise-help/manage-administrators-for-a-site-collection-HA102772369.aspx

サイト コレクションの記憶域やサーバー リソースのクォータを変更する
http://office.microsoft.com/ja-jp/office365-sharepoint-online-enterprise-help/change-site-collection-storage-and-server-resource-quotas-HA102772729.aspx

2-3 : コラボレーション ソリューションの計画

Yammer とニュースフィード、共同編集、Project Online、複数のクライアント デバイスでのファイルへのアクセス (OneDrive for Business へのファイルの移行など)、Excel Services、Visio Services、アプリ ストア、エンタープライズ電子情報開示の必要性

エンタープライズ ソーシャル ネットワークを選ぶ: Yammer またはニュースフィード
http://office.microsoft.com/ja-jp/office365-sharepoint-online-enterprise-help/pick-your-enterprise-social-network-yammer-or-newsfeed-HA104037368.aspx

SharePoint 2013 での共同編集の概要
http://technet.microsoft.com/ja-jp/library/ff718249.aspx

Project Online の使用を開始する
http://office.microsoft.com/ja-jp/project-server-help/get-started-with-project-online-HA102858793.aspx

OneDrive for Business とは
http://office.microsoft.com/ja-jp/sharepoint-server-help/what-is-skydrive-pro-HA102822076.aspx

洞察力
http://technet.microsoft.com/ja-jp/library/sharepoint-online-insights-service-description.aspx

SharePoint ストアからアプリを購入する
http://office.microsoft.com/ja-jp/sharepoint-help/buy-an-app-from-the-sharepoint-store-HA102897470.aspx

電子情報開示ケースを計画および管理する
http://office.microsoft.com/ja-jp/sharepoint-help/plan-and-manage-ediscovery-cases-HA102893857.aspx



3 : Exchange Online と Lync Online のエンド ユーザー向けの構成 

Exchange Online
http://technet.microsoft.com/ja-jp/library/jj200580(v=exchg.150).aspx

Lync Online をセットアップする
http://office.microsoft.com/ja-jp/support/set-up-lync-online-HA102817355.aspx

3-1 : ユーザーの追加電子メール アドレスの構成

既定のアドレス/返信先アドレスの変更、新しいドメインの一括追加/削除、セカンダリ電子メール エイリアスの管理、SIP アドレス

ユーザー メールボックスの管理
http://technet.microsoft.com/ja-jp/library/bb123809(v=exchg.150).aspx

Office 365 サインイン アドレス変更に伴う Lync Online での考慮事項
http://support.microsoft.com/kb/2537764

Manage email address using PowerShell – Office 365 (英語)
http://www.o365info.com/2013/03/manage-email-address-using-powershell.html

3-2 : 外部連絡先、リソース、およびグループの作成と管理

リソース メールボックスの作成と管理、共有メールボックスの作成、外部連絡先の作成、連絡先への追加電子メール アドレスの割り当て、配布リストとメンバーの作成と管理、アクセス許可の委任

Exchange Online の受信者
http://technet.microsoft.com/ja-jp/library/jj200702(v=exchg.150).aspx

Exchange Online のアクセス許可
http://technet.microsoft.com/ja-jp/library/jj200692(v=exchg.150).aspx

Exchange Online でのコラボレーション
http://technet.microsoft.com/ja-jp/library/jj983794(v=exchg.150).aspx

3-3 : メールボックスの個人アーカイブの有効化、カスタム アイテム保持ポリシーの作成、保持タグの作成、メールボックスへのアイテム保持ポリシーの適用、既定のアイテム保持ポリシーの確認と変更


インプレース アーカイブ
http://technet.microsoft.com/ja-jp/library/dd979800(v=exchg.150).aspx

メッセージング レコード管理
http://technet.microsoft.com/ja-jp/library/dd335093(v=exchg.150).aspx

3-4 : Lync のエンド ユーザー通信設定の構成

コンプライアンスのためのアーカイブされていない機能のオフ、プレゼンスの構成、利用可能なサービス、ユーザーごとの外部通信の構成

Lync Online の設定の概要
http://office.microsoft.com/ja-jp/support/lync-online-settings-summary-HA102817356.aspx



4 : Exchange Online と Lync Online の計画 

4-1 : マルウェア対策およびスパム対策ポリシーの管理


検疫のリリース、Spam Confidence Level の構成、ホワイト リストとブラック リストの構成、通知の構成

マルウェア対策保護
http://technet.microsoft.com/ja-jp/library/jj200669(v=exchg.150).aspx

Spam Confidence Level
http://technet.microsoft.com/ja-jp/library/jj200686(v=exchg.150).aspx

4-2 : メールボックスの移行戦略の推奨

段階的、カットオーバー、ハイブリッド、IMAP

Exchange Online へのメールボックスの移行
http://technet.microsoft.com/ja-jp/library/jj863291(v=exchg.150).aspx

4-3 : Exchange Online の計画

アーカイブのクライアント要件の計画、電子情報開示の管理、法的情報保留の有効化、OWA アクセスの構成、ActiveSync の構成

Office 365 での Exchange Online の計画
http://technet.microsoft.com/ja-jp/library/hh852556.aspx

インプレース電子情報開示 (eDiscovery)
http://technet.microsoft.com/ja-jp/library/dd298021(v=exchg.150).aspx

インプレース保持
http://technet.microsoft.com/ja-jp/library/ff637980(v=exchg.150).aspx

Exchange Online のクライアントとモバイル
http://technet.microsoft.com/ja-jp/library/jj945871(v=exchg.150).aspx

4-4 : Lync グローバル外部通信設定の管理

外部アクセスの有効化、ドメインの管理、パブリック IM 接続の管理、会議の出席依頼のカスタマイズ、プッシュ通知サービスの無効化

Lync Online ユーザーが外部の Lync または Skype の連絡先と通信できるようにする
http://office.microsoft.com/ja-jp/support/let-lync-online-users-communicate-with-external-lync-or-skype-contacts-HA102817865.aspx


2014年7月14日月曜日

[Powershell] Hyper-Vにて仮想マシンの稼働日時の情報を設定する

Hyper-Vで仮想マシンをたくさん作ったりサーバを共有して使っていると、どの仮想マシンをいつまで実行させていたのかが分からなくなります。

ハードディスクの容量が足りなくなった場合など仮想マシンの整理が必要な状況では、動かしていない仮想マシンであればアーカイブしたり削除したりする対象になります。でも、既定の設定ではいつ動かしていたかの情報を取ることができません。

下記のスクリプトをタスクスケジューラ等で定期的に実行すれば、実行中の仮想マシンのメモ欄にスクリプト実行時の日時を書き込みます。


# 
# Hyper-v にて実行中の仮想マシンのメモ情報に処理実行時の日時を書き込むスクリプト
# 


# 実行中の仮想マシンの一覧を取得します。
$RuningVms = (Get-VM | ? {$_.State -eq "Running"}).Name

# 実行中の仮想マシンに対して処理を行います。
foreach ($VmName in $RuningVms){

    # 仮想マシンのメモの情報を取得します。
    $VmNote = (Get-VM -Name $VmName).Notes

    # メモの情報を1行ずつ取得できるように加工します。
    $VmNote = $VmNote -split "`n"

    # メモ情報の行数を取得します。
    $VmNoteLineCount = $VmNote.Length

    # 処理にて使用する変数に初期値を設定します。
    $VmNoteRevised = $null
    $i = 0
    $RunningFlag = 0

    # メモ欄の最終稼働確認日を更新します。
    # 最終稼働確認日が記載された行を削除し、現在の日時が記載された行を追加します。
    while ($i -lt $VmNoteLineCount){
        if($VmNote[$i] -like "最終稼働確認日*"){
            $VmNoteRevised += "最終稼働確認日:" + (Get-Date).DateTime
            $RunningFlag = 1}
        else{
            $VmNoteRevised += $VmNote[$i]}
        $i ++
        if($i -lt $VmNoteLineCount){$VmNoteRevised += "`n"}
        }

    # 最終稼働確認日が記載された行を追加します。
    if($RunningFlag -eq 0){
        $VmNoteRevised += "`n"
        $VmNoteRevised += "最終稼働確認日:" + (Get-Date).DateTime}


    # 仮想マシンのメモ情報を更新します。
    Set-VM -Name $VmName -Notes $VmNoteRevised

}
  
  



2014年7月13日日曜日

[Powershell] ヒア文字列を分割し行ごとに処理できるようにする

Powershellでは複数行の長さの文字列をヒア文字列をして定義できます。
しかし、1行ずつ処理しようとしてもそのままではうまくいきませんでした。
Measure-Objectで調べたら1行の文字列として扱われている様です。


処理を行うためにはこれを分割し文字列の配列に変換する必要があります。
$HereString = $HereString -split "`n"
このようなコマンドで配列にすることができます。

サンプルスクリプト
# 
# ヒア文字列の行数を取得します。

# ヒア文字列を作成します。
# 改行も含めて12文字とカウントされます。

$HereString =@"
ほげほげ1
ほげほげ2
"@ 

""
"ヒア文字列に対してGetTypeメソッドを呼び出します。"
$HereString.GetType()
""
""
"ヒア文字列を1文字づつ呼び出します。"
""
$HereString[0]
$HereString[1]
$HereString[2]
$HereString[3]
$HereString[4]
$HereString[5]
$HereString[6]
$HereString[7]
$HereString[8]
$HereString[9]
$HereString[10]
$HereString[11]

""
"改行は3文字として扱われます。"
"どういう文字コードが当てられているかは分かりません。"
""
"ヒア文字列の行数(Measure-ObjectのCount)"
($HereString | Measure-Object).Count 
""
"ヒア文字列の長さ(Length)"
$HereString.Length
""
""
""
"【ヒア文字列の分割】"
"ヒア文字列を改行文字で分割し、元の変数に格納します。"
$HereString = $HereString -split "`n"
""
"分割したヒア文字列に対してGetTypeメソッドを呼び出します。"
$HereString.GetType()
""
""
"分割したヒア文字列を1行づつ呼び出します。"
"1文字ごとに取り出すことはできないようです。"
""
$HereString[0]
$HereString[1]
""
"分割したヒア文字列の行数(Measure-ObjectのCount)"
($HereString | Measure-Object).Count
""
"分割したヒア文字列の長さ(Length)"
$HereString.Length
  
  



実行すると以下のようになります。


ヒア文字列を1文字づつ呼び出します。















改行は3文字として扱われます。
どういう文字コードが当てられているかは分かりません。

ヒア文字列の行数(Measure-ObjectのCount)
1

ヒア文字列の長さ(Length)
12



【ヒア文字列の分割】
ヒア文字列を改行文字で分割し、元の変数に格納します。

分割したヒア文字列に対してGetTypeメソッドを呼び出します。
True     True     String[]                                 System.Array                                                                                                                                    


分割したヒア文字列を1行づつ呼び出します。
1文字ごとに取り出すことはできないようです。

ほげほげ1
ほげほげ2

分割したヒア文字列の行数(Measure-ObjectのCount)
2

分割したヒア文字列の長さ(Length)
2