欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

联合

公告

注意:本人的所有文档均可以引用,但引用必须说明出处。
根据计算机帐号,将其自动的移动到相应的OU脚本

很多的企业都有这样的要求:希望整理自己的computers容器中的计算机,根据计算机名将其添加到对应的OU中去,但如果由人力来实现的话,工作量非常大,所以,在这次给某个企业实施项目的时候,我随手写了一个脚本,该脚本会自动将计算机加入到对应的OU中去。用户可以自己改写一下脚本,以适应自己的情况,我的脚本里对计算机名截取了2个字符。

dim strADsPath
dim sResultText
Const ADS_SCOPE_SUBTREE = 2
Set con = CreateObject("ADODB.Connection")
Set com = CreateObject("ADODB.Command")
'Open the connection with the ADSI-OLEDB provider name
con.Provider = "ADsDSOObject"


con.Open

Com.ActiveConnection = con

Com.CommandText = "<LDAP://cn=computers,DC=contoso,DC=com>;" & "(objectClass=computer);name;subTree"
Set rs = Com.Execute()
i=0

Do Until rs.EOF
   sResultText=rs.Fields("name").value
   Select Case left(sResultText,2)
   Case "c1"
       strADsPath="LDAP://cn=" & sResultText & ",cn=computers,dc=contoso,dc=com"
       set objou=getobject("LDAP://ou=ouc1,dc=contoso,dc=com")
       objou.movehere strADsPath,vbNullString
   Case "c2"
       strADsPath="LDAP://cn=" & sResultText & ",cn=computers,dc=contoso,dc=com"
       set objou=getobject("LDAP://ou=ouc2,dc=contoso,dc=com")
       objou.movehere strADsPath,vbNullString
   Case "c3"
      strADsPath="LDAP://cn=" & sResultText & ",cn=computers,dc=contoso,dc=com"
      set objou=getobject("LDAP://ou=ouc3,dc=contoso,dc=com")
       objou.movehere strADsPath,vbNullString
   Case "c4"
      strADsPath="LDAP://cn=" & sResultText & ",cn=computers,dc=contoso,dc=com"
      set objou=getobject("LDAP://ou=测试,dc=contoso,dc=com")
       objou.movehere strADsPath,vbNullString
End Select

  rs.MoveNext
Loop

con.close

 

然后,在控制面板的“定期任务”中,将此脚本指定多少时间执行一次,然后输入执行的用户和密码,即可。

收工,撤!

发表于 2008年5月12日 16:24 作者 qiqinghua | 1 评论

归档在:

一种简单的修改所有域内本地管理员密码,及加某个帐号至本地管理员组的方法

在一个实施项目的过程中,客户提出两个要求:

1.自动修改所有的本地管理员密码

2.将某个域用户自动的加入到本地的管理员组中

 

这两个要求实现起来不难,我用了一个最简单的方法,创建一个bat文件,然后将其放置在组策略的计算机启动策略上,即可完成

但是要注意的是,我是在域级别上设置组策略的,所以,如果不加处理,则域管理员的密码也会发生更改,所以,在组策略上的安全上要设置过滤掉域控制器。

下面是bat文件:

net user administrator Pa$$w0rd1
net localgroup "administrators" contoso\testadmin /add

 

发表于 2008年3月3日 12:26 作者 qiqinghua | 4 评论

安装配置RMS服务器步骤

RMS服务器管理配置

 

一.安装RMS服务的硬件和软件要求:

建议硬件要求

 Dual processors

"           512 MB RAM

"           40 GB free hard disk space

"           NIC

软件要求

Windows Server 2003 family

"            Message Queuing

"           IIS 6.0 or greater

"           ASP.NET

"           NTFS file system

 

二.安装RMS服务器

1)添加RMS服务帐号,注意,该帐号是普通域成员帐号,设置密码永不过期,同时必须有电子邮件地址。

 

2)在DNS中创建CLUSTERCName纪录

指向rms服务器的IP地址:

 

3)在RMS服务器上添加IISASP.netMessage Queueing服务

 

4)安装RMS服务器

 

三.初步设置RMS服务器

1)安装完成后,出现Windows RMS管理控制台

2)点击进入后,出现global administration界面

在底部,选择provision web on this web site.

 

然后在出现的界面中,输入数据库的参数,在这里采用本地的数据库

 

注意,在这里网络的Enroll选择离线,如果你的RMS服务器连接在Internet上,可以直接申请。

在提交以后,RMS开始创建相应的目录和应用程序地址池。

然后,进入enroll界面:

点击enroll button,将证书申请导出成一个xml文件:

 

打开IE至如下地址:

https://go.microsoft.com/fwlink/?LinkId=25828,然后将前面导出的文件导入。获得一个新的服务器证书文档,再将其导入到RMS服务器中。

 

