当前位置:文档之家› 玩转Powershell系列汇总贴

玩转Powershell系列汇总贴

玩转Powershell系列汇总贴
玩转Powershell系列汇总贴

[原创]玩转PS之检测硬盘自由空间

硬盘, 空间, 检测, 自由

玩powershell已经有几天,发现它实在是太好用了!兄弟们,别在vbs和批处理上费劲了,

这边有特别省力的方法啊!

今天开始,逐步推出原创的玩转PS系列,主要针对管理员的日常管理任务,谈谈在PS上,

怎么实现。

第一个任务,检查服务器上面硬盘的自由空间!

首先让我们看看在vbs下面是怎么实现的,下面代码是我从微软脚本中心copy来的。

1.Const HARD_DISK = 3

2.

3.strComputer = "."

4.Set objWMIService = GetObject("winmgmts:" _

5. & "{impersonationLevel=impersonate}!\\" &strComputer& "\root\cimv2")

6.

7.Set colDisks = objWMIService.ExecQuery _

8. ("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")

9.

10.For Each objDisk in colDisks

11. Wscript.Echo "DeviceID: "&vbTab& objDisk.DeviceID

12. Wscript.Echo "Free Disk Space: "&vbTab&objDisk.FreeSpace

13.Next

复制代码

注意strComputer = "."这句话,其中的点代表检查本地计算机,如果换成其他服务器的名

字,就可以检查远程计算机了。

好了用PS如何做呢?

首先我们把上面那个select语句抄下来,稍加改动,就是PS的格式

$query="Select * from Win32_LogicalDisk Where DriveType = '3'"

看着比vbs简单吧?注意我把hard_disk换成了数字3,省去了再定义个变量的麻烦。

然后我们就可以直接用PS下面的gwmi (全名为get-wmiobject)命令来进行检测了

$disks = gwmi -query $query

简单吧,上面的命令检测本地计算机的逻辑硬盘,把结果放到$disks变量里面去,如果检

测远程计算机呢?把上面的命令改成

$disks = gwmi -query $query -computer "remotepc"

其中remotepc应该是你要检测的远程计算机名字。

下面我们如何查看$disks里面的内容呢?

你可以直接打$disks

会给你一个列表类似这样。

DeviceID : C:

DriveType : 3

ProviderName :

FreeSpace : 14351843328

Size : 31453437952

VolumeName :

DeviceID : E:

DriveType : 3

ProviderName :

FreeSpace : 1361903616

Size : 5388038144

VolumeName : New Volume

不太好看哦,我们只需要看看deviceid 和 freespace就可以了。好了运行这一句

$disks | select deviceid, freespace

之后,结果类似下面

deviceid

freespace

--------

---------

C:

14351843328

E:

1361903616

好看多了吧?

我觉得还是不够,我想看到freespace的大小是gb或者mb而不是上面的那个样子。

我们做一个简单的除法就可以了。试试下面的命令

foreach ($disk in $disks)

{

"DiviceID - " + $disk.deviceid

"FreeSize(GB) - "+($disk.freespace/1gb)

}

结果就变成

DiviceID - C:

FreeSize(GB) - 13.3661956787109

DiviceID - E:

FreeSize(GB) - 1.26837158203125

呵呵够精确吧?在PS下面,把数字转化成mb或gb是非常方便的,不需要你1024,1024的除,只要直接除1gb或1kb或1mb就可以了!

让我们最后总结一下上面的命令

1.$query="Select * from Win32_LogicalDisk Where DriveType = '3'"

2.$disks = gwmi -query $query

3.foreach ($disk in $disks)

4.{

5."DiviceID - " + $disk.deviceid

6."FreeSize(GB) - "+($disk.freespace/1gb)

7.}

复制代码

比较一下vbs的代码,哪个更方便呢?

好事儿做到底,再加点儿功能,想列出多台计算机的信息咋办?

不急,先建立一个变量,假设你有三台服务器,名字是server1,server2,server3

1.$servers= "server1","server2","server3"

复制代码

然后把上面的代码改写成

1.$query="Select * from Win32_LogicalDisk Where DriveType = '3'"

2.foreach ($server in $servers)

3.{

4."Servername - " + $server

5.$disks = gwmi -query $query -computer $server

6.foreach ($disk in $disks)

7.{

8."DiviceID - " + $disk.deviceid

9."FreeSize(GB) - "+($disk.freespace/1gb)

10.}

11.}

复制代码

[原创]玩转PS之计算篇

计算

加减乘除在PS里面都很好实现。+ - * / 就可以了。

下面介绍几个特殊的情况。

举个例子

大家试验下面两条语句

[int](3/2)

[int](5/2)

结果都是2。

那么如果希望得到所得结果的整数位该怎么做呢?

Powershell本身不带这个命令,不过.net带,所以用下面的方法就可得到结果的整数位了。

[Math]::Truncate(3/2)

结果是1

[Math]::Truncate(5/2)

结果是2

余数呢?用%就可以得到余数。

上面那些东西在现实工作中有用么?当然有,我最近写的一个脚本,每次运行时会自动记录当前的运行时间。我没有直接用get-date的结果,因为如果在不同的计算机上运行,由于时间格式的不同,结果往往不是我们所预期的格式。因此,我用了类似

[int](get-date).timeofday.totalminutes这种方式来记录时间,这样得到的结果就都是统一的。

那么该怎么把得到的结果返回时间格式呢?

就要用到上面的方法了。比如我有一个记录630,也就是说该时间是当天的第630分钟,倒底

是几点钟呢?

这样来算

$hour=[Math]::Truncate(630/60)

$minute=630%60

然后我们把它给转换成时间

$t = get-date -hour $hour -minute $minute -second 0

我们直接打$t显示630分钟底是几点?结果如下

Friday, 25 January 2008 10:30:00 a.m.

[原创]玩转PS之 - 命令执行结果

ping, 计算机

从帖子的题目上看恐怕看不出命令执行结果对于我们来说有多么大的重要性。但是如果我换

一种说法,也许您就感兴趣了。

如何检测远程计算机是否能够ping通?如何检测某个目录下是否存在某个文件?

您可能会想到好几种方法,来实现。下面我来介绍一种非常容易的办法,保证你会感兴趣!

第一,检测能否ping通远程计算机。

很简单,直接ping就可以了比如

ping notexsitedpc

或者ping 192.168.1.244

如果这个计算机不存在,或者dns解析不出来ip地址,你都不会ping成功。会得到类似

request time out 之类的返回值。

那么如果在脚本中来ping的话,一般是需要对返回值进行字符串匹配,来判断是否成功。

在powershell下,太好办了。

直接在执行完ping语句后,打$?,如果结果是true证明ping通了,如果是false则ping失

败。

举一反三,检查某个文件,某个目录是否存在呢?

dir c:\notexsitedfile.txt

$?

如果结果是false 则文件不存在,如果结果是true则文件存在。

这样我们就可以利用$?来写脚本了比如检测某台计算机的网络是否连通就可以这么写

ping myserver

if ($?)

{"Greate! the server is online!"}

else

{"Shit, the server is offline!"}

顺便说一句,如果你希望得到上一条命令的返回数字值,而不是布尔值,可以调用powershell

的保留变量$lastexitcode

还是上面的命令

dir c:\notexsitedfile.txt

执行之后,打入

$lastexitcode

如果成功则返回0,失败则返回1。

自己试试吧!

[原创]玩转PS之email篇

email, 邮箱, 过年, powershell

有一段日子没有更新这个系列了,主要是大家都忙于过年,也没有什么心情来写东西。

今天要和大家讨论一下如何用powershell发email,主要原因是刚刚有一个客户跟我说,他想每周都能得到一份单位内用户的exchange mailbox大小的报告,最好是email的方式。呵呵,要解决这个问题,我们要分两部分来做,首先是如何用powershell来查看邮箱的大小,然后是如何发用powershell送email给客户。

下面象大家汇报我是如何做的,第一步......

嘿嘿,第一步不是打开powershell,而是打开IE,敲入https://www.doczj.com/doc/803199092.html, :^),然后搜索

"powershell exchange 2003 mailbox size"

然后我得到好多的结果,随便打开一个连接得到下面的一段代码

# Get date for file name

