環境: PowerShell v2 (Windows 7)  ※サーバー側は、IIS7.5, ASP.NET MVC

PowerShellでWebClientのUploadFileメゾットを使用しWebサイトへファイルをアップロードします。

$wc = New-Object Net.WebClient 
$wc.Credentials = $wc.Credentials = [Net.CredentialCache]::DefaultCredentials

try {
	$res = $wc.UploadFile("http://www.gine.jp/home/Upload2", "c:\Temp\Koala.jpg")
    $s = [text.encoding]::UTF8.getString($res)
    Write-Output $s
} 
catch [Exception] 
{
    Write-Output $_.Exception.Message
}
finally
{
    $wc.Dispose()
}

 

ちなみに受信する側は ASP.NET MVC で新規プロジェクトを作成し、HomeController.cs に下記コードを追加してあります。

HomeController.cs

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload(HttpPostedFileBase file)
{
	string fn = @"c:\temp\upload\" + System.IO.Path.GetFileName(file.FileName);
	file.SaveAs(fn);

	return Content("アップロード完了", "text/plain");
}

 

保存が完了したら、"アップロード完了"というテキストを返しています。

また、PowerShell で WebClientのUploadFileメゾットでアップロードを行っていますのでHttpPostedFileBase は "file"となります。

環境: PowerShell v2 (Windows 7)

 

PowerShellを使用してWebサイトからファイルをダウンロードします。

今回、ダウンロードするファイルは、IIS7.5で基本認証が有効なSSLを使用しているサイトに置いてあります。

また、PowerShell V2 では、try - catch - finally が使えるようになったので使ってみました。

$wc = New-Object Net.WebClient 
$wc.Credentials = New-Object System.Net.NetworkCredential("USERNAME", "PASSWORD")

try {
    $wc.DownloadFile("https://www.gine.jp/Penguins.jpg", "c:\temp\Penguins.jpg";)
} 
catch [Exception] 
{
    Write-Output $_.Exception.Message
    # 規定のプロパティなので、 Write-Output $_.Exception でも同じ
}
finally
{
    $wc.Dispose()
}

 

認証が不要ならば

$wc.Credentials = [Net.CredentialCache]::DefaultCredentials 

でも取得できます。

 

また、ユーザー名やパスワードを間違えると

リモート サーバーがエラーを返しました: (401) 許可されていません

ファイル(ページ)がなければ

リモート サーバーがエラーを返しました: (404) 見つかりません

というメッセージが例外でキャッチできます。

前回、旧サーバー(Windows Server 2003)で証明書のエクスポートを行いましたので、今回は、新サーバー(Windows Server 2008 R2)で証明書のインポートを行います。

1.旧サーバーでエクスポートしたファイルを、新サーバーの適当な場所にコピーします。

2.インターネットインフォメーションサービス(IIS)マネージャを起動します。  

3.左側の「接続」にある「コンピュータ名」をクリックし、真ん中のメニューから「IIS」にある「サーバ証明書」をダブルクリックし、「サーバー証明書」を開きます。

0011

 

4.「サーバー証明書」が開いたら、右側の「操作」にある「インポート」をクリックします。

0012 

 

5.「証明書のインポート」が表示されますので、コピーした証明書ファイルの場所とエクスポートしたときに設定したパスワードを入力し、「OK」をクリックします。

0013

 

5.これでサーバ証明書のインポートが完了です。次に証明書を使用するサイトにバインドします。左側の「コンピュータ名」→「サイト」と展開し、SSLを使用するサイト名をクリックし、右側の操作にあります「バインド」をクリックします。

6.「サイト バインド」ダイアログで「追加」をクリックします。

0015

 

7.「サイト バインドの追加」ダイアログで、種類を「https」、SSL証明書にインポートした証明書を選択し「OK」をクリックします。

0016

 

8.「サイトバインド」ダイアログの「閉じる」をクリックして作業完了です。

Windows Server 2003(以下 旧サーバー) で使用しているSSLサーバー証明書を Windows Server 2008 R2(以下新サーバー)に移行するため、旧サーバーで証明書のエクスポート、新サーバーで証明書のインポートを行います。

今回は、旧サーバーでの作業(証明書のエクスポート)です。

1.旧サーバーのインターネット インフォメーション サービス(IIS)マネージャーを起動します。

2.移行したい証明書を使用しているサイトのプロパティを表示し、[ディレクトリセキュリティ]タブをクリックします。

 0002s

 

3.「セキュリティで保護された通信」の「証明書の表示」をクリックします。

4.「証明書」が表示されたら、「詳細」タブをクリックし詳細ページを表示します。

0003

 

5.「ファイルにコピー」をクリックし、証明書のエクスポートを開始します。

6.「証明書のエクスポート ウィザード」が表示されたら、「次へ」をクリックします。

 0004-1s

 

7.「秘密キーのエクスポート」で、「はい、秘密キーをエクスポートします」を選択し、「次へ」をクリックします。

 0004-2s

 

8.「証明書のパスにある証明書を可能であればすべて含む」と「強力な保護を有効にする」にチェックをつけて、「次へ」をクリックします。

0004-3s

 

9.パスワードを入力し、「次へ」をクリックします。

0004-4s

 

10.エクスポートするファイル名を入力し、「次へ」をクリックします(例:「hogehoge.pfx」)。

 0004-5s1

 

11.確認画面で表示されたら、「完了」をクリッします。エクスポートが完了すると、メッセージダイアログが表示されます。

0004-6s

0004-7

 

これでエクスポートは完了です。

次回は、Windsows Server 2008 R2で今回エクスポートした証明書ファイルをインポートします。

環境 :NET Framework 3.5 Service Pack 1, ASP.NET MVC 1.0, jQuery 1.3.2

 

前々回前回と ASP.NET MVC で AjaxHelperクラス を使って非同期更新を行ったので、ついでに jQuery で同じ処理を行った場合です。

前回からの修正だと少しわかりにくいので、ASP.NET MVC のデフォルトで作成されたサイトに追加しています。Controllerや結果画面は、前々回と同じため記載していません。

 

View

Views/Home/Index.aspx に日付表示用のタグと日付取得用のリンク、javascriptを追加します。

<script type="text/javascript">
function onClick()
{
    $.ajax({
        url: "/home/GetDateTime",
        dataType: 'script',
        timeout: 5000,
        success: Update
    });
}

function Update(result) {
    if (result == null) {
        window.alert("該当するデータがありません。");
    } else {
        $("#TimeDate").text(result);
    }
}
</script>

 

<p>日時:<span id="TimeDate"></span></p>
<a href='javascript:void(0);' onclick='onClick();return false'>日付更新</a>

 

Views/Shared/Site.Masterのheadにscriptタグを追加します。

<script type="text/javascript" src="/Scripts/jquery-1.3.2.js"></script>