Archive for 2月, 2012


csvファイルのデータを雛形となるExcelに差し込んで保存するPowerShellです。
これは、アカウント通知書などの雛形をExcelで作っておき、cvsに保存されているユーザー情報を差し込んで個人別にアカウント通知書を作成する場合などに利用できます。

# 作業フォルダー
$Work = “C:\Work\”

# Excel(ひな形)
$xlsFile = “Template.xltx”
$xlsPath = $Work + $xlsFile

# Applicationオブジェクト作成
$xls = New-Object -ComObject Excel.Application
# アラートの非表示
$xls.DisplayAlerts=$false
# Excel非表示
$xls.visible = $false

# ブックオープン
$books = $xls.Workbooks.Open($xlsPath)
$sheet = $books.Worksheets.Item(1)

# csvファイル
$CsvFile = “Data.csv”
$CsvPath = $Work + $CsvFile

Import-Csv $CsvPath | foreach {
$User = $_.User
$Pass = $_.Pass

# Excelへ書き込み
$sheet.cells.item(3,4) = $User
$sheet.cells.item(5,4) = $Pass

# Excelの保存
$xlsFile = $Work + $User + “.xlsx”
If(Test-Path $xlsFile)   {
# 同じファイルが存在している場合
Remove-Item $xlsFile
$xls.ActiveWorkbook.SaveAs($xlsFile)
}
Else
{
# ファイルが存在していない場合
$xls.ActiveWorkbook.SaveAs($xlsFile)
}

Remove-Variable User,Pass,xlsFile

}

# ブッククローズ
$books.Close();
Remove-Variable CsvPath,CsvFile
Remove-Variable books,sheet

# Excel 終了
$xls.Quit()
Remove-Variable xls
[GC]::Collect()

<概要>
SBSに登録されているユーザーを表示するコマンドレッド
<名前>
Get-WssUser
<構文 その1>
Get-WssUser [-Verbose] [-Debug] [-ErrorAction] [-WarningAction] [-ErrorVariable] [-WarningVariable] [-OutVariable] [-OutBuffer]
<実行結果 その1>
<構文 その2>
Get-WssUser [-Name][-Verbose] [-Debug] [-ErrorAction] [-WarningAction] [-ErrorVariable] [-WarningVariable] [-OutVariable] [-OutBuffer]
<実行結果 その2>
<構文 その3>
Get-WssUser [-Sid][-Verbose] [-Debug] [-ErrorAction] [-WarningAction] [-ErrorVariable] [-WarningVariable] [-OutVariable] [-OutBuffer]
<実行結果 その3>
<参考>
ユーザーアカウントのプロパティ

Windows SBS 2011 Essentials のユーザーはダッシュボードから登録・修正・削除を行います。
ユーザー情報は、ActiveDirectoryに格納されていますが、それらの情報を利用する場合は情報を加工する必要があります。
そのため、アドイン開発等でWindows SBS 2011 Essentials のユーザーを取得したい場合は、独自PowerShellを使用すると便利です。

ただし、以前紹介した「Windows Small Business Server 2011 Essentials のユーザーについて 」「Windows Small Business Server 2011 Essentials のユーザーについて  その2」の場合はActiveDirectory のコマンドレッドを使用します。

【SBSのユーザー情報】

Get-WSBSUser
DistinguishedName  CN=SBSAdmin,CN=Users,DC=sample,DC=local
Enabled  True
GivenName  管理者
Name  SBSAdmin
ObjectClass  user
ObjectGUID  xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SamAccountName  SBSAdmin
SID  S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx
Surname  SBS
UserPrincipalName  SBSAdmin@sample.local

【Active Directory  の情報】

Get-ADUser
CurrentUserPrincipal  SBSAdmin
Info  Microsoft.WindowsServerSolutions.Users.UserInfo
SIDs  {}
LastName  SBS
FirstName  管理者
UserName  SBSAdmin
PersonalInfo  Microsoft.WindowsServerSolutions.Users.PersonalInfo
UserStatus  Enabled
CurrentSid  S-x-x-xx-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-xxxx
RemoteAccess  Allowed
AccessLevel  Administrator

PowerShell で取得できるExcelのセルの情報は、テキスト情報だけでなく文字色や背景色など実に様々な情報を取得することができます。

