Core Configurator 2.0 はGUIでPowerShellを使ったServer Coreの設定が行えるツールです。

Core Configurator 2.0
http://coreconfig.codeplex.com/

001s

PowerShellが有効の環境ならばファイルをダウンロードして「Start_Coreconfig.wsf」を実行するだけなのですが、日本語版の場合、「Role and Features」と「Services」でエラーになったので少し修正が必要です。

 Roles.ps1 (Role and Features) の修正

500行目くらいの oclist でインストール状態を調べている部分を修正します。

1.「Not Installed:」を「未インストール:」に修正

2.「$procOutput += @($myoutputline.substring($iPos + 14))」の「14」を「8」に変更

3.「Installed:」を「インストール済み:」に修正

4.「$procOutput += @($myoutputline.substring($iPos + 10))」を「10」を「9」に変更

 

Services.ps1 (Services) の修正

189行目あたりの文字化けしている部分を削除します。

「$table = New-Object system.Data.DataTable $TableName 」の「$TableName」の左右にある文字を削除

  003s 004s

で使うことができます。

 

参考:

PowerShellを有効にするコマンド

DISM /online /Enable-Feature:NetFx2-ServerCore
DISM /online /Enable-Feature:MicrosoftWindowsPowerShell

共有フォルダの作成のコマンド

NET SHARE temp=c:\temp /grant:everyone,full

環境:IIS7.5(Windows Server 2008 R2)

FTP7.x では Windows ユーザーアカウントを使わず、IIS マネージャ ユーザーをFTPアカウントとして使用することができます。下記のサイトに詳しく掲載されていますが、試してみましたのでメモ。

IIS 7.0 マネージャー認証を使用した FTP の構成
http://technet.microsoft.com/ja-jp/library/dd939052.aspx

 

■準備

1.Network Service" アカウントに IIS の config フォルダーへの "読み取り" アクセスを許可します。

CACLS "%SystemDrive%\Windows\System32\inetsrv\config" /G "Network Service":R /E
CACLS "%SystemDrive%\Windows\System32\inetsrv\config\administration.config" /G "Network Service":R /E
CACLS "%SystemDrive%\Windows\System32\inetsrv\config\redirection.config" /G "Network Service":R /E

2.FTPサービスをインストールしFTPサイトを作成します。

「Webサーバー」の役割サービス「FTPサービス」、「FTP拡張」、「IIS管理コンソール」、「管理サービス」をインストールします。FTPサービスのインストールやACLの編集については、IIS の FTP 7.5 のインストール をご覧ください。

今回のFTPサイトの設定では、IIS マネージャ ユーザー のみにアクセスを許可するため、認証は「匿名」「基本」ともに許可せずに、すべてのユーザーに読み取り、書き込み権限を与えています。

1003s

 

■IIS マネージャ ユーザーでの接続を許可し、ユーザーを作成します。

1.「接続」にあるコンピュータ名をクリック、「管理」にある「管理サービス」をダブルクリックします。

1004s1

 

2.「Windows 資格情報またはIISマネージャ資格情報」をクリック、「操作」にある「適用」をクリックします。適用が完了したら戻ります。

 1005s1

 

3.「IIS マネージャ ユーザー」をダブルクリックします。

1006s

 

4.「操作」にある「ユーザーの追加」をクリックして、ユーザーを追加します。

1007

 

■FTPサイトの認証でIIS マネージャ ユーザーを使用する

1.「接続」にあるFTPサイトをクリックし、「FTP認証」をダブルクリックします。

1008s

 

2.「操作」にある「カスタムプロバイダ」をクリック、「IisManagerAuth」にチェックをつけて「OK」をクリックします。完了したら戻ります。

 

3.「IISマネージャのアクセス許可」をダブルクリックします。

1009s

 

4.「操作」にある「ユーザーの許可」をクリックします。「IIS マネージャー」を選んで「選択」をクリック、先程作成したユーザーを選び「OK」をクリック、再度「OK」をクリックします。

 

上記で完了です。

Windows アカウント同様にFTPユーザーの分離で、ユーザーごとにホームディレクトリを設定することもできます。

IIS の FTP 7.5 でユーザーごとにホームディレクトリを設定する

PowerShell でテキストをクリップボードへコピー、クリップボードからペーストします。

Clipboardクラスを使用しますので、STA(Single Thread Apartment)モードでPowerShellを起動する必要があります。

powershell.exe -sta

 クリップボードへコピー