$day = Get-Date -UFormat "%Y%m%d"

# Gets data through WMI from specified Exchange mailbox servers

$computers = "server001","server002"

foreach ($computer in $computers) {

Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class Exchange_Mailbox -computer $computer | sort-object -descMailboxDisplayName | select-object MailboxDisplayName,StorageGroupName,StoreName,Size,DateDiscoveredAbsentInDS |

Export-Csv -Path $computer-$day.csv

}

从上面的代码看出,他有两台email 服务器,我只有一台。另外他是把结果保存在当前目录下面的以当前日期和服务器名字作为文件名的.csv文件中的。我呢,玩个票,把结果保

存成html文件,呵呵。

好了开始写我的代码

$day = Get-Date -UFormat "%Y%m%d"

这句话是为了生成文件名中的日期

$computer="myexchangeserver"

写入你的email服务器名

$filename="c:\mailboxlog\$computer-$day.html"

我在c:下面专门建立一个目录用来存放报告

$mailboxes=Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class Exchange_Mailbox -computer $computer | sort-object -desc size | select-object MailboxDisplayName, @{Name="Size(MB)"; Expression = {[int]($_.size/1kb)}}

上面这句话改动的比较厉害。首先,原句是根据邮箱名来排序的,我改成了根据大小来排序,

最大的排在前面 sort-object -desc size

select-object MailboxDisplayName, @{Name="Size(MB)"; Expression = {[int]($_.size/1kb)}} 这一段稍微有点儿复杂,首先我只需要得到两个信息,邮箱名和大小。但是通过get-wmi#object 语句得到的size是kbyte的,我希望是基于MB的所以改成了上面的样子。这样,所有的邮箱大小名字信息就都存在了$mailboxes这个对象里面了。

然后,我们把$mailboxes输出为html格式,很简单

$mailboxes | ConvertTo-Html | Set-Content $filename

这样报告就生成了,下面进入正题,发送email 报告。

发送email都需要什么信息呢?

首先email服务器 $computer这个在前面已经定义了

然后发件人

$from="mwpq@https://www.doczj.com/doc/803199092.html,"

然后收件人

$to="manager@https://www.doczj.com/doc/803199092.html,"

然后邮件主题

$title="Weekly Exchange Mailbox Size Report"

然后内容

$body="This email generated by mwpq'spowershell to collect mailbox info from exchange server, see attachment for details please."

好了照抄下面,不要问我为什么,因为我也是从https://www.doczj.com/doc/803199092.html,上面抄来的。顺便说下,在vbscript下我一般用cdo来发送email,powershell就不用那么麻烦了,用.net下面的

email client 就可以了,很方便。

$smtp = new-Object https://www.doczj.com/doc/803199092.html,.Mail.SmtpClient($computer) $emailMsg = new-Object https://www.doczj.com/doc/803199092.html,.Mail.MailMessage($from,$to, $title, $body) $attachment = new-Object https://www.doczj.com/doc/803199092.html,.Mail.Attachment($filename)

$emailMsg.Attachments.Add($attachment)

$smtp.Send($emailMsg)

最后全部代码在这里

1.$day = Get-Date -UFormat "%Y%m%d"

2.$computer="myexchangeserver"

3.$filename="c:\mailboxlog\$computer-$day.html"

4.$mailboxes=Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class

Exchange_Mailbox -computer $computer | sort-object -desc size | select-object

MailboxDisplayName, @{Name="Size(MB)"; Expression = {[int]($_.size/1kb)}}

5.$mailboxes | ConvertTo-Html | Set-Content $filename

6.$from="mwpq@https://www.doczj.com/doc/803199092.html,"

7.$to="manager@https://www.doczj.com/doc/803199092.html,"

8.$title="Weekly Exchange Mailbox Size Report"

9.$body="This email generated by mwpq'spowershell to collect mailbox info from

exchange server, see attachment for details please."

10.$smtp = new-Object https://www.doczj.com/doc/803199092.html,.Mail.SmtpClient($computer)

11.$emailMsg = new-Object https://www.doczj.com/doc/803199092.html,.Mail.MailMessage($from,$to, $title, $body)

12.$attachment = new-Object https://www.doczj.com/doc/803199092.html,.Mail.Attachment($filename)

13.$emailMsg.Attachments.Add($attachment)

14.$smtp.Send($emailMsg)

复制代码

[原创]玩转PS之偷偷下载

下载

今天和大家讨论一个很简单,又有点儿意思的话题,用PowerShell 来从web上面下载文件。

如果你想偷偷地下载点儿文件,又不想被别人看到,用IE当然不行了,太明显了,总有一个图标在窗口上,任谁一看也知道你在下载东西。其他的一些专业下载工具,有点儿计算机

基础的人都知道,谁也别想瞒谁。

这里给你一个小建议,可以试试用powershell来做。

首先powershell 1.0 里面没有直接的命令来做这件事,没关系,我们可以用.net的

webclient来做,很简单。

先定义从哪里下载

$source="https://www.doczj.com/doc/803199092.html,/dianying.zip"

然后定义存到哪里

$destination="c:\temp\2.zip"

然后定义一个webclient对象

$www=New-Object https://www.doczj.com/doc/803199092.html,.WebClient

然后下载,搞定!

$www.DownloadFile($source, $destination)

很简单吧?另外你可以把全部代码(见下面)存为一个ps1文件比如叫做,xuexi.ps1

1.$source="http://www.xiazai.www/dianying.zip"

2.$destination="c:\temp\2.zip"

3.$www=New-Object https://www.doczj.com/doc/803199092.html,.WebClient

4.$www.DownloadFile($source, $destination)

复制代码

然后在ps下面直接运行这个脚本,这样谁也不知道你脚本里面的内容。如果还是不安全,觉得一个powershell的窗口在桌面上不好,你可以创建一个计划任务(如果你不想任务执行时弹出窗口,最简单是让计划任务在另一个用户名字下面运行。),然后运行这个脚本。

这样桌面上谁也看不到这个脚本运行了,即使在task manager里面也只能看到一个

powershell的进程在跑,怎么样?够安全吧?

[原创]玩转PS之数据库篇

数据库

如何利用PowerShell来进行针对数据库的操作,比如查询、更新表格等等?

听起来挺复杂哦!不过不用担心,我也不是数据库方面的专家,我能够利用PS来查询数据

库,你就一定也可以。

好了,第一步!

一般来说IT技术人员遇到问题,第一步应该打开https://www.doczj.com/doc/803199092.html,,不过今天很幸运,我手头正好有一本书叫做《Windows PowerShell Cookbook》,2007年5月由OReilly出版的。与大多数讲PowerShell的书不同,这本“PowerShell菜谱”不着重讲解PS的语言,而是罗列了若干管理员所要面对的问题,然后给出PowerShell的解决方法,大家有兴趣不妨也

下载看看。

从这本书上我看到下面一段针对数据库的脚本,写得非常好,不用改,拿过来就可以用,好

东西不敢藏私,与大家分享。

1.#############################################################################

#

2.##

3.## Invoke-SqlCommand.ps1

4.##

5.## From Windows PowerShell Cookbook (O'Reilly)

6.## by Lee Holmes (https://www.doczj.com/doc/803199092.html,/guide)

7.##

8.## Return the results of a SQL query or operation

9.##

10.## ie:

11.##

12.## ## Use Windows authentication

13.## Invoke-SqlCommand.ps1 -Sql "SELECT TOP 10 * FROM Orders"

14.##

15.## ## Use SQL Authentication

16.## $cred = Get-Credential

17.## Invoke-SqlCommand.ps1 -Sql "SELECT TOP 10 * FROM Orders" -Cred $cred

18.##

19.## ## Perform an update

20.## $server = "MYSERVER"

21.## $database = "Master"

22.## $sql = "UPDATE Orders SET EmployeeID = 6 WHERE OrderID = 10248"

23.## Invoke-SqlCommand $server $database $sql

24.##

25.## $sql = "EXEC SalesByCategory 'Beverages'"

26.## Invoke-SqlCommand -Sql $sql

27.##

28.## ## Access an access database

29.## Invoke-SqlCommand (Resolve-Path access_test.mdb) -Sql "SELECT * FROM Users"

30.##

