2017年12月11日 星期一

免費版Veeam自動化(PowerShell)

利用PowerShell自動排程執行備份
1.開啟PowerShell -> 範例:

#載入Veeam PowerShell
Add-PSSnapin Veeampssnapin

#宣告VM Name(VMWare的VM名稱)
$vm = Find-VBRViEntity -Name "SERVER1"

#執行備份
START-VBRZIP -FOLDER D:\VeeamBackup -Entity $vm

#產出LOG-今天日期變數
$today = Get-Date -DisplayHint Date -Format dd/MM/yyyy

#產出LOG-存到D:\Logs
Find-VBRViEntity -Name "SERVER1" | Export-VBRLogs -FolderPath "D:\Logs" -Compress $today To $today

2.將上述指令另存為 ps1,此範例存為D:\server1.ps1

3.設定自動備份(範例為Windows server2012):
3-1. 控制台->系統管理->工作排程->建立工作
->觸發程序,設定備份週期、時間
->動作->「程式或指令碼」輸入powershell
     ->「新增引數」輸入 -file "D:\server1.ps1"

2017年4月26日 星期三

檔案下載


string sFile = @"c:\temp\ff.pdf";
WebClient wc = new WebClient();
byte[] b = wc.DownloadData(sFile);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment;filename=uu.pdf");
Response.BinaryWrite(b);
Response.End();

取得Client IP

P.S 僅Framkwork 3.5以上有效
string sHostName = System.Net.Dns.GetHostName();
string IP = Dns.GetHostEntry(sHostName).AddressList.First(o => o.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToString();

2017年3月30日 星期四

利用PageMethod,從JS執行CodeBehind函式

1.必要條件:
        a.加入ScriptManager控制項,EnablePageMethods屬性設為True
        b.此函式必須加上[System.Web.Services.WebMethod]
        c.必須宣告為靜態 Static
        d.JS使用PageMethods物件呼叫伺服器端函式。

2.範例
  2.1 ASPX:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
2.2 CodeBehind:
      [System.Web.Services.WebMethod]
        public static string GetServerTime(string format)
        {
            return DateTime.Now.ToString(format);
        }
2.3 JS:
     //呼叫伺服端函式
     PageMethods.GetServerTime("yyyy/MM/dd HH:mm:ss", onSuccess, onError);
   
     //成功時取出內容  
     function onSuccess(Data) {
        var data = Data;
    }
 
     / /失敗時彈出失敗訊息
    function onError(error) {
        if (error != null)
            alert(error);
    }

依經緯度取得地址

1.在CodeBehind建立命名空間,for Google map api轉出的JSON資料之用途

namespace GoogleGeocodingAPI
{
    public class AddressComponent
    {
        public string long_name { get; set; }
        public string short_name { get; set; }
        public List<string> types { get; set; }
    }
    public class Location
    {
        public string lat { get; set; }
        public string lng { get; set; }
    }
    public class Northeast
    {
        public double lat { get; set; }
        public double lng { get; set; }
    }
    public class Southwest
    {
        public double lat { get; set; }
        public double lng { get; set; }
    }
    public class Viewport
    {
        public Northeast northeast { get; set; }
        public Southwest southwest { get; set; }
    }
    public class Geometry
    {
        public Location location { get; set; }
        public string location_type { get; set; }
        public Viewport viewport { get; set; }
    }
    public class Result
    {
        public List<AddressComponent> address_components { get; set; }
        public string formatted_address { get; set; }
        public Geometry geometry { get; set; }
        public bool partial_match { get; set; }
        public List<string> types { get; set; }
    }
    public class RootObject
    {
        public List<Result> results { get; set; }
        public string status { get; set; }
    }
}

2. 建立函式
        //=======================================================
        //<aummary>緯度經度轉中文地址</summary>
        //<param name="latLng"></param>
        //=======================================================
        private static string latLngToChineseAddress(params string[] latLng)
        {
            string url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + string.Join(",", latLng) + "&language=zh-TW&sensor=true";
            string json = string.Empty;
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            using (var response = request.GetResponse())
            {
                using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                {
                    json = sr.ReadToEnd();
                }
            }
            GoogleGeocodingAPI.RootObject rootObj = JsonConvert.DeserializeObject<GoogleGeocodingAPI.RootObject>(json);
            return rootObj.results[0].formatted_address;
        }

3.呼叫轉換函示
private static string GetAddress(string lat,string lng)
        {
            string result = string.Empty;
            result = latLngToChineseAddress(lat, lng);
            return result;
           
        }