PowerShell 研究 – 伺服器維運 定期清理不必要檔案

by Eddie 9. December 2014 10:33
在管理Server上常遇到的問題就是空間不足的狀況,而在整理資料上如果做好計畫的話, 通常在Server之中就會有一堆不知道是誰或者何時建立的檔案, 最近有客戶希望可幫他們設定Windows Backup, 並且提出了希望可以定期的將這些備份檔案給移除的需求。 所以今天就來分享一個實用的PowerShell指令, 這個指令是透過查詢檔案的最後寫入日期來做依據,只要超出一定的時間就會將檔案移除或移動。   以下面這一個我在D磁碟區所建立的Temp資料夾為例,裡面有三個不同的檔案。 其中有一個Word文件是已經超過7天的文件,我希望超出7天的檔案可以被自動移除。 首先我們可以透過下列指令來檢查,這三個檔案的最後寫入日期 Get-ChildItem D:\Temp -Recurse 並透過下列指令將超過7天的檔案來進行移除的動作 $Today = Get-Date $Days = “-7” $TargetFolder = “D:\Temp” $LastWrite = $Today.AddDays($Days) Get-ChildItem $TargetFolder -Recurse | Where {!$_.PSIsContainer}| where {$_.LastWriteTime -le "$LastWrite"} | Remove-Item 之後在回到D:\Temp的資料夾中,就可以看到原本那一個超過7天的Word檔案已經被移除。 參考資料 Using the Get-ChildItem Cmdlet

Tags: ,

PowerShell指令

PowerShell 研究 伺服器維運-Windows Firewall設定

by Eddie 24. November 2014 09:06
這幾天在朋友的FB看到一句話,心裡還蠻有感覺的 他說「企業的IT人員最終目標 : 最終讓自已沒有工作.什麼都要自動化」 這也是最近一直在研究的工作,透過指令減輕自己的負擔,讓大多數的工作可以優化。 防火牆一直是伺服器維運的重點,而Windows Firewall則會本篇說明的主要對象       1. 啟用目前以有的規則,以下面的指令為例,     會啟用「遠端桌面 – 使用者模式 (TCP-In)」這個防火牆規則,     並且設定只有「192.168.0.100」的IP才能連線。     不過要知道完整的防火牆顯示名稱才會設定成功。     由於防火牆規則很多,要記住全部的防火牆名稱不太可能,     所以建議可以以新建的規則來取代目前以存在的規則。       Set-NetFirewallRule -DisplayName "遠端桌面 – 使用者模式 (TCP-In)"     –RemoteAddress "192.168.0.100 " -Enabled True           2. 新增防火牆規則的語法如下     New-NetFireWallRule     –DisplayName ‘ Remote Desktop Service(TCP-In)’ :防火牆規則的顯示名稱     –direction Inbound :設定是在輸入或輸出規則     –Protocol TCP :設定通訊協定類型     –RemotePort 3389 :設定指定的Port     –RemoteAddress 192.168.0.100 :限定只能用特定IP連線      -Profile any (Private, Public, Domain) 選擇讓私人,公開或者網域的連線可以套用這個規則,                                                                                    或者設定Any讓全部的連線都可以使用。       -Progarm “應用程式路徑” 限定只能用特定應用程式才能使用這個Port。       優點是可以不用記住目前在Windows 防火牆中的規則名稱,     可以自訂服務內容,缺點是需要輸入較多的設定。 參考網頁:http://technet.microsoft.com/zh-tw/LIBRARY/jj554908.aspx                  :http://technet.microsoft.com/zh-tw/LIBRARY/jj573834.aspx

Tags: ,

PowerShell指令

PowerShell 指令分享 – 快速建立Hyper-V虛擬機器

by Eddie 7. November 2014 11:41
    在實務上目前大多數所遇到的客戶伺服器都是使用虛擬機器來建立,     而目前如果有購買Windows Server 2012 Standard的授權的話,     每台Server都可以有兩台Hyper-V虛擬機器的授權,     如果是Datacenter版本的授權的話則是不受限制。       這幾年使用Hyper-V來建立虛擬機器的情況也越來越多,     所以今天來分享一下如何用指令建立Hyper-V的虛擬機器,     並且可以自訂電腦名稱、VHDX存放位置、RAM大小、     磁碟空間大小、設定檔與快照的位置。       指令如下: New-VM –Name “TestVM”–MemoryStartupBytes 4096MB –NewVHDPath F:\Hyper-V\TestVM\TestVM.vhdx –NewVHDSizeBytes 100GB -Path F:\Hyper-V\TestVM   New-VM –Name “TestVM” 這個是開始建立新的虛擬機器, -Name的參考請帶入虛擬機器的設定名稱。   –MemoryStartupBytes 4096MB 透過 –MemoryStartupBytes 可以設定虛擬機器的記憶體大小, 單位則是以MB為主。   –NewVHDPath F:\Hyper-V\TestVM\TestVM.vhdx 這個-NewVHDPath的參數則是可以指定虛擬機器硬碟的存放位置, 目前格式只能使用vhdx,輸入舊的vhd格式則是會報錯   –NewVHDSizeBytes 100GB 而-NewVHDSizeBytes的參數則是可以設定虛擬硬碟的容量大小,單位以GB為主。   -Path F:\Hyper-V\TestVM 而為了未來的管理,建議指定虛擬機器的設定檔與快照檔案的存放位置, 透過-Path這個參數可以指定這兩個檔案所存放的位置。       參考文件:     微軟授權三秒教     Create a New Virtual Machine with PowerShell     TechNet New-VM

