Powershell常用命令(一)

Invoke-Command(icm)

功能:在本地或者远程运行命令,命令执行的结果(含错误)返回到运行命令的机器。
说明:-Computer参数实现在远程运行一条命令。若要运行一系列命令,使用New-PSSesion命令在远程机器创建一个PSSession(持久连接),然后在PSSession中使用Invoke-Command命令中的Session参数去在远程机器运行一系列命令。
实例:
Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName Server01 #在远程机器Server01上执行脚本test.ps1,脚本在本地。注意:执行当前路径下的脚本:./test.ps1。

Invoke-Command -ComputerName Server01 -Credential Domain01\User01 -ScriptBlock {
    Get-Culture } #在远程机器Server01上执行一条命令Get-Culture
#常用模式:前五行是为了域用户的认证。
$ComputerName = "43.76.9.75"
$Username = "libai"
$Password = 'xxxxxx'
$pass = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass
Invoke-Command -ComputerName $ComputerName -ScriptBlock {
    remove-item -Path "c:\remotedirectory\*" -Recurse -Force } -credential $Cred

$version = Invoke-Command -ComputerName (Get-Content myfile.txt) -ScriptBlock {
   Get-Culture}  #在多台机器上执行命令,机器名存放在当前目录的myfile中,结果返回存放在$version变量中。

#将本地变量传到远程的方式
#1.$Using:VariableName
$Log = "PowerShellCore/Operational"
Invoke-Command -ComputerName Server01 -ScriptBlock {
   Get-WinEvent -LogName $Using:Log -MaxEvents 10} #在本地定义一个变量,使用$Using:VariableName形式,在远程使用改变量。
#2.-ArgumentList
$Log = "PowerShellCore/Operational"
$aa="xxxx"
Invoke-Command -ComputerName Server01 -ScriptBlock {
   ....} -ArgumentList $Log,$aaa
#3.定义在-ScriptBlock中的变量会在远程其作用(不是本地变量)
Invoke-Command -ComputerName (Get-Content myfile.txt) -FilePath E:\test.ps1 -ArgumentList Process, Service #远程机器名字存放在myfile.txt中,test.ps1这个文件中的命令会被复制到-ScriptBlock对应的值中。即在多台远程机器执行大量命令。

Get-Content(cat,gc,type)

功能:获取指定指定位置的对象的内容。
注意:-Delimiter是默认值为\n.对于多行文件,delimiter按照-Delimiter的值来分割文件。所以多行文件返回的是一组对象。
1..100 | ForEach-Object {
    Add-Content -Path .\LineNumbers.txt -Value "This is line $_." } #1..100表示1到100这100个数,这是个数组。通过管道发送给ForEach-Object命令,改命令通过脚本块中的Add-Content命令,向当前路径下的LineNumers.txt文件写入一个变量$_所代表的值。ForEach-Object的意思是对数组中的每个元素执行后面的操作。
Get-Content -Path .\LineNumbers.txt #获取当前路径下的LineNumbers.txt文件的内容。


Get-Content -Path .\LineNumbers.txt -TotalCount 5 #获取文件的前5行

(Get-Content -Path .\LineNumbers.txt -TotalCount 25)[-1] #获取文件的第25行。括号返回一个含25行的对象,[-1]这个索引代表最后一行。


Get-Item -Path .\LineNumbers.txt | Get-Content -Tail 1 #返回最后一行。比用[-1]这种方式快

Get-Content -Path E:\* -Filter *.txt  #获取E盘下的所有.txt文件。当使用-Filter参数时,路径中需要有*。-Filter筛选符合条件的。

#默认的,对于多行的文件,Get-Content返回的结果是一组串(按行分割)。-Raw换行符,使得返回的结果是一个串,串尾会有一个换行符。
#-Raw参数是正则表达式多行匹配的关键。
$raw = Get-Content -Path .\LineNumbers.txt -Raw
$lines = Get-Content -Path .\LineNumbers.txt
Write-Host "Raw contains $($raw.Count
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值