[void] [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.Clipboard]::SetDataObject("この文字をコピー")

 クリップボードからペースト

[void] [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms");
$data = [System.Windows.Forms.Clipboard]::GetDataObject()
if($data.GetDataPresent([System.Windows.Forms.DataFormats]::Text)) {
	Write-Output $Data.GetData([System.Windows.Forms.DataFormats]::Text); 
}

ReadAllBytesを使用しているので、あまり大きなファイルはキツイですが、PowerShellでファイルを読み込んで、複数のファイルに分割します。下記のコードでは、ついでに結合用のバッチ(単なるコピーコマンド)も作成しています。

$FileSize = 1024000;	# 分割ファイルサイズ
$FileName = "C:\temp\abc.jpg";	# ソースファイル

$num = 0;
$rs = 0;

$fnbase = [System.IO.Path]::GetFileNameWithoutExtension($FileName);
$bat = New-Object System.Text.StringBuilder("copy /b ");

# ファイルを読み込み
$src = [System.IO.File]::ReadAllBytes($FileName);

while ($rs -lt $src.Length)
{
	$num++;
	$fn = [String]::Format($fnbase + ".{0:D3}", $num);
# 出力用のバッファを作成してソースからコピー
	$buf = New-Object byte[] ([Math]::Min($FileSize, $src.length - $rs));
	[system.Array]::Copy($src, $rs, $buf, 0, $buf.length);

# バッファをファイルに書き出す
	[System.IO.File]::WriteAllBytes($fn, $buf);
	$rs += $FILESIZE;

	[void] $bat.Append($fn + "+")
}
# 結合用バッチの仕上げを行ってファイルへ書き出す
[void] $bat.Remove($bat.length -1, 1);
$bat.Append(" " + [System.IO.Path]::GetFileName($FILENAME)).ToString() | Out-File -FilePath ($fnbase + ".bat") -Encoding Ascii;

前回、AjaXplorer のインストールを行ったので、今回はAjaXplorer で ActiveDirectory を使うための設定を行います。

1.php_ldap.dll を使用しますので、まずは「extension=php_ldap.dll」のコメントを解除します。

2.server/conf/conf.php を修正します。

LDAP認証プラグインを使うように「$AUTH_DRIVER」を変更します(※定義内容は、plugins/auth.ldap/manifest.xml で確認できます)。

$AUTH_DRIVER = array(
	"NAME" => "ldap",
	"OPTIONS" => array(
	"LDAP_URL" => 'LDAP://gine.jp',
	"LDAP_PORT" => '389',
	"LDAP_USER" => 'admin@gine.jp',
	"LDAP_PASSWORD" => 'password',
	"LDAP_DN" => 'OU=Tokyo,DC=gine,DC=jp',
	"LOGIN_REDIRECT" => false,
	"AUTOCREATE_AJXPUSER" => false,
	"LDAP_FILTER" => '(&(objectCategory=Person)(objectClass=User))',
	"TRANSMIT_CLEAR_PASS" => true)
); 
 

※上記例ではパスワードが平文で流れますのでご注意ください。

adminのパスワードを変更するようにダイアログが表示されるので「ADMIN_PASSWORD」も修正しておきます。

define("ADMIN_PASSWORD", "password"); 

 

3.plugins/auth.ldap/class.ldapAuthDriver.php を修正します。修正箇所は3箇所です。

[1] ldap_set_optionを追加します。

    function LDAP_Connect(){
        $ldapconn = ldap_connect($this->ldapUrl, $this->ldapPort)
        or die("Cannot connect to LDAP server");

	    ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
		・・・・・

[2] uid を samaccountname に変更します。

    function listUsers(){
		・・・・・
        foreach($entries as $id => $person){
			$persons[$person['samaccountname'][0]] = "XXX";
        }
		・・・・・
	}

[3] uid を samaccountname に、dn を userprincipalname に変更します。

    function checkPassword($login, $pass, $seed){
        $ret = ldap_search($this->ldapconn,$this->ldapDN,"samaccountname=".$login);

        $entries = ldap_get_entries($this->ldapconn, $ret);
        if ($entries['count']>0) {
            if (@ldap_bind($this->ldapconn,$entries[0]["userprincipalname"][0],$pass)) {
			・・・・・
	}

※samaccountnameやuserprincipalnameは全て小文字の必要があります。

上記で完了です。AjaXplorerにアクセスするとADのユーザーやパスワードを使ってログインできます。