Tags: ,

PowerShell指令

伺服器維運 - 硬碟空間檢視

by Eddie 3. October 2014 16:59
      在接下一些伺服器維運工作之後,常有客戶想知道硬體運作的狀況       比如說:硬碟的I/O、CPU的平均使用量,硬碟空間等等的資訊       這些資訊當然都可以從UI介面上透過設定還顯示       但不僅麻煩也需要花上一點時間,我今天分享的是透過PowerShell指令來顯示本機的磁碟資訊       包括了硬碟數量、磁區代號、總空間、剩餘空間、硬碟類型等資訊。   PoWerShell指令如下: gwmi Win32_LogicalDisk -Filter "DriveType=3" | select Name, FileSystem,FreeSpace,BlockSize,Size | %{$_.BlockSize=(($_.FreeSpace)/($_.Size))*100;$_.FreeSpace=($_.FreeSpace/1GB);$_.Size=($_.Size/1GB);$_} | Format-Table Name, @{n='FS';e={$_.FileSystem}}, @{n='Free, Gb';e={'{0:N2}'-f $_.FreeSpace}}, @{n='Free,%';e={'{0:N2}'-f $_.BlockSize}}, @{n='Capacity ,Gb';e={'{0:N3}' -f $_.Size}} –AutoSize        不過上述的動作也只是檢查目前硬碟空間的剩餘資訊而已        最終還需要系統可以自動化的發出警告或通知        這才是硬體維運的目標,所以透過下面的PowerShell指令        我設定為只要有硬碟空間小於百分之10的情況下,以SMTP Server寄信通知收件者   指令如下 $mythreshold = 10 $freespace = gwmi Win32_LogicalDisk -Filter "DriveType=3" | select Name, FileSystem,FreeSpace,BlockSize,Size ForEach($item in $freespace) { $item.BlockSize=(($item.FreeSpace)/($item.Size))*100 $item.FreeSpace=($item.FreeSpace/1GB) $item.Size=($item.Size/1GB) if ($item.BlockSize -lt $mythreshold){ $from = "[email protected]" $to = "[email protected]" $subject = "Low Disk Space!" $body = "Free Space Remaining: " + "<p></p>磁碟總容量(GB):" + $item.size + "<p></p>剩餘空間(GB):" + $item.FreeSpace + "<p></p>磁區:" + $item.name + "<p></p>剩餘百分比:" + $item.BlockSize +"%" $smtpServer = "192.168.2.3" Send-MailMessage -From $from -to $to -Subject $subject -Body $body -SmtpServer $smtpServer -BodyAsHtml -Encoding UTF8 } }   參考文件 Win32_LogicalDisk class Chkdsk method of the Win32_LogicalDisk class

Tags: ,

PowerShell指令

透過PowerShell來管理Office 365

by Eddie 26. September 2014 12:44
透過PowerShell來管理Office 365 有時候替客戶管理Office 365時網頁式的管理平台有些事情做無法達成 這時候PowerShell的介面就是一個很好的工具, 而透過PowerShell的登入Office 365的說明網路上有很多,我這邊就不在多敘述, 今天要來介紹的是如何在登入Office 365時可以使用最新的PowerShell指令 並分享我所遇過在網頁管理平台做不到。 必須要使用PowerShell才能達成的指令。   1. 再透過PowerShell登入Office 365之後     為了確保目前使用的指令符合Office 365以及更新本機上的版本,     輸入下列指令,AllowRedirection 可讓全世界資料中心的雲端架構組織使用相同的URL,     並將 Windows PowerShell 連線到 Office 365 雲端架構服務。     $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/ powershell/ -Credential $LiveCred -Authentication Basic –AllowRedirection     2. 之後為了將將用於 Office 365 雲端架構服務的命令匯入至本機電腦的用戶端工作階段,     請輸入下列指令,完成後您就可以開始在 PowerShell 執行命令進行操作。   PowerShell 才能完成的工作有不少,我自己遇到的是一個郵件重新導向的規則 必須要透過PowerShell的方式來設定,雖然在使用者個郵件規則中是有這個設定 但是如果要重新導向的帳號是外部帳號的話,就要使用PowerShell來設定。 如果使用者有將郵件重新導向至外務帳號的需求的話,請輸入下列的指令 New-InboxRule -Name "MailRedirect" -Mailbox XXX -RedirectTo [email protected] 其中XXX代表的是在Office 365中使用者的名稱,[email protected]是要重新導向的E-mail帳號。 完成之後就會如下圖所示,新增了一個規則在這個XXX的使用者帳號中 使用PowerShell來管理的好處很多,快速方便,有錯誤的話也可以有比較明顯的提示, 在這邊分享自己的一點小心得,有任何問題也歡迎一起來討論。     參考文件 方便管理及部署 Office 365 的 Windows PowerShell Cmdlet Use PowerShell to Manage Office 365 Users

