研究一个问题, 发现一篇White Paper上写的PowerShell上有如下的语句:
$farmName = Get-spfarm |%{ $_.Name }
笔者PowerShell比较弱, 看不懂百分号的意思. 于是询问了专家Tracy Yu. 得到如下的答复:
这里的百分号是个PowerShell中的Alias, 意思是ForEach-Object.
如图:
不推荐写PowerShell的时候使用这些Alias, 不方便其他人看懂.
另外, Alias是可以通过命令New-Alias新定义, 和使用Set-Alias另外修改的.
默认所有Alias的完整列表如下:
CommandType Name Definition
----------- ---- ----------
Alias % ForEach-Object
Alias ? Where-Object
Alias ac Add-Content
Alias asnp Add-PSSnapIn
Alias cat Get-Content
Alias cd Set-Location
Alias chdir Set-Location
Alias clc Clear-Content
Alias clear Clear-Host
Alias clhy Clear-History
Alias cli Clear-Item
Alias clp Clear-ItemProperty
Alias cls Clear-Host
Alias clv Clear-Variable
Alias compare Compare-Object
Alias copy Copy-Item
Alias cp Copy-Item
Alias cpi Copy-Item
Alias cpp Copy-ItemProperty
Alias cvpa Convert-Path
Alias dbp Disable-PSBreakpoint
Alias del Remove-Item
Alias diff Compare-Object
Alias dir Get-ChildItem
Alias ebp Enable-PSBreakpoint
Alias echo Write-Output
Alias epal Export-Alias
Alias epcsv Export-Csv
Alias epsn Export-PSSession
Alias erase Remove-Item
Alias etsn Enter-PSSession
Alias exsn Exit-PSSession
Alias fc Format-Custom
Alias fl Format-List
Alias foreach ForEach-Object
Alias ft Format-Table
Alias fw Format-Wide
Alias gal Get-Alias
Alias gbp Get-PSBreakpoint
Alias gc Get-Content
Alias gci Get-ChildItem
Alias gcm Get-Command
Alias gcs Get-PSCallStack
Alias gdr Get-PSDrive
Alias ghy Get-History
Alias gi Get-Item
Alias gjb Get-Job
Alias gl Get-Location
Alias gm Get-Member
Alias gmo Get-Module
Alias gp Get-ItemProperty
Alias gps Get-Process
Alias group Group-Object
Alias gsn Get-PSSession
Alias gsnp Get-PSSnapIn
Alias gsv Get-Service
Alias gu Get-Unique
Alias gv Get-Variable
Alias gwmi Get-WmiObject
Alias h Get-History
Alias history Get-History
Alias icm Invoke-Command
Alias iex Invoke-Expression
Alias ihy Invoke-History
Alias ii Invoke-Item
Alias ipal Import-Alias
Alias ipcsv Import-Csv
Alias ipmo Import-Module
Alias ipsn Import-PSSession
Alias ise powershell_ise.exe
Alias iwmi Invoke-WMIMethod
Alias kill Stop-Process
Alias lp Out-Printer
Alias ls Get-ChildItem
Alias man help
Alias md mkdir
Alias measure Measure-Object
Alias mi Move-Item
Alias mount New-PSDrive
Alias move Move-Item
Alias mp Move-ItemProperty
Alias mv Move-Item
Alias nal New-Alias
Alias ndr New-PSDrive
Alias ni New-Item
Alias nmo New-Module
Alias nsn New-PSSession
Alias nv New-Variable
Alias ogv Out-GridView
Alias oh Out-Host
Alias popd Pop-Location
Alias ps Get-Process
Alias pushd Push-Location
Alias pwd Get-Location
Alias r Invoke-History
Alias rbp Remove-PSBreakpoint
Alias rcjb Receive-Job
Alias rd Remove-Item
Alias rdr Remove-PSDrive
Alias ren Rename-Item
Alias ri Remove-Item
Alias rjb Remove-Job
Alias rm Remove-Item
Alias rmdir Remove-Item
Alias rmo Remove-Module
Alias rni Rename-Item
Alias rnp Rename-ItemProperty
Alias rp Remove-ItemProperty
Alias rsn Remove-PSSession
Alias rsnp Remove-PSSnapin
Alias rv Remove-Variable
Alias rvpa Resolve-Path
Alias rwmi Remove-WMIObject
Alias sajb Start-Job
Alias sal Set-Alias
Alias saps Start-Process
Alias sasv Start-Service
Alias sbp Set-PSBreakpoint
Alias sc Set-Content
Alias select Select-Object
Alias set Set-Variable
Alias si Set-Item
Alias sl Set-Location
Alias sleep Start-Sleep
Alias sort Sort-Object
Alias sp Set-ItemProperty
Alias spjb Stop-Job
Alias spps Stop-Process
Alias spsv Stop-Service
Alias start Start-Process
Alias sv Set-Variable
Alias swmi Set-WMIInstance
Alias tee Tee-Object
Alias type Get-Content
Alias where Where-Object
Alias wjb Wait-Job
Alias write Write-Output
另外, PowerShell的清屏命令为Clear-Host, Alias为cls, 跟Dos的命令一样哦.
http://www.cnblogs.com/awpatp/archive/2012/01/04/2312280.html
再看下面
有这样一个csv文件
执行这个命令
$password = convertto-securestring -String "abc123,.!" -AsPlainText –Force Import-Csv "C:\Users\Administrator\Desktop\ Cteate Users1.csv " | %{New-ADUser -Name $_.name -SamAccountName $_.SamAccountName -userprincipalname $_.userprincipalname -givenname $_.givenname -surname $_.surname -displayname $_.name -accountpassword $password -enabled $true -path $_.path"} 就是批量创建AD用户
这里解释下$_.XXX怎么用的
-Name $_.name -SamAccountName $_.SamAccountName,以这个来讲,-name后面我们都知道加上用户名的,那我们加上$_.name的意思呢,就是去匹配我们csv文件里的第一行中的name属性,SamAccountName也是一样的,最后我们加上$_.path,新建的用户直接就出现在了它该出现的位置上