Application Microsoft.Office.Interop.Excel.ApplicationClass
Creator 1480803660
Parent System.__ComObject
AddIndent FALSE
Areas System.__ComObject
Borders System.__ComObject
Cells System.__ComObject
Column 154
Columns System.__ComObject
ColumnWidth 8.38
Count 1
CurrentArray
CurrentRegion System.__ComObject
Dependents
DirectDependents
DirectPrecedents
EntireColumn System.__ComObject
EntireRow System.__ComObject
Font System.__ComObject
Formula
FormulaArray
FormulaLabel
FormulaHidden FALSE
FormulaLocal
FormulaR1C1
FormulaR1C1Local
HasArray FALSE
HasFormula FALSE
Height 0
Hidden
HorizontalAlignment 1
IndentLevel 0
Interior System.__ComObject
Left 8737.5
ListHeaderRows 0
LocationInTable
Locked TRUE
MergeArea System.__ComObject
MergeCells FALSE
Name
_NewEnum System.Runtime.InteropServices.CustomMarshalers.EnumeratorViewOfEnumVariant
Next System.__ComObject
NumberFormat G/標準
NumberFormatLocal G/標準
Orientation -4128
OutlineLevel
PageBreak
PivotField
PivotItem
PivotTable
Precedents
PrefixCharacter
Previous System.__ComObject
QueryTable
Row 4
RowHeight 0
Rows System.__ComObject
ShowDetail
ShrinkToFit FALSE
SoundNote System.__ComObject
Style System.__ComObject
Summary
Text
Top 27
UseStandardHeight TRUE
UseStandardWidth TRUE
Validation System.__ComObject
Value2
VerticalAlignment -4108
Width 54
Worksheet System.__ComObject
WrapText FALSE
Comment
Phonetic System.__ComObject
FormatConditions System.__ComObject
ReadingOrder -5002
Hyperlinks System.__ComObject
Phonetics System.__ComObject
ID
PivotCell
Errors System.__ComObject
SmartTags System.__ComObject
AllowEdit TRUE
ListObject
XPath System.__ComObject
ServerActions
MDX
CountLarge 1
SparklineGroups System.__ComObject
DisplayFormat System.__ComObject

フォルダー内にあるエクセルに保存されているデータをPowerShellで取得します。
これはExcelで作られた定型フォームに保存されているデータを取得する場合に便利です。

# 検索先フォルダー
$fpath  = “D:\検索先フォルダー\*”
# Applicationオブジェクト作成
$xls = New-Object -ComObject Excel.Application# Excel 非表示
$xls.visible = $false

# Excel ファイル名取得
$FullName = get-childitem $fpath -include *.xls,*.xlsx
$OFile = “”

# ファイル数分ループ
foreach ($f in $FullName){
# ブックオープン
$books = $xls.Workbooks.Open($f,0,$true)

# ファイル名とシート名表示
write-Host $f.name
foreach ($s in $books.sheets){
write-Host $s.name
$sheet = $books.Worksheets.Item($s.name)

#A1~J10セルのテキスト情報を取得
for($j=1; $j -lt 11; $j++){
for($i=1; $i -lt 11; $i++){
$OFile += $sheet.cells.item($j,$i).text + “,”
}
}
write-Host $OFile
}
write-Host “”
$books.Close();
}

Remove-Variable books,FullName,f,s,sheet,OFile

$xls.Quit()
Remove-Variable xls
[GC]::Collect()

Office 365 のメールを、 iPod Touchでも操作するすることができます。
Exchange Active Sync を使って同期できるので、メール以外にも連絡先やカレンダーなどの情報も確認することができます。

Office 365 の Outlook Web App のオプションにある電話を確認すると 同期されているデバイスの情報に「 iPod」としてiPod Touch が表示されていました。

<概要>
リモートWebアクセスのドメイン情報を表示するコマンドレッド
<名前>
Get-WssDomainNameConfiguration
<構文>
Get-WssDomainNameConfiguration [-Verbose] [-Debug] [-ErrorAction] [-WarningAction] [-ErrorVariable] [-WarningVariable] [-OutVariable] [-OutBuffer]
<実行結果>
<参考>
RWAのドメイン取得

Windows SBS 2011 Standard の管理コンソールや Windows SBS 2011のダッシュボードからリモートWebアクセスの設定を行ったがアクセスできないときは、以下方法で回復することができます。

【Windows SBS 2011 Standardの場合】
1.「C:\Program Files\Windows Small Business Server\Data\RemoteAccessProfiles\」にある「.settings」を確認します。
2.ログオンできなかったユーザーの「.settings」ファイルを削除します。
「.settings 」は、GUID+username.settings となっています。
3.リモートWebアクセスサイトにアクセスすると先ほど削除した「.settings」ファイルが再作成され、ログオンできるようになります。

【Windows SBS 2011 Essentialsの場合】
1.「C:\ProgramData\Microsoft\Windows Server\Data\SettingsProviderData\RemoteAccess\UserProfile\」にある「index.xml」を開きます。
2.ユーザー名に紐づけられたGUIDを特定します。※

<String>ドメイン名\ユーザ名</string>
<String>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</string>

3.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.xmlファイルを削除します。
4.リモートWebアクセスサイトにアクセスすると先ほど削除した「.xml」ファイルが再作成されログオンできるようになります。

※「index.xml」にユーザーに紐づけられたGUIDがない場合は、以下のフォルダーにある「index.xml」を参照します。
C:\ProgramData\Microsoft\Windows Server\Data\settingsproviderdata\IDENTITY\USERS

<概要>
Windows Small Business Server 2011 Essentials が接続されているルータ情報
<名前>
Get-WssRouterInformation
<構文>
Get-WssRouterInformation [-Verbose] [-Debug] [-ErrorAction] [-WarningAction] [-ErrorVariable] [-WarningVariable] [-OutVariable] [-OutBuffer]
<実行結果>
<参考>
リモートWebアクセスのセットアップ
<概要>
リモートWebアクセスの背景画像
<名前>
Get-WssRemoteWebAccessBackgroundImage
<構文>
Get-WssRemoteWebAccessBackgroundImage [-Verbose] [-Debug] [-ErrorAction] [-WarningAction] [-ErrorVariable] [-WarningVariable] [-OutVariable] [-OutBuffer]
<実行結果>
<参考>
RWAのカスタマイズ