导入结束后,选择:RMS SERVICE Connection Point

 

然后选择register URL,注意 这个要求你是企业级管理员。

 

再次观察证书已经成功导入,并且警告信息消失了。

 

 

四.客户端设置

客户端必须安装office 2003

修改IE的本地站点设置

添加本地站点:

 

安装RMS客户端

 

五.修改组策略

1)导入组策略模板

2)修改组策略

 

 

 

 

到这里,RMS安装完成。

另,要注意的是,RMS不能安装在中文版windows上面。即使是英文版,加中文语言包都不行。

还要注意的是,如果前次安装失败,一定要上出AD站点和服务中的right managerment server的服务节点,才可以重新

发表于 2008年3月3日 11:46 作者 qiqinghua | 0 评论

跟我从头学Powershell(4)-操作符

跟我从头学powershell(四)

操作符

一.数学操作符

数学操作符允许你进行数学运算:

Operator

Description

Example

+

Add two values together.

PS C:\> 5+4

9

-

Subtract one value from another.

PS C:\> 134-90

44

-

Change a value to a negative number.

PS C:\>-6

-6

*

Multiply two values together.

PS C:\> 3*4.5

13.5

/

Divide one value by another.

PS C:\> 6/4

1.5

%

取模.

PS C:\Temp> 6%4

2

优先级:

就和小学学得一样,各操作符之间有优先级。括号压倒优先级

 

变量:

变量在使用数学操作符的时候,和数字没有什么两样,但下面一个例子,则报错,因为我们采用的一个变量是字符串,一个是数字:

PS C:\> $var1="Windows"

PS C:\> $var2=100

PS C:\> $var1+var2

You must provide a value expression on the right-hand side of the '+'

operator.

At line:1 char:7

+ $var1+v <<<< ar2

PS C:\>

 

一元操作符

一元操作符通常用于增加或减少一个固定值

PS C:\> $var=10

PS C:\> $var++

PS C:\> $var

11

PS C:\> $var--

PS C:\> $var

10

PS C:\>

二.逻辑操作符

Powershell的逻辑操作符用来测试和检查一个表达式,通常的结果是TRUE FALSE

Operator

Description

Example

-and

All expressions must evaluate as TRUE.

(1 -eq 1) -and (2 - eq 2) returns TRUE

-or

At least one expression must evaluate as TRUE.

(1 -eq 1) -or (2 -eq 4) returns TRUE

-not

Evaluates the inverse of one of the expressions.

(1 -eq 1) -and -not (2 -gt 2) returns TRUE

!

The same as -not.

(1 -eq 1) -and ! (2 -gt 2) returns TRUE

 

 

逻辑操作符通常用于你需要比较多个条件的情况。下面是举例,第一个是and情况,第二个是or逻辑操作符:

PS C:\> $varA=5

PS C:\> $varB=5

PS C:\> if (($varA -eq $varB) -and ($varB -gt 20))

>>{

>>Write-Host "Both conditions are true."

>>}

>>else

>>{

>>Write-Host "One or both conditions are false."

>>}

>> 

One or both conditions are false.

PS C:\>

or逻辑操作符:

PS C:\> if (($varA -eq $varB) -or ($varB -gt 20))

>> {

>> Write-Host "At least one condition is true."

>> }

>> else

>> {

>> Write-Host "Both conditions are false."

>> }

At least one condition is true.

PS C:\>

 

三.分配操作符:

Powershell采用分配操作符设定变量值,我们在前面已经采用了等号,但还有一些其他的操作符:

Operator

Description

=

Sets a value of a variable to the specified value.

+=

Increases the value of a variable by the specified value or appends to the existing value.

-=

Decreases the value of a variable by the specified value.

*=

Multiplies the value of a variable by the specified value or appends to the existing value.

/=

Divides the value of a variable by the specified value.

%=

Divides the value of a variable by the specified value and assigns the remainder (modulus) to the variable.

下面是这些操作符的一些示例:

PS C:\> $var=7

PS C:\> $var

7

PS C:\> $var+=3

PS C:\> $var

10

PS C:\

 

PS C:\> $var-=3

PS C:\> $var

7

PS C:\>

 

PS C:\> $var*=3

PS C:\> $var

21

PS C:\>

 

PS C:\> $var/=7

PS C:\> $var

3

PS C:\>

 

PS C:\> $var=9

PS C:\> $var%=4

PS C:\> $var

1

PS C:\>

 

你必须留意赋值操作,因为powershell尽量采用“最好的”方式来理解你的意图,比如下面一个举例:

PS C:\> $var="3"

PS C:\> $var+=7

PS C:\> $var

37

PS C:\>

 