Tags:

Office 365 | Windows Server

PowerShell 遠端操控 server -2

by Joseph Wu 13. October 2011 19:13
繼上一篇 PowerShell  遠端操控 server,我又在嘗試於 Workgroup + Domain 的環境下,該如何使用遠端操作。 在說明設定之前,我想提及一個重要的觀念,也就是遠端操控到底是如何運作的 ? 這是我之前上蘇建榮老師的課所得知的知識,分享如下: 一、遠端管理 這是第一種方式,也是傳統的方式,使用 RPC 來進行。 ex:  Get-WMIObject Win32_LogicalDisk –ComputerName <ServerName>   二、遠端執行 建議使用的方式,是透過 WinRM 服務進行。 其實原理就是,將命令傳給另一個 server 來執行。 ex: Invoke-Command ……. 那我們該如何設定呢 ? 本篇先說明一種最簡單快速的方式 → 安裝 Server 完畢後,將 Administrator 設定同樣的密碼,就可以立即使用 。 (結束) 有沒有覺得很無言………….。雖說簡單,但是我們必須知道為什麼可以這麼做。 原因有二: (1) RPC 服務一定是被開啟的  (2) 防火牆預設是有針對 RPC 服務開啟的 被選擇的防火牆規則,即是可以使用遠端操控的關鍵之一,我們點右鍵按內容來看詳細資訊,即發現此規則,即為上一篇所提及的,是開啟 RPC 動態連接埠 + svhost.exe 這支程式。 不過這有個小細節要注意,就是這招只能使用在 administrator 的帳戶之下,就連加入 administrators 群組的帳戶一樣無法使用,如下圖:   如果要使用不同帳戶的話,必須增加 2 個設定:(可參考 Remote WMI to a Workgroup Server 2008 R2 這篇文章) 1、開啟遠端使用 com 元件 (1)      (2)      (3)      2、 WMI Control 的安全性設定 (1) (2) (3)   我設定完之後,測試無誤。但發現, powershell 的回應速度有變慢。    另外,如果是 Domain 、 WorkGroup 混用的環境中,也是同樣可以使用的,只要帳號密碼一樣、防火牆設定正確,即可使用。                

Tags: ,

Windows Server

PowerShell 遠端操控 server

by Joseph Wu 4. October 2011 16:19
最近在嘗試使用 PowerShell 遠端操控 server ,有些心得分享如下: 1、在非 domain 的環境下 (WORKGROUP) , 除了開啟防火牆外,還需要憑證 2、在 domain 的環境下,防火牆開啟 「RPC 動態對應連接埠」 or 「svhost.exe」即可   我的所有電腦都是加入 domain 的環境 另外,有時候我覺得納悶,為何有時候我防火牆什麼都沒設定,我的 PowerShell 竟然就能遠端操作 server 了,為何呢?                 其實阿,有些服務安裝完畢之後,就會連帶開啟相關的防火牆設定,而剛好該設定是 PowerShell 可以共用的,所以才會讓我誤認為在 Domain 中使用 PowerShell 是不用任何設定的。舉例來說,當我們安裝了 NLB (網路負載平衡)  的功能之後,會開啟的其中 1 個防火牆規則,如下圖: 我們點內容深入觀察,可以發現,該規則開啟了 svhost.exe 的程式且開放所有 port ,如下圖: 除此之外,大家還可以嘗試自行打開 RPC 動態對應連接埠,如下圖: 如此一來,PowerShell 就可以遠端來操控 server 了。

Tags: ,

Windows Server

關於我們

這裡是由一群熟悉 Microsoft IT 技術的工程師所共同分享技術文章的部落格,除了定期分享工作上的技術經驗,我們也提供專業的技術顧問諮詢服務,有任何疑難雜症都歡迎與我們��絡!

  • 陳冠龍(Owen)
  • 02-2322-2480 # 33
  • 陳昌賢(Mars)
  • 02-2322-2480 # 16
  • 有任何的建議或問題,請來信 [email protected]

※ 學習資源:
    2016/3/9 - 你所不知道的 Microsoft Azure 雲端採購技巧
    (講者:多奇數位技術總監 - Will 保哥)

最新消息

企業上雲端會是未來趨勢

微軟主打 2 種公有雲平台

Office 365 & Azure

有興趣皆可來電 or E-Mail 詢問

Calendar

<<  April 2024  >>
MoTuWeThFrSaSu
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

View posts in large calendar