31.## ## Access an excel file

32.## Invoke-SqlCommand (Resolve-Path xls_test.xls) -Sql 'SELECT * FROM

[Sheet1$]'

33.##

34.#############################################################################

#

35.

36.param(

37. [string] $dataSource = ".\SQLEXPRESS",

38. [string] $database = "Northwind",

39. [string] $sqlCommand = $(throw "Please specify a query."),

40. [System.Management.Automation.PsCredential] $credential

41. )

42.

43.

44.## Prepare the authentication information. By default, we pick

45.## Windows authentication

46.$authentication = "Integrated Security=SSPI;"

47.

48.## If the user supplies a credential, then they want SQL

49.## authentication

50.if($credential)

51.{

52. $plainCred = $credential.GetNetworkCredential()

53. $authentication =

54. ("uid={0};pwd={1};" -f $https://www.doczj.com/doc/803199092.html,ername,$plainCred.Password)

55.}

56.

57.## Prepare the connection string out of the information they

58.## provide

59.$connectionString = "Provider=sqloledb; " +

60. "Data Source=$dataSource; " +

61. "Initial Catalog=$database; " +

62. "$authentication; "

63.

64.## If they specify an Access database or Excel file as the connection

65.## source, modify the connection string to connect to that data source

66.if($dataSource -match '\.xls$|\.mdb$')

67.{

68. $connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data

Source=$dataSource; "

69.

70. if($dataSource -match '\.xls$')

71. {

72. $connectionString += 'Extended Properties="Excel 8.0;"; '

73.

74. ## Generate an error if they didn't specify the sheet name properly

75. if($sqlCommand -notmatch '\[.+\$\]')

76. {

77. $error = 'Sheet names should be surrounded by square brackets, and

' +

78. 'have a dollar sign at the end: [Sheet1$]'

79. Write-Error $error

80. return

81. }

82. }

83.}

84.

85.## Connect to the data source and open it

86.$connection = New-Object System.Data.OleDb.OleDbConnection $connectionString

87.$command = New-Object System.Data.OleDb.OleDbCommand $sqlCommand,$connection

88.$connection.Open()

89.

90.## Fetch the results, and close the connection

91.$adapter = New-Object System.Data.OleDb.OleDbDataAdapter $command

92.$dataset = New-Object System.Data.DataSet

93.[void] $adapter.Fill($dataSet)

94.$connection.Close()

95.

96.## Return all of the rows from their query

97.$dataSet.Tables | Select-Object -Expand Rows

复制代码

呵呵,里面都已经有了详细的解释如何使用,就不需要我多做解释了。我用这段脚本查询过sql数据库和access数据库,另外它还可以用来查询excel文档!真的很棒!

[原创]玩转PS之图形菜单

图形, 菜单

在PS之前,如果我希望为用户提供一个复杂点儿的图形菜单,如果我用vbs的话,一般会使用hta来实现。而PowerShell下面则可以利用.net来实现windows gui风格的菜单。下面,我来和大家一起实现一个不算很复杂的菜单。菜单里有两个输入框,让用户来输入名字和姓。然后还有一个多选框来让用户选择最喜欢的数字。最后当用户点ok按钮之后,会

在PS console下面显示 "hi 谁谁谁,你最喜欢的数字是 xxx"

下面就是菜单的代码,我已经做了中文的注解,理解起来应该不是很难。

1.[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

2.[void]

[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

3.

4.#生成菜单框,大小为300x400,在屏幕中央显示

5.$objForm = New-Object System.Windows.Forms.Form

6.$objForm.Text = "PowerShell Menu"

7.$objForm.Size = New-Object System.Drawing.Size(300,400)

8.$objForm.StartPosition = "CenterScreen"

9.

10.#下面生成第一个输入框,包括输入提示文本,和输入框。提示用户输入名字,这里设定了一个缺

省名为Greg

11.$objLabel = New-Object https://www.doczj.com/doc/803199092.html,bel

12.$objLabel.Location = New-Object System.Drawing.Size(10,20)

13.$objLabel.Size = New-Object System.Drawing.Size(280,20)

14.$objLabel.Text = "Please enter your First name:"

15.$objForm.Controls.Add($objLabel)

16.

17.$objTextBox = New-Object System.Windows.Forms.TextBox

18.$objTextBox.Location = New-Object System.Drawing.Size(10,40)

19.$objTextBox.Size = New-Object System.Drawing.Size(260,20)

20.$objTextBox.text = "Greg"

21.$objForm.Controls.Add($objTextBox)

22.

23.#下面生成第二个输入框,包括输入提示文本,和输入框。提示用户输入姓,这里设定了一个缺省

值为Wang

24.

25.

26.$objLabel1 = New-Object https://www.doczj.com/doc/803199092.html,bel

27.$objLabel1.Location = New-Object System.Drawing.Size(10,60)

28.$objLabel1.Size = New-Object System.Drawing.Size(280,20)

29.$objLabel1.Text = "Please enter your surname:"

30.$objForm.Controls.Add($objLabel1)

31.

32.$objTextBox1 = New-Object System.Windows.Forms.TextBox

33.$objTextBox1.Location = New-Object System.Drawing.Size(10,80)

34.$objTextBox1.Size = New-Object System.Drawing.Size(260,20)

35.$objTextBox1.text = "Wang"

36.$objForm.Controls.Add($objTextBox1)

37.

38.#生成一多选框,要求用户选择最喜欢的数字

39.$objLabel2 = New-Object https://www.doczj.com/doc/803199092.html,bel

40.$objLabel2.Location = New-Object System.Drawing.Size(10,100)

41.$objLabel2.Size = New-Object System.Drawing.Size(280,20)

42.$objLabel2.Text = "Please enter your favorite number:"

43.$objForm.Controls.Add($objLabel2)

44.

45.$number=0..9

46.$objListbox = New-Object Windows.Forms.CheckedListBox

47.$objListbox.CheckOnClick = $true

48.$objListBox.Items.AddRange($number)

49.$objListBox.Location=New-Object System.Drawing.Size(10,120)

50.$objListBox.Size = New-Object System.Drawing.Size(260,160)

51.$objForm.Controls.Add($objListBox)

52.

53.#生成OK按钮

54.

55.$OKButton = New-Object System.Windows.Forms.Button

56.$OKButton.Location = New-Object System.Drawing.Size(110,320)

57.$OKButton.Size = New-Object System.Drawing.Size(75,23)

58.$OKButton.Text = "OK"

59.$OKButton.Add_Click({$objForm.Close()})

60.$objForm.Controls.Add($OKButton)

61.

62.#生成结果

63.$objForm.Add_Shown({$objForm.Activate()})

64.[void] $objForm.ShowDialog()

65.

66."Hi "+$objTextBox.text+" "+$objTextBox1.text+"! Your favorite number is:"

67.foreach($index in $objListBox.CheckedIndices)

68.{

69.$number[$index]

70.}

复制代码

呵呵,如果你还希望更复杂的菜单,在powershell下面也能做到,你可以参考下面的连接,

来完成复杂的菜单!

https://www.doczj.com/doc/803199092.html,/en-us ... .windows.forms.aspx

[原创]玩转PS之email篇续 - 把gmail当相册

gmail, email, 相册

今天察看了一下移动硬盘中的照片,发现照片已经有5G左右的大小了,脑子里突然闪过一个念头,要是硬盘坏掉了,我的照片怎么办?备份啊!再买一个硬

盘?网络上有免费的啊!现在的免费邮件大都是5G以上的,gmail已经6.6G了!为什么不用啊?放在网络上,随时,随地都可以查看自己的照片,又安全、又

方便。

首先选择哪一个免费邮件系统呢?比较了hotmail和gmail(yahoo我不怎么用),我决定还是使用gmail。原因第一是比较符合我的照片总大小,6.6G,最主要

的原因是它的照片预览功能好于hotmail。别人发给我的照片如果在附件里面的话在

hotmail上要下载才能看,而gmail里面则直接生成小尺寸的照片嵌在邮件

里面非常方便。另外邮件标签用起来比文件夹更方便。所以选择gmail。

申请一个免费的gmail信箱先,具体是啥就不说了,省得搞来一对垃圾邮件。

下面的问题,怎么把这些照片传上去?

最苯的方法,在gmail里面新建邮件,然后加入附件,然后存储为draft,然后加上标签!

gmail里面有一个功能不好,就是每一个附件要单独选择,这样我的

几千张照片要一张张添加的话,还不如杀了我呢!

另一个办法就是把这些照片分批地根据时间、事件、地点等等用邮件一封封发过去,然后加入标签,这样也便于以后的查看。现在gmail支持20MB的附件,

1MB左右的照片可以十几张一组。基本符合我的要求。

下面从哪里,怎样发?从家里不行,我用的adsl,上传速度只有640k,这要搞到什么时候啊?

嘿嘿嘿,从单位吧,哪里带宽大大地!

用什么发呢?最简单的用单位的outlook,可以一次选择多个附件添加入邮件里面,发送就可以了。不过最大的问题是,这样的话,邮件会保存在sent item

里面,想象下我的5G邮件都发走了话,我的邮箱会变得多大?当然可以发完就删掉,不过我们邮件服务器的设置是保存删除邮件一个月,也就是说怎样一个

月内也会把邮件服务器搞大5GB。备份空间又是问题了!用isp的服务器来转发?邮件大小

限制10M,gmail的20M浪费了。

于是,我还是用powershell脚本来发。

用脚本最主要的问题是要一封信发多个附件。

下面我来给出我的脚本

1.# 邮件标题

2.$title="2005年黄山游"

3.# 邮件内容,写点关于照片的文字什么的

4.$body="啊!黄山多美丽,其实没去过!嘻嘻"

5.# 邮件服务器名或ip

6.$computer="emailserver"

7.#发件人

8.$from="照片上传者<[email]mwpq@https://www.doczj.com/doc/803199092.html,[/email]>"

9.#收件地址,就是你申请的gmail地址

10.$to="photo1234@https://www.doczj.com/doc/803199092.html,"

11.#照片存放文件夹,把一次要发的照片存放在一个目录下,发完删掉,然后加入新的照片。注意尺

寸不要超过20MB。这里放到c:\tttt下面

12.$filenames= dir c:\tttt

13.#下面照抄,不要多问

14.$smtp = new-Object https://www.doczj.com/doc/803199092.html,.Mail.SmtpClient($computer)

15.$emailMsg = new-Object https://www.doczj.com/doc/803199092.html,.Mail.MailMessage($from,$to, $title, $body)

16.foreach($filename in $filenames)

17.{

18.$attachment = new-Object https://www.doczj.com/doc/803199092.html,.Mail.Attachment($filename.fullname)

19.$emailMsg.Attachments.Add($attachment)

20.}

21.$smtp.Send($emailMsg)

复制代码

呵呵,完成了。把这段代码根据你的情况改动后存为send.ps1,然后就可以用了。

每次发邮件可以更改$title,$body的内容,然后把照片放到c:\tttt里面。

不过还有几点注意事项,在powershell下面邮件不会立即就发走,要等一会,解决办法是关闭powershell,邮件立即就走了。或者干脆写一个批处理来运行上面的send.ps1脚本。

例如把send.ps1存在c:\scripts下面。然后批处理写成 powershell.exe

"c:\scripts\send.ps1" 就可以了。

另外根据你的邮件服务器设置,有可能你要在上面改动sending的最大邮件尺寸,以及把这台计算机加入allow relay的列表中,具体怎么做,不属于这篇文章讨论的范围了!

[原创]玩转PS之DNS

DNS

好多天没有更新这个系列了,不是我偷懒,实在最近太忙,忙着学习C#。挺不错的语言,

与PS很相近,其中的很多东西都是共通的。

今天和大家讨论一个关于DNS的话题。如何通过powershell来解析dns到主机名或者反过

来?

大家可能最先想到ping命令,的确可以用这个命令来做,但我要讨论的是通过powershell

本身来做,也就是不依靠外部命令来实现。

首先,我们试试从dns到ip地址的解析

给出一个dns比如https://www.doczj.com/doc/803199092.html,

$googledns="https://www.doczj.com/doc/803199092.html,"

然后,我们调用.net下面的dns类的gethostaddresses method很简单的一句话就可以实现

[https://www.doczj.com/doc/803199092.html,.dns]::gethostaddresses()

好我们这样写

$googleIPaddresses=[https://www.doczj.com/doc/803199092.html,.dns]::gethostaddresses($googledns)

这时候要注意$googleIPaddress不是一个对象,而是多对象,我们只需要其中的IP地址。可

以用foreach来实现显示

foreach($ip in $googleIPaddresses)

{

$ip.ipaddresstostring

}

呵呵,完成了结果应该如下

72.14.253.104

72.14.253.147

72.14.253.99

下面我们看看怎么把IP地址反向解析成dns地址。还是用google为例,72.14.253.104这个

地址对应什么dns地址呢。

$unknownip="72.14.253.104"

$dns=[https://www.doczj.com/doc/803199092.html,.dns]::gethostentry($unknownip).hostname

注意上面一句我在后面加上了hostname属性,直接把dns值赋值给$dns这个变量,应为该method返回的是一个对象,所以我可以直接引用该对象的某个属性。

这时候敲入$dns就会得到其dns地址。

怎么样用.net实现也很简单吧?

Powershell快速配置DHCP服务(原创)

$dhcpscope=read-host -Prompt "请输入dhcp作用域地址" $scopename=Read-Host -Prompt "请输入dhcp作用域名称" $scopedescript=Read-Host -Prompt "请输入dhcp作用域的描述" $Hostname=$env:COMPUTERNAME $fqdnname=([https://www.doczj.com/doc/803199092.html,.dns]::gethostentry($Hostname)).Hostname $iprangea=Read-Host -Prompt "请输入dhcp分配起始地址" $iprangeb=Read-Host -Prompt "请输入dhcp分配结束地址" $ipexcludea=Read-Host -Prompt "请输入dhcp排除起始地址" $ipexcludeb=Read-Host -Prompt "请输入dhcp排除结束地址" $ipgateway=Read-Host -Prompt "请输入dhcp分配的网关地址" $ipdns=Read-Host -Prompt "请输入dhcp分配的dns地址" ServerManagercmd -i dhcp Get-Service dhcpserver |Set-Service -StartupType automatic Start-Service dhcpserver netshdhcp server add scope $dhcpscope 255.255.255.0 $scopename $scopedescript netshdhcp add server $fqdnname netshdhcp server scope $dhcpscope add iprange $iprangea $iprangebdhcp netshdhcp server scope $dhcpscope add excluderange $ipexcludea $ipexcludeb netshdhcp server scope $dhcpscope set optionvalue 003 ipaddress $ipgateway netshdhcp server scope $dhcpscope set optionvalue 006 ipaddress $ipdns netshdhcp server scope $dhcpscopeset state 1

Windows PowerShell 发行说明

Windows PowerShell V1.0(用于 .NET Framework 2.0 RTM)发行说明 版权所有(C) 2006 Microsoft Corporation。保留所有权利。 此信息按“原样”提供,没有任何明示或暗示的保证,包括但不仅限于针对适销性或特定目的的适用性的暗示保证。 本文档介绍了对Windows PowerShell V1.0发行版的最新更改。若要了解有关Windows PowerShell 的更多信息,请参阅“入门指南”、“Windows PowerShell 入门”和“快速参考”。从Windows PowerShell 的“开始”菜单链接中可以打开以上链接。 对Windows PowerShell RC2 所做的更改 在 Windows PowerShell RC2 和 Windows PowerShell V1.0 最终版本之间并没有任何重大更改。以下列表介绍了在 RC2 发行声明中未涉及但有必要予以介绍的一些功能。 对ADSI 的支持: 我们向 Windows PowerShell 中添加了直接的 ADSI 支持,以便用户更方便地管理 Active Directory。现在可以对 Active Directory 对象执行创建 ADSI 对象、获取属性及调用方法等操作。 示例:(创建 OU) PS >$objDomain = [ADSI]"LDAP://localhost:389/dc=NA,dc=fabrikam,dc=com" PS >$objOU = $objDomain.Create("organizationalUnit", "ou=HR") PS >$objOU.SetInfo() 新的产品ID: Windows PowerShell 的 RC2 版本具有一个产品 ID (PID),该产品 ID 存储在以下注册表项中并具有以下值: HKLM\Software\Microsoft\PowerShell\1 PID=89393-100-0001260-00301 在最终的 V1.0 版本中,PID 号更改为: HKLM\Software\Microsoft\PowerShell\1PID= 89383-100-0001260-04309 新的配置文件位置: Windows PowerShell 配置文件现在位于 WindowsPowerShell 目录中,而不再位于PSConfiguration 目录中。 用于所有用户的配置文件位于以下位置: %windir%\system32\WindowsPowerShell\v1.0\profile.ps1 %windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1

PowerShell 1.0 用户指南

Windows PowerShell 语言快速参考

变量 格式: $[scope:]名称 或 ${任何名称} or ${任何路径} 示例: $a = 1 ${!@#$%^&*()}=3 $global:a = 1 # 在所有位置可见 $local:a = 1 # 在此作用域中定义且对子作用域可见 $private:a=1 # 与本地作用域相同,但对子作用域不可见 $script:a=1 # 对此脚本中的所有作用域均可见 $env:path = “d:\windows” ${C:\TEMP\testfile.txt}=”这将写入文件” Get-Variable –scope 1 a #从父作用域获取值 Get-Variable –scope 2 a # 祖父 While (脚本) [:label] while (condition) { … } do { … } while (condition) 分析 Windows PowerShell 可以按两种模式进行分析 -- 命令模式和表达式模式。在表达式模式下,Windows PowerShell 以最高级别语言分析方法来进行分析:若为数字,则原样表示该数字;若为字符串,则需要加引号,依此类推。表达式的表示方法如下所示: 2+2 4 "Hello" + " world" Hello world $a = "hi" $a.length * 13 26 在命令模式下进行分析时,字符串不需要加引号,除变量和圆括号中的内容外的所有内容均可看作字符串。例如: copy users.txt accounts.txt 可将 users.txt 和 accounts.txt 视为字符串 write-host 2+2 可将 2+2 视为字符串,而不是要计算结果的表达式 copy $src $dest $src 和 $dest 是变量。从长远的角度来看,如果在命令外壳程序中工作时不需要使用引号,则大有裨益,因为这大大减少了所需的键入量。

使用PowerShell实现常用网络命令

PowerShell是Windows Server 2008中的专门为系统管理员设计的一个新特性,利用PowerShell可以在命令行下实现强大的功能。本文通过一些例子,介绍了PowerShell如何实现常见网络命令,最后通过一个组合例子,介绍了PowerShell的两大特点。 如果要求我们的Windows网络管理员在进行每天的管理操作时,都采用命令行的字符界面的方式,估计大多数的Windows的管理员都将反对这种做法,因为Windows的命令行工具的功能一向都很薄弱。随着的Windows PowerShell的发布,这种情况将得以改变。PowerShell可以让管理员们在命令行界面下,做很多以前做不了的事情。 在本文中,我们介绍如何使用PowerShell命令行来执行一些常见的网络功能。 1.什么是PowerShell? PowerShell是Windows Server 2008的一个新特性。要安装PowerShell,你需要在新增功能向导中选择安装Powershell特征,一分钟左右即可完成安装,之后您就可以体会到惊人的命令行脚本语言。与Windows中其他脚本语言不同的是,PowerShell是专门为系统管理员设计的。Powershell需要用到.NET框架和cmdlets命令集。作为PowerShell的用户,您可以使用系统自带的cmdlets,也可以自定义cmdlets,扩展实现更强大的功能。 一旦你安装了PowerShell,您可以在开始菜单->所有程序中看到Windows PowerShell 1.0这一项,点击其中的Windows PowerShell选项。这时,你就可以看到一个蓝色的CLI窗口,如下图所示: 图1:Windows Powershell命令行窗口 在每个提示行之前,都有一句: 时刻提醒你,目前正在PowerShell命令行中。 现在让我们来看看如何使用PowerShell来完成一些常见的网络命令。 2.列出服务器的IP地址 在Windows 2008中使用以下命令行,可以列出服务器IP地址: 你可以看到类似以下的输出结果:

经典PowerShell入门教程

PowerShell基础教程

PowerShell 开发代号为Monad,是支持Windows XP/Server 2003/Vista/Server 2008操作系统的脚本语言。包括Cmd.exe 、SH、KSH、CSH以及BASH Unix在内的大多数外壳程序的操作方式都是在新的进程中执行命令或实用工具程序,并以文本格式向用户显示结果。多年以来,许多文本处理实用工具程序,如sed、AWK 和PERL,都已逐渐发展为支持这种交互模式。 这些外壳程序也会提供内置于外壳程序中并在外壳程序处理器中执行的命令,例如KSH 中的typeset命令和以及 Cmd.exe 中的dir命令。在大多数外壳程序中,由于内置命令数量少,从而导致许多实用工具程序应运而生。 针对这一点,Windows PowerShell 有不同的做法。 ◆ Windows PowerShell 并不处理文本,而是处理以.NET平台为基础的对象; ◆Windows PowerShell 附带了数量庞大的内置命令集和一致的接口; ◆对于各个工具,全部的外壳程序命令都使用相同的命令剖析器,而非使用不同的剖析器,这项特点会使你更容易学会每种命令的使用方式。 其中最棒的就是你完全不需要舍弃已使用习惯的工具,你可以继续在Windows PowerShell 中使用诸如Net、SC 和 Reg.exe 等传统的 Windows 工具。 Windows PowerShell Cmdlet Cmdlet (发音如“command-let”) 是指在 Windows PowerShell 中用来操作对象的单一功能命令。你可以依据其名称格式来加以辨识Cmdlet -- 以破折号 (-) 分隔的动词和名词,例如Get-Help、Get-Process 和 Start-Service。 在传统的外壳程序中,命令是极为简单 (例如 attrib.exe) 到极为复杂 (例如 netsh.exe) 范围内的可执行程序。 在 Windows PowerShell 中,大多数Cmdlet都相当简单,而且设计成与其他Cmdlet结合使用。例如,"get" Cmdlet只提取数据,"set" Cmdlet只创建或修改数据,"format" Cmdlet只格式化数据,而 "out" Cmdlet只将输出导向到指定的目的地。每种Cmdlet都具备可在输入下列命令时加以显示的说明文件:get-help -detailed

vmware-powercli 用户命令管理手册

VMware PowerCLI User's Guide VMware PowerCLI 6.5.4

VMware PowerCLI User's Guide You can find the most up-to-date technical documentation on the VMware website at: https://https://www.doczj.com/doc/803199092.html,/ If you have comments about this documentation, submit your feedback to docfeedback@https://www.doczj.com/doc/803199092.html, VMware, Inc. 3401 Hillview Ave. Palo Alto, CA 94304 https://www.doczj.com/doc/803199092.html, Copyright ? 1998–2017 VMware, Inc. All rights reserved. Copyright and trademark information.

Contents VMware PowerCLI User's Guide8 1Introduction to VMware PowerCLI9 Microsoft PowerShell Basics9 PowerShell Command-Line Syntax10 PowerShell Pipelines10 PowerShell Wildcards10 PowerShell Common Parameters10 PowerCLI Concepts11 PowerCLI Modules12 Interoperability Between the PowerCLI and vCloud Director PowerCLI Modules13 Selecting Objects in PowerCLI14 Providing Login Credentials15 Running PowerCLI Cmdlets Asynchronously15 Managing Default Server Connections16 Customization Specification Objects in PowerCLI16 Using ESXCLI with PowerCLI16 PowerCLI Inventory Provider17 PowerCLI Datastore Provider17 PowerCLI About Articles17 2Installing VMware PowerCLI19 Supported Operating Systems20 Supported VMware Products20 Supported Windows PowerShell Versions20 Prerequisites for Installing and Running PowerCLI20 Install PowerCLI20 Allow Execution of Local Scripts21 Update a PowerCLI Module21 Uninstall PowerCLI22 3Configuring VMware PowerCLI23 Scoped Settings of PowerCLI23 Configuring the Scope of the PowerCLI Settings23 Priority of Settings Scopes in PowerCLI24 PowerCLI Configuration Files24 Using Custom Scripts to Extend the Operating System Support for PowerCLI Cmdlets25

PowerShell的Exit与Return

PowerShell的Exit关键字与Return关键字,以及自动变量$?和$LastExitCode ——与Unix Shell的比较 最近因为工作关系,第一次接触PowerShell。因为之前接触的都是Unix Shell,所以在刚开始用PowerShell的时候,把Unix的想法与概念带到PowerShell中,到最后才发现二者之间很多东西都是不一样的。 关于这次的工作内容,主要任务是把原来在Unix上写的Shell用PowerShell再实现一下。需求与接口都要求与原来的一样(实际上谁也不想改这些东西)。 一、Exit关键字 语法:Exit [状态值] 这个不用想都知道是退出命令,中止当前的执行。但是这里面却是一大堆的陷阱。 在Unix Shell中,只要Exit被执行,不管Shell之间用source命令有多少层读取关系,都会中止所以执行,并且设置退出状态值。状态值在执行结束之后用$?来确认。一切都很清楚。 但是在PowerShell中却变得比较复杂。先看一下PowerShell2.0中关于Exit的说明,少得可怜。另外,在《Window PowerShell应用手册》里关于Exit也没有特别的说明。

对PowerShell中Exit的命令,分成下面三种情况。 1、在脚本中直接执行。 2、在用source读取的脚本中执行。 3、在函数中执行。 分别用例子来说明。 1、在脚本中直接执行。 这种情况下和Unix Shell是一样的,都是中止脚本的执行。 不同的是在PowerShell中自动变量$?是一个布尔值,因为退出代码不是0而是50,所以执行结束是失败(False);自动变量$LastExitCode里保存的则是退出代码。 2、在用source读取的脚本中执行。 用testMain.ps1文件读取上一个例子中的脚本。可以看到即使test1.ps1的执行了Exit命令并中止了执行,但是testMain.ps1却还是继续执行后面的命令。 这一点和Unix Shell完全不一样。

windowsCMD命令大全

aCMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本、文件系统版本) 1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr.msc:证书管理实用程序 4. charmap:启动字符映射表 5. chkdsk.exe:Chkdsk磁盘检查(管理员身份运行命令提示符) 6. cleanmgr: 打开磁盘清理工具 7. cliconfg:SQL SERVER 客户端网络实用工具 8. cmstp:连接管理器配置文件安装程序 9. cmd.exe:CMD命令提示符 10. 自动关机命令 Shutdown -s -t 600:表示600秒后自动关机 shutdown -a :可取消定时关机 Shutdown -r -t 600:表示600秒后自动重启 rundll32 user32.dll,LockWorkStation:表示锁定计算机 11. colorcpl:颜色管理,配置显示器和打印机等中的色彩 12. CompMgmtLauncher:计算机管理 13. compmgmt.msc:计算机管理 14. credwiz:备份或还原储存的用户名和密码 15. comexp.msc:打开系统组件服务 16. control:控制面版 17. dcomcnfg:打开系统组件服务 18. Dccw:显示颜色校准 19. devmgmt.msc:设备管理器 20. desk.cpl:屏幕分辨率 21. dfrgui:优化驱动器Windows 7→dfrg.msc:磁盘碎片整理程序 22. dialer:电话拨号程序 23. diskmgmt.msc:磁盘管理 24. dvdplay:DVD播放器 25. dxdiag:检查DirectX信息 26. eudcedit:造字程序 27. eventvwr:事件查看器 28. explorer:打开资源管理器 29. Firewall.cpl:Windows防火墙 30. FXSCOVER:传真封面编辑器 31. fsmgmt.msc:共享文件夹管理器 32. gpedit.msc:组策略 33. hdwwiz.cpl:设备管理器 34. inetcpl.cpl:Internet属性 35. intl.cpl:区域 36. iexpress:木马捆绑工具,系统自带 37. joy.cpl:游戏控制器 38. logoff:注销命令

PowerShell基本语法及常用命令

PowerShell基本语法及常用命令 Powershell常用命令 1.Get-Command 得到Powshell所有命令 2.Get-Process 获取所有进程 3.Set-Alias 给指定命令重命名如:Set-Alias aaa Get-Command 4.Set-ExecutionPolicy remotesigned 设置powershell可直接执行脚本文件一般脚本文件以.ps1结尾执行脚本文件直接输入文件地址即可执行脚本文件中只写命令即可 5.Get-Help get-* 查询以get开头的命令Get-Help *service* Get-Help Get-Command 获取Get-Command命令的基本用法 6.Get-Member 获取对象属性如: $var | Get-Memeber 访问$var属性直接$var.T oString() PS中的变量定义 不需要定义或声明数据类型 在变量前加"$" 定义变量的规则 -变量可以是数字$123 -变量可以是字符串$abc -变量可以是特殊字符${@1b} 内置的变量 -$pshome -$home

-$profile 变量赋值: $var=123 $var="aaaaaa" 取变量值: $var 变量赋值方法:Set-Variable var 100 取值方法: Get-Variable var 清空值: Clear-Variable var 删除变量Remove-Variable var 取多个变量如var1 var2 var3地值: Get-Variable var* 另一种赋值方法$var1="bbb" $var2="$var $var1" 结果$var2="aaaaaa bbb" $var2='$var $var1' 结果$var2="$var $var1" $date=Get-Date 获取当前时间 $date.AddDays(3) 当前时间加3天 排序用法 Get-Process | Sort-Object ws 根据WS值由小到大排序 Get-Process | Sort-Object | fl Get-Process | Sort-Object | Format-List 以列表形式显示数据 导入导出文件 Get-Process > c:\aa.txt

Powershell实现Exchange 2010邮箱发送大小接收限制

Powershell实现Exchange 2010邮箱发送大小接收限制 1.查询所有MaxSendSize和MaxReceiveSize值均为unlimited的用户: Get-Mailbox -Resultsize Unlimited | Where-Object{$_.MaxSendSize -eq "unlimited" -and $_.MaxReceiveSize -eq "unlimited"} | Select-Object DisplayName,MaxSendSize,MaxReceiveSize 2.查询所有MaxSendSize或MaxReceiveSize值为unlimited的用户: Get-Mailbox -Resultsize Unlimited | Where-Object{$_.MaxSendSize -eq "unlimited" -or $_.MaxReceiveSize -eq "unlimited"} | Select-Object DisplayName,MaxSendSize,MaxReceiveSize 3.Get出所有MaxSendSize和MaxReceiveSize值均为unlimited的用户,并把这些用户批量设置MaxSendSize,MaxReceiveSize 值为10MB Get-Mailbox -Resultsize Unlimited | Where-Object{$_.MaxSendSize -eq "unlimited" -and $_.MaxReceiveSize -eq "unlimited"} | Set-Mailbox -MaxSendSize 10Mb -MaxReceiveSize 10Mb

Powershell静态数组的使用

Powershell数组的使用 一、数组的创建 a)使用@()来声明数组,或者直接”,”来分隔创建 ●通过此种方式创建的数组为固定大小的数组,无法使用add、remove等操作; b)空数组和单元素数组的定义 二、数组的使用 a)数组的访问, 访问数组时可通过对数组元素使用索引寻址,第一个元素的索引地址为0,依次递加,第n个元素的索引地址为n-1,最后一个元素的索引地址为count-1,也可以直接使用-1来替代; 当需要输出多个索引地址时,可以使用“,”分隔来进行选取; 数组的逆序输出$Array3[($Array3.Count-1)..0] b)数组元素的添加和删除 在PowerShell中,数组其实是一个大小固定的数据结构,如果需要向数组中添加更多的对象时,就必须使用加号“+”运算符。在执行“+”操作的过程中,PowerShell实际上进行了下述操作: 首先创建一个新的数组,该数组的大小能够存下运算结果的所有对象; 将第一个数组的成员拷贝到新数组中; 将第二个数组的成员拷贝到新数组中。;

元素的删除则相当于同时选择数组中的多个元素并将其重新定义为一个新数组; 数组添加空值,$Array1 += $null c)数组的复制 数组属于引用类型,使用默认的的赋值运算符在两个变量之间赋值只是复制了一个引用,两个变量共享同一份数据,这样当你对数组的元素进行修改时就会修改到原数据,导致所有复制的数组元素都会改变。 复制数组最好使用Clone()方法,这样就会产生两份数据。 d)数组的强类型和弱类型 Powershell数组一般具有多态性,如果你不指定元素的具体类型,解释器会自动选择合适的类型存储每个元素。 即在默认情况下,数组中元素的类型为弱类型,默认可以存储不同类型的值。 可以通过指定数组的类型来将数组转换为强类型,即只能存储某种指定类型的值,在输入其他类型的值后会

powershell命令

Get-Command Cmdlet 获取有关cmdlet 的基本信息,以及有关Powershell Get-Help Cmdlet 显示有关Windows PowerShell cmdlet 和概-念的信息。 Get-History Cmdlet 获取在当前会话中输入的命令的列表。 Invoke-History Cmdlet 从会话历史记录中运行命令。 Add-History Cmdlet 向会话历史记录追加条目。 ForEach-Object Cmdlet 针对每一组输入对象执行操作。 Where-Object Cmdlet 创建控制哪些对象沿着命令管道传递的筛选器。 Set-PSDebug Cmdlet 打开和关闭脚本调试功能,设置跟踪级别并切换strict 模式。 Add-PSSnapin Cmdlet 将一个或多个Windows PowerShell 管理单元添加到当 前控制台。 Remove-PSSnapin Cmdlet 从当前控制台中删除Windows PowerShell 管理单元。 Get-PSSnapin Cmdlet 获取计算机上的Windows PowerShell 管理单元。 Export-Console Cmdlet 将当前控制台的配置导出到文件中,以便对其进行重用或共享。 Start-Transcript Cmdlet 在文本文件中创建全部或部分Windows PowerShell 会话的记录。 Stop-Transcript Cmdlet 停止脚本。 Add-Content Cmdlet 向指定项中添加内容。 Clear-Content Cmdlet 删除项的内容(例如从文件中删除文本),但不删除该项。 Clear-ItemProperty Cmdlet 删除属性的值,但不删除该属性。 Join-Path Cmdlet 将路径和子路径合并到单个路径中。提供程序将提供路径分隔符。 Convert-Path Cmdlet 将路径从Windows PowerShell 路径转换为Window Copy-ItemProperty Cmdlet 将属性和值从指定的位置复制到另一个位置。 Get-EventLog Cmdlet 获取与本地事件日志或其中存储的条目有关的信息。

powershell所有命令公布解析

powershell所有命令公布! Split-Path Cmdlet 返回指定的路径部分。 Test-Path Cmdlet 确定路径的所有元素是否存在。 Get-Process Cmdlet 获取在本地计算机上运行的进程。 Stop-Process Cmdlet 停止一个或多个正在运行的进程。Remove-ItemProperty Cmdlet 从注册表项中删除属性及其值。Rename-ItemProperty Cmdlet 重命名项的属性。 Resolve-Path Cmdlet 解析路径中的通配符并显示路径内容。 Get-Service Cmdlet 获取本地计算机上的服务。 Stop-Service Cmdlet 停止一个或多个正在运行的服务。 Start-Service Cmdlet 启动一个或多个已停止的服务。 Suspend-Service Cmdlet 挂起(暂停)一个或多个正在运行的服务。Resume-Service Cmdlet 恢复一项或多项挂起(暂停的)服务。Restart-Service Cmdlet 停止并接着启动一个或更多服务。 Set-Service Cmdlet 更改服务的显示名称、说明或启动模式。

New-Service Cmdlet 在注册表和服务数据库中为Windows 服务创建新项。 Set-Content Cmdlet 在项中写入内容或用新内容替换其中的内容。 Set-ItemProperty Cmdlet 设置位于指定位置的属性的值。 Get-Acl Cmdlet 获取资源(例如文件或注册表项)的安全描述符。 Set-Acl Cmdlet 更改指定资源(例如文件或注册表项)的安全描述符。 Get-PfxCertificate Cmdlet 获取计算机上 .pfx 证书文件的相关信息。 Get-Credential Cmdlet 获取基于用户名和密码的凭据对象。 Get-ExecutionPolicy Cmdlet 获取外壳程序的当前执行策略。 Set-ExecutionPolicy Cmdlet 更改外壳程序执行策略的用户首选项。 Get-AuthenticodeSignature Cmdlet 获取文件中有关Authenticode 签名的信息。 Set-AuthenticodeSignature Cmdlet 使用Authenticode 签名对Windows PowerShell 脚本或其他文件进 行签名。 ConvertFrom-SecureString Cmdlet 将安全字符串转换为加密的标准字符串。 ConvertTo-SecureString Cmdlet 将加密的标准字符串转换为安全字符串。它还可以将纯文本转换为安 全字符串。此命令与ConvertFrom-Secu... Format-List Cmdlet 将输出的格式设置为属性列表,其中每个属性均各占一行显示。

Windows 7 PowerShell 详解

Windows Windows 7 7 7 PowerShell PowerShell PowerShell 详解 Windows PowerShell 是微软公司为Windows 环境所开发的壳程式(shell)及脚本语言技术,采用的是命令行界面。这项全新的技术提供了丰富的控制与自动化的系统管理能力。 UNIX 系统一直有着功能强大的壳程式(shell),Windows PowerShell 的诞生就是要提供功能相当于UNIX 系统BASH 的命令列壳程式,同时也内建脚本语言以及辅助脚本程式的工具。 系统维护、管理中大家常在命令提示符(cmd.exe)下进行操作,对Windows PowerShell 鲜有接触或者使用。其实在微软的计划中,Windows PowerShell 将成为CDM 的继任者,是下一代命令行工具。Windows PowerShell 目前最高版本为2.0,并且已经集成到Windows Server 2008及Windows 7中。Windows PowerShell 使得IT 管理员更容易地控制系统管理和加速自动化,作为系统管理员应该掌握和使用它。笔者因为工作需要开始学习Windows PowerShell,下面和大家分享几个非常实用的Windows PowerShell 应用实例。 1、Windows PowerShell 的安装 在Windows Server 2008中已经集成了Windows PowerShell,不过默认情况下并没有安装,大家可以在服务管理器中进行安装而不用从网上下载。对于Windows 7的用户系统已经默认安装了Windows PowerShell 2.0,直接使用就可以了。对于其他版本的Windows 用户可以微软的网站 https://www.doczj.com/doc/803199092.html,/downloads/details.aspx?FamilyID=60deac2b-975b-41e6-9fa0-c2fd6aa6bc89&DisplayLang=en 下载。 程式特性 一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。 脚本语言简单易学,而且能支援现有的脚本程式和命令列工具。 内含129种称为cmdlet 的标准工具,可用来处理常见的系统管理工作。 具备完整的扩充功能,独立软件商或开发者都能很容易的自行扩充。 cmdlet 是Windows PowerShell 的指令,发音念法为command-let。这相当于D O S 或其他壳程式的内建指令,指令名称的格式都是以连字号(-)隔开的一对动词和名词,并且通常都是单数名词;例如线上查询说明的cmdlet 指令为get-help,名称的动词部分大致有get、set、add、remove 等等(字母都不分大小写)。 Windows PowerShell 是以.N E T Framewor k 技术为基础,并且与现有的WSH 保持回溯相容,因此它的脚本程式不仅能存取.N E T CL R ,也能使用现有的C O M 技术。同时也包含了数种系统管理工具、简易且一致的语法,提升管理者处理,常见如登录数据库、WMI。

SQL Server 2008基础教程

前言 前言 本书针对那些想成为开发人员、数据库管理员或者兼为两者,但对SQL Server 2008还不熟悉的读者。无论你是否拥有数据库知识,是否了解桌面数据库(如Microsoft Access),甚至是否具有服务器(如Oracle)的背景,本书都能为你提供SQL Server 2008入门和运行的知识。 从现在开始,本书将使你的基础知识得以扩展,让你很快从初学者成长为合格的专业开发人员。本书面向广大开发人员,从喜欢使用图形界面的程序员,到希望成为SQL Server 2008编程语言Transact SQL(T-SQL)高手的程序员。本书将尽可能贴近实际地演示、说明和展开叙述每一种使用SQL Server 2008的方法,以便你能够判断哪种方式最适合自己。 本书包含大量的示例,以使你了解SQL Server的各个领域是如何工作的,以及怎样才能把技术应用到自己的工作中。你将学习完成某项任务的最佳方法,你甚至能学会在面临两个或更多的选择时,如何做出正确的决策。只要学习完本书,你就能游刃有余地设计和创建坚实可靠的数据库解决方案。 本书的结构 本书将帮助你决定购买SQL Server 2008的哪种版本,为你展示如何安装和配置SQL Server 2008,并阐释如何使用图形用户界面工具SSMS(SQL Server Management Studio)。你将使用该工具完成一个功能完备的数据库示例,该数据库根据本书中介绍的设计方案,利用图形的和基于代码的练习创建而成。然后,你将学习数据库安全方面的知识,并了解如何实施安全可靠的数据库设置。只要备份了数据库,你就可以学习如何操作数据。先从简单的代码编写技术入手,逐渐过渡到更加复杂的技术。最后的任务是在数据库上创建和生成报表。本书会贯穿始终地说明每一个细节,告知你正在发生什么,并确保随着对本书阅读的深入,你将在从之前章节中获取的知识上,不断提高。你将以一种有条理、有组织的方式发展构筑自己的专业知识。 必要准备 要学习本书,你必须有SQL Server 2008开发版本的完整版或评估版。此外,如果想要为特定的Windows登录更改安全设置,有Windows Vista旗舰版或商业版将十分理想,但并非必须如此。 代码下载

PowerShell基础教程

PowerShell基础教程一:Windows PowerShell简介 XP/Server 2003/Vista/Server 2008操作系统的脚本语言。包括 Cmd.exe 、SH、KSH、CSH以及BASH Unix在内的大多数外壳程序的操作方式都是在新的进程中执行命令或实用工具程序,并以文本格式向用户显示结果。多年以来,许多文本处理实用工具程序,如sed、AWK 和 PERL,都已逐渐发展为支持这种交互模式。 这些外壳程序也会提供内置于外壳程序中并在外壳程序处理器中执行的 命令,例如KSH 中的typeset命令和以及 Cmd.exe 中的 dir 命令。在大多数外壳程序中,由于内置命令数量少,从而导致许多实用工具程序应运而生。 针对这一点,Windows PowerShell 有不同的做法。 ◆ Windows PowerShell 并不处理文本,而是处理以.NET平台为基础的对象; ◆Windows PowerShell 附带了数量庞大的内置命令集和一致的接口; ◆对于各个工具,全部的外壳程序命令都使用相同的命令剖析器,而非使用不同的剖析器,这项特点会使你更容易学会每种命令的使用方式。 其中最棒的就是你完全不需要舍弃已使用习惯的工具,你可以继续在Windows PowerShell 中使用诸如Net、SC 和 Reg.exe 等传统的 Windows 工具。 Windows PowerShell Cmdlet Cmdlet (发音如“command-let”) 是指在 Windows PowerShell 中用来操作对象的单一功能命令。你可以依据其名称格式来加以辨识 Cmdlet -- 以破折号 (-) 分隔的动词和名词,例如Get-Help、Get-Process 和 Start-Service。 在传统的外壳程序中,命令是极为简单 (例如 attrib.exe) 到极为复杂 (例如 netsh.exe) 范围内的可执行程序。 在 Windows PowerShell 中,大多数Cmdlet 都相当简单,而且设计成与其他Cmdlet 结合使用。例如,"get" Cmdlet 只提取数据,"set" Cmdlet 只创建或修改数据,"format" Cmdlet 只格式化数据,而 "out" Cmdlet 只将输出导向到指定的目的地。每种 Cmdlet 都具备可在输入下列命令时加以显示的说明文件:

最新整理使用PowerShell让局域网电脑集体重启方法步骤

使用P o w e r S h e l l让局域网电脑集体重启方法步骤局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。除了文件共享功能,还有一个不太常用但很方便的就是群重启,让局域网内所有主机重启,对于大型局域网,多台主机的领域很有用,下面我们就一起来看看群重启命令吧! W i n d o w s10使用P o w e r S h e l l让局域网电脑集体重启的方法: 1、单机重启 这个功能比较简单,命令也容易,只不过重启还得用命令就显得有点麻烦。命令格式如下: 01R e s t a r t-C o m p u t e r 提示:这个命令执行后,系统会立刻重启,所以如果电脑没准备好,小心手滑。 2、集体重启 如果是让两台以上电脑重启,采用这个方式就比较方便,总比挨个去点重启要方便得多,适用于局域网管理员,命令格式如下: 01R e s t a r t-C o m p u t e r-C o m p u t e r N a m e S e r v e r01,

S e r v e r02,l o c a l h o s t 提示:引号中的内容为具体电脑在局域网中的名称,而l o c a l h o s t为本机。 3、远程重启 对于远程计算机,可以设置重启延迟时间,命令示例如下: 01R e s t a r t-C o m p u t e r-C o m p u t e r N a m e S e r v e r01 -W a i t-F o r P o w e r S h e l l-T i m e o u t600-D e l a y5提示:其中的600是秒数,600秒就是10分钟。该命令就是让远程计算机最多等待P o w e r S h e l l启动完毕十分钟;延迟为5秒,意为每5秒查询一次P o w e r S h e l l 启动情况。如果在十分钟内P o w e r S h e l l启动,则在发现成功启动后立即重启;如果十分钟到时后仍未启动 P o w e r S h e l l,则远程电脑将重启。 补充:局域网经常断线解决方法 进一步排查判断水晶头久了是否氧化,重做末端一端水晶头,故障没有排除,测试仪测试,8线全通的,可是故障依旧出现,上一会儿就掉线。 继续排查上端一端水晶头和端口,切换端口无效,重新做另一端水晶头,现在问题来了,网络干脆不通,

如何使用PowerShell脚本程序

如何使用PowerShell脚本程序 通过Windows 10漂亮的界面,我们可以使用PowerShell大胆地进入到操作系统隐蔽的空间,使用隐秘的Windows功能。 大部分Windows用户通过鼠标和对话框进行操作,但是如果我们想控制操作系统的所有选项、深入挖掘系统的功能,那么我们需要使用PowerShell,通过PowerShell我们可以更 轻松地管理各项功能选项,更有效地完成工作任务,还可以通过脚本实现自动化的工作流程。 不过,我们需要记住,PowerShell中的一些命令对于系 统的影响极大,因而,必须小心谨慎地使用这个强大的工具。下面,我们将通过一些简单的例子为大家介绍PowerShell中的一些基本功能。 启动PowerShell 在Windows 10中要打开PowerShell应用程序,只需在 任务栏的搜索字段中键入“PowerShell”,并点击搜索结果中的“Windows PowerShell”,即可打开白色字体和深蓝色背景的PowerShell控制台窗口。 创建快捷方式

为了以后能够更快地启动PowerShell,我们可以将应用程序的快捷方式固定到“开始”屏幕或者任务栏上。我们可以在步骤1搜索“PowerShell”,然后右键单击“Windows PowerShell”并选择自己需要的选项。如果我们选择固定到“开始”屏幕,那么接下来我们可以使用鼠标拖动快捷方式,将其安排到“开始”屏幕中适当的分组中或者创建一个新的分组。 配置PowerShell PowerShell控制台窗口中默认采用白色字体和深蓝色背景,如果这不符合我们的使用习惯或者默认的字体太小,那么我们可以通过其配置功能修改默认的设置。首先,右键单击控制台窗口边缘,在弹出的菜单中选择“属性”。在“选项”选项卡上我们可以修改光标的大小,在“字体”、“布局”和“颜色”选项卡上我们可以尝试修改各种不同的颜色搭配以及根据自己的需要修改字体的大小。如果设置的效果令我们满意,那么可以单击下方的“确定”按钮存储当前设置。 使用帮助系统 大部分用户对于PowerShell命令是完全陌生的。我们需要了解和熟悉PowerShell命令,才能够充分发挥其作用。获取PowerShell命令的帮助信息,最简单的方法是键入命令“get-help”。除了默认的帮助命令之外,我们还可以附加参数来获取特定命令的帮助信息,也就是在“get-help”之后加

相关主题
文本预览
相关文档 最新文档