因为“3”是字符串,所以,powershell就用简单的连接来代替掉了相加,你如果对你的变量的类型不能确定的话,你可以使用gettype()方法:

PS C:\> $var.gettype()

 

IsPublic IsSerial Name                                   BaseType

-------- -------- ----                                   --------

True     True     String                               System.Object

 

PS C:\>

 

在采用“=”赋值的时候,powershell会有一些独特的特性,比如,你给变量赋予16进制的值时,会自动转变成10进制显示:

你甚至可以用一些标准的术语,比如KBMBGB等等:

PS C:\> $var=10KB

PS C:\> $var

10240

PS C:\> $var=2MB

PS C:\> $var

2097152

PS C:\> $var=.75GB

PS C:\> $var

805306368

PS C:\>

 

最后,我们可以在一行当中为多个变量赋值:

PS C:\> $varA,$varB,$varC="Apple",3.1416,"Windows"

PS C:\> get-variable var?

 

Name                           Value

----                           -----

varC                           Windows

varB                           3.1416

varA                           Apple

 

 

PS C:\>

 

当然如果你提供的值超过变量,那么将把多出来的值赋予给最后一个变量:

PS C:\> $varA,$varB,$varC="Apple",3.1416,"Windows","Linux"

PS C:\> get-variable var?

 

Name                           Value

----                           -----

varC                           {Windows, Linux}

varB                           3.1416

varA                           Apple

 

PS C:\>

 

四.位操作符

位操作符用于二进制计算:

Operator

Definition

-band

binary and

-bor

binary or

-bnot

binary not

 

下面是一个实例:

PS C:\> 255 -band 255

255

PS C:\> 255 -band 150

150

PS C:\> 32 -bor 16

48

PS C:\>

 

五.特殊操作符

Replace 操作符:

Replace操作符可以替换字符,这个操作本质上是找到目标字符,然后进行替换:

其语法是:

"String-to-search" -replace "Search-for","Replace-with"

下面是一个示例:

PS C:\> "PowerShell" -replace "e","3"

Pow3rSh3ll

PS C:\> "PowerShell" -replace "shell","tool"

Powertool

PS C:\> "PowerShell" -replace "k","m"

PowerShell

PS C:\>

你也可以采用-replace操作符来对变量操作,但是注意的是,它不改变变量的初始值,唯一改变的方法是重新为变量赋值。

PS C:\> $var=$var -replace "p","sh"

PS C:\> $var

showerShell

PS C:\>

我们也在数组中使用-replace

PS C:\> $var=@("aaa","bbb","abab","ccc")

PS C:\> $var

aaa

bbb

abab

ccc

PS C:\> $var=$var -replace "a","z"

PS C:\> $var

zzz

bbb

zbzb

ccc

PS C:\>

 

我们甚至可以在文本文件上采用-replace操作符:

PS C:\> $var=get-content "boot.ini"

PS C:\> $var -replace "windows","WIN"

[boot loader]

timeout=15

default=multi(0)disk(0)rdisk(0)partition(2)\WIN

[operating systems]

multi(0)disk(0)rdisk(0)partition(2)\WIN="Microsoft WIN XP

Professional" /fastdetect /NoExecute=OptIn

multi(0)disk(0)rdisk(0)partition(1)\WIN="WIN Server 2003, Enterprise"

/noexecute=optout /fastdetect

C:\CMDCONS\BOOTSECT.DAT="Microsoft WIN Recovery Console" /cmdcons

PS C:\>

注意,-replace是不区分大小写的。如果你要区分大小写,应该使用-creplace操作符。

下面是这些操作符的一个表格:

Operator

Definition

Example

-replace

Replace

"PowerShell" - replace "s","$"

-ireplace

Case-insensitive replace. Essentially the same as
-replace.

"PowerShell" - replace "s","$"

-creplace

Case-sensitive replace.

"PowerShell" - creplace "p","t"

 

 

PS C:\> "PowerShell" -creplace "p","t"

PowerShell

PS C:\> "PowerShell" -creplace "P","t"

towerShell

PS C:\>

 

Type操作符

Powershell包括三种类型的type操作符

Operator

Definition

Example

-is

Check if object IS a specific type.

$var -is [string]

-isnot

Check if object IS NOT a specific type.

$var -isnot [string]

-as

Convert object to specified type.

3.1416 -as string

操作的结果对于-is-isnottruefalse

PS C:\> $now=get-date

PS C:\> $now -is [datetime]

True

PS C:\> 1024 -is [int]

True

PS C:\> "Microsoft" -isnot [string]

False

PS C:\>

 

-as操作符将转换对象成为指定的类型:

PS C:\> $var=get-date

PS C:\> $var.gettype()

 

IsPublic IsSerial Name                                     BaseType

-------- -------- ----                                     --------