设为首页 收藏本站
查看: 1376|回复: 0

PowerShell 的一些东东

[复制链接]

尚未签到

发表于 2018-9-3 08:25:10 | 显示全部楼层 |阅读模式
  首先关于运行:
  在shell里面运行一个脚本的话,你需要set-executinopolicy设为RemoteSigned。运行一个脚本在shell里面打脚本名即可。
  如果是在run里面,就要打powershell-file"路径和脚本文件名",如果你要看到输出信息,那么可以加上-noexit选项。
  如果是在schedule里面计划运行,那么和run差不多,在startaprogram之后,打入你在run里面会用的命令行,即可。
  基本语法:
  保留字:breakcontinuedoelseelseiffilterforforeachfunctionifinlocalprivatereturnswitchuntilwherewhile
  数组:定义方法$name="string1","string2","string3"或者$number=@(1,2,3,4,5)
  引用时$name[n]下标从0开始。$name.Count是数组大小
  数组可以相加$num1+$num2就是简单的两个数组拼接。
  数组的长度:$num.length
  也可以定义键-值对的数组,叫做associativearray。
  读取输入
  $var=Read-Host"question?"var是变量名,引号里是提示问题。
  暂停程序
  Start-Sleep-secondsn要等待的秒数
  条件判断
  -eq-ne-lt-gt-le-gt
  -not!-and-or这是逻辑比较用到的操作符
  if(condition){}
  elseif(condition){}
  ...
  else{}
  以及switch
  switch(expression)
  {
  {test}{codeblock}
  value{codeblock}
  default{codeblock}
  }value是指和expression比较的值
  while循环
  while(表达式){
  ...
  }
  或者
  do{
  }while(表达式)
  表达式可以是$var-eq"";$var-ne"";(表达式1)-and(表达式2)-and(表达式3)
  for循环
  for(初始化;表达式;STEP){}以及
  foreach($name1inCollection1){$name1相关代码....}
  返回的集合的处理
  get-childitem|Select-Objectpropname1,propname2,propname3
  其他有sort-Object;Where-Object;
  如get-childitem|sort-object|Where-Object{$_.Length-gt200}这里$_代表集合里当前成员。
  定义函数
  functionfuncname{...}
  funcitonfuncname($x,$y,$z){...}
  导入导出CSV文件
  export-csvPAth\filname.csv
  $csvfil=import-csvPath\filname.csv
  ***系统管理的一些例子:
  获取USB设备
  gwmiWin32_USBControllerDevice-computernameSERVER1|flAntecedent,Dependent
  要知道有多少USB设备
  $USBdev=gwmiWin32_USBControllerDevice
  write$USBdev.length
  中止一个进程:stop-process-idnnnn
  输出显示的慢一点:
  定义一个函数
  functionEasyView{process{$_;Start-Sleep-seconds.5}}
  然后,对于输出很多行的命令,
  Get-ChildItemN:Data|EasyView
  把电脑加入域:
  # Acquire credentials for a domain account that has permission to join
  $admin = Get-Credential
  # these two variables are for convenience in shortening the command line
  $user = $admin.UserName
  $pw = $admin.GetNetworkCredential().Password
  $CS = Get-WmiObject Win32_ComputerSystem
  $CS.JoinDomainOrWorkgroup("DOMAIN",$pw,$user,$null,3)
  ***用于Exchange的命令
  获得邮箱的统计报告,并排序
  Get-MailboxStatistics–ServerVAN-EX1|Sort-ObjectTotalItemSize–Descending|
  FTDisplayName,TotalItemSize,ItemCount
  如果只要显示开头5个
  Get-MailboxStatistics–ServerVAN-EX1|Sort-ObjectItemCount–Descending|Select-
  Object–First5|FTDisplayName,ItemCount
  如果要生成一个证书请求并保存为文件
  $Data1=New-ExchangeCertificate-GenerateRequest-FriendlyName"Internetcertificate
  forVAN-EX2"-SubjectName"DC=com,DC=Adatum,CN=VAN-EX2.adatum.com"-DomainNamemail
  .adatum.com
  Set-Content-Path"C:\Certificates\VAN-EX2-request.req"-Value$Data1
  注意:Set-Content是吧某个文件的内容替换,Add-Content是添加在后面。
  管理活动目录里的对象
  首先你要import-module ActiveDirectory
  创建一个用户, New-ADuser  -samAccountName 参数是登录用名
  -GivenName  -Surname -AcountPassword 这些都是必要的参数
  在创建用户的时候要看看同登录名的用户是不是已经存在:
  $exuser = get-ADuser -Filter {SamAccountName -eq $SAM}
  if ($exuser -eq $Null)
  { $create = New-ADuser -Name $Detailname -Givenname $firstname -Surname $lastname -SamaccountName $SAM -UserPrincipalName $UPN -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -Enabled $true -Path $OU -Company $company -Department $dept
  }
  else {
  echo "The user with samaccount "  $SAM " already exist, please create it maually."
  Break
  }
  echo "account created OK."
  发送邮件
  $outlook = new-object -ComObject Outlook.Application
  $mail = $outlook.CreateItem(0)
  # 这里0代表olMailItem类型,
  $subject = "New User Information "
  $mail.Recipients.Add("name@contoso.com")
  $mail.subject = $subject

  $mail.body = ("Hello All," + "`r`n" + "`r`n" + "New User Information" + "`r`n" + "First Name :" + "  " + $UserFirstname + "`r`n" + "Last Name :" + "  " + $lastname +"`r`n" + "Contoso>  $mail.Send()
  这个脚本运行时,outlook会反复弹出确认授权执行的提示,按照微软网站设了组策略,仍然是这样,不知道有谁知道怎么才能去掉弹出对话框。
  系统启动时执行power shell的脚本。
  这个可以设置注册表。
  $powershell = (Join-Path $env:windir "system32\WindowsPowerShell\v1.0\powershell.exe")
  $RunKey ="HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
  $itemName = "MyAutorun"
  set-ItemProperty -path $RunKey -name $itemName -value ($powershell  脚本路径名和参数)
  如果不要自动运行了,
  remove-ItemProperty -path $RunKey -name $itemName 即可


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-561821-1-1.html 上篇帖子: 通过PowerShell轻松转换VHD文件到VHDX格式 下篇帖子: 通过以下PowerShell命令来安装.NET 3.5和远程服务器管理工具。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表