快捷搜索:

您的位置:澳门新葡4473网站 > 热门贴子 > 微软发布PowerShell 7 Preview 3

微软发布PowerShell 7 Preview 3

发布时间:2020-04-06 14:15编辑:热门贴子浏览(145)

    默认情况下预览版中的实验特性

    最近有个项目需要在在windows计划中使用powershell脚本备份sharepoint2010网站集,打开sharepoint的powershell执行命令管理界面的属性

    在默认情况下启用所有实验特性,以便让 PowerShell 委员会获得更多反馈,以确定某个特性是否应该继续作为实验功能,是否应该从实验性功能转移到稳定特性(非实验性功能),或者被删除。在稳定的版本(以及候选版本)上,默认情况下将继续禁用实验性功能。

    图片 1

    注意,如果以前手动启用了实验特性,powershell.config.json 设置文件将优先记录,并且只会启用该文件中列出的实验性功能。你可以删除该文件或运行 Get-ExperimentalFeature | Enable-ExperimentalFeature,以确保启用了所有实验功能。但是,如果使用管道,你将不得不再次使用具有新的实验特性的预览版本。

    图片 2

    默认为单线程

    查看:

    在此版本之前,pwsh 默认作为多线程单元运行。但是,图形用户界面 API(如 WinForms 和 WPF)需要一个单线程单元。 此版本在单线程方面,pwsh 与 powershell.exe 相同,支持从 PowerShell 脚本调用 WinForms 和 WPF API。

    C:WindowsSystem32WindowsPowerShellv1.0PowerShell.exe -NoExit " & ' C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions14CONFIGPOWERSHELLRegistration\sharepoint.ps1 ' "

    图片 3

     

    显示 COM 方法签名参数名

    先看看PowerShell.exe 的帮助

    现在

    PowerShell.exe 控制台帮助 从另一工具(如 Cmd.exe)的命令行启动 Windows PowerShell。 语法 PowerShell[.exe] [-PSConsoleFile <file> | -Version <version>] [-EncodedCommand <Base64EncodedCommand>] [-ExecutionPolicy <ExecutionPolicy>] [-File <filePath> <args>] [-InputFormat {Text | XML}] [-NoExit] [-NoLogo] [-NonInteractive] [-NoProfile] [-OutputFormat {Text | XML}] [-Sta] [-WindowStyle <style>] [-Command { - | <script-block> [-args <arg-array>] | <string> [<CommandParameters>] } ] PowerShell[.exe] -Help | -? | /? 参数 -EncodedCommand 接受命令的 Base 64 编码字符串版本。使用此参数可向 Windows PowerShell 提交需要复杂引号或大括号的命令。 -ExecutionPolicy 设置会话的默认执行策略。此参数不会更改在注册表中设置的 Windows PowerShell 执行策略。 -File 运行指定的脚本。请输入脚本文件路径和一些参数。 -InputFormat 描述发送至 Windows PowerShell 的数据格式。有效值为"Text"(文本字符串)或"XML"(序列化 CLIXML 格式)。 -NoExit 运行完启动命令后不退出。 -NoLogo 启动时隐藏版权标志。 -NonInteractive 不向用户显示交互式提示。 -NoProfile 不加载 Windows PowerShell 配置文件。 -OutputFormat 确定 Windows PowerShell 的输出格式。有效值为"Text"(文本字符串)或"XML"(序列化 CLIXML 格式)。 -PSConsoleFile 加载指定的 Windows PowerShell 控制台文件。若要创建控制台文件,请使用 Windows PowerShell 中的 Export-Console cmdlet。 -Sta 使用单线程单元启动 shell。 -Version 启动 Windows PowerShell 的指定版本。请随该参数输入一个版本号,例如"-version 1.0"。 -WindowStyle 将窗口样式设置为 Normal、Minimized、Maximized 或 Hidden。 -Command 按照执行在 Windows PowerShell 命令提示符下键入的命令那样,执行指定的命令和所有参数;如果未指定 NoExit,则执行完命令后将退出。Command 的值可以是"-"、字符串或脚本块。 如果 Command 的值为"-",则从标准输入中读取命令文本。 脚本块必须括在大括号 ({}) 中。只有在 Windows PowerShell 中运行 PowerShell.exe 时才能指定脚本块。脚本的运行结果将作为反序列化 XML 对象(而非活动对象)返回父 shell。 如果 Command 的值为字符串,则 Command 必须是该命令的最后一个形式参数,因为其后键入的所有字符都会被解释为它的实际参数。 若要编写运行 Windows PowerShell 命令的字符串,请使用以下格式: "& {<command>}" 其中,引号指示一个字符串,调用运算符 (&) 用于执行命令。 -Help, -?, /? 显示此消息。如果要在 Windows PowerShell 中键入 PowerShell.exe 命令,请将连字符 (-) 作为命令参数的前缀,而不要使用正斜杠 (/)。在 Cmd.exe 中,既可以使用连字符,也可以使用正斜杠。 示例 PowerShell -PSConsoleFile sqlsnapin.psc1 PowerShell -version 1.0 -NoLogo -InputFormat text -OutputFormat XML PowerShell -Command {Get-EventLog -LogName security} PowerShell -Command "& {Get-EventLog -LogName security}" # To use the -EncodedCommand parameter: $command = "dir 'c:program files' " $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -encodedCommand $encodedCommand

    将 DBNull 和 NullString 视为 $null

     

    使用数据库类型,可能会得到一个 [dbnull]::Value,它相当于数据库中的 $null,但是在 PowerShell 中,这并不等于 $null,所以不能直接比较它。通过对 Joelsallow 的更改,你可以将 [dbnull]::value 和 [nullstring]::value 与 $null 进行比较,并获得 $true。

    了解如上信息。我们来编写用powershell备份网站集的脚本。代码如下:

    图片 4

     

    Read-Host 提示符对所有输入都有效

    #//*************************************************************
    #//编辑人:XXX
    #//编辑单位:XXX
    #//编辑作用:备份所有站点,按照周1到周日创建7个文件夹
    #//编制时间:2013.08.26
    #//*************************************************************
    #**************************************************默认C#盘下,需要改动如下参数
    $Location = "d:"
    #网站集URL
    $siteUrl=http://XX.XXX.com
    #**************************************************
    #根目录名称
    $RootName="EPBackUp"
    #子文件夹
    $folderName = (Get-Date).DayOfWeek
    #全路径
    $folderPath = $Location + "" + $RootName
    #如果根文件夹不存在。则创建根文件夹
    If((Test-Path $Location) -eq $False) {
        Write-Host "开始创建根文件夹...---------------"
        New-Item -path $Location -name $RootName -itemType "directory"
        Write-Host "创建根文件夹完毕...---------------"
    }
    
    
    #如果星期文件夹不存在,则创建星期文件夹
    $weekPath =$folderPath + "" + $folderName
    If((Test-Path $weekPath) -eq $False) {
        Write-Host "正在创建周期文件夹......."
        New-Item -path $folderPath -name $folderName -itemType "directory"
        Write-Host "创建周期文件夹完毕...---------------"
    }
    
    
    #******************************************************************
    #添加如下2行代码为windows计划执行使用,否则windows计划无法执行ps1
    $MySnapin="Microsoft.SharePoint.PowerShell"
    if ( (Get-PSSnapin -Name $MySnapin -ErrorAction SilentlyContinue) -eq $null )
    {
        Write-Host "正在导入sharepoint的commandlet...---------------"
        Add-PSSnapin $MySnapin
        Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Force
        Write-Host "导入的sharepoint的commandlet完毕...---------------"
    }
    #******************************************************************
    #整个文件夹全路径
    $BackupFilePath = $folderPath + "" + $folderName
    
    #公司门户文件夹
    $epName = $BackupFilePath + "SPSite_EP.bak"
    Write-Host "开始备份公司门户...---------------"
    backup-SPSite $siteUrl -Path $epName -force
    Write-Host "备份公司门户完毕...---------------"
    
    #学习与发展门户文件夹
    $KMSiteUrl = $siteUrl +"/km"
    $KMName = $BackupFilePath + "SPSite_KM.bak"
    Write-Host "开始备份学习与发展...---------------"
    backup-SPSite $KMSiteUrl -Path $KMName -force
    Write-Host "备份学习与发展完毕...---------------"
    
    #协作空间文件夹
    $WorkSiteUrl = $siteUrl +"/workspace"
    $WorkName = $BackupFilePath + "SPSite_WorkSpace.bak"
    Write-Host "开始备份协作空间...---------------"
    backup-SPSite $WorkSiteUrl -Path $WorkName -force
    Write-Host "备份协作空间完毕...---------------"
    

    Read-host 如何调用控制台主机,以及控制台主机如何提示输入(例如给定值的强制性参数),可能就会遇到这样一种情况:即在使用某些字符时,使用 Read-host 提示脚本中的输入会出现其他意想不到的内容。此版本中已经被修复了。

    说明:

    -Split 运算符支持负数

    Add-PSSnapin, alias 为 asnp
    这个没有什么难理解的地方。Java里面有import来导入类库,同样C++里面有using

    解析 appx 修复点

    来导入库。在powershell
    里面有add-pssnapin来导入内置之外的commandlets。比如你自己写了一个commandlet用来计算及验证MD5摘要,怎么在console下用你自己写的commandlet呢(现在还没有内置的算MD5的commandlet,只能用.NET里面的库)?让add-pssnapin来帮助你。
    语法 Add-PSSnapin [-name] <string[]> [-passThru]
    [<CommonParameters>]
    例子1 add-PSSnapIn
    Microsoft.Exchange,Microsoft.Windows.AD
    将Microsoft.Exchange
    和Microsoft.Windows.AD 
    snappin添加到当前console中去。
    这两个snappin中的所有类,函数只在当前console中有效。如果想要当前console的snapin在后面可用,请看后面的export-console说明.
    例子2 get-pssnapin
    -registered | add-pssnapin -passthru
    将所有注册过的snapin加入到当前会话中去。

    在 Windows 10 上,如果从 Windows Store 安装了应用程序并将它们列在命令行中,它们将显示为 0 字节文件。这些文件实际上是到实际可执行文件的不同类型的链接。使用此更改后,目标可执行文件将在使用 get-child Item 时显示.

    创建windows计划

    pwsh 作为登录 shell

    注意点:

    在 Linux 和 MacOS 系统上,有一个登录 shell 的概念,它设置其他应用程序和 shell 继承的环境。在此版本之前,如果你使用 pwsh 作为默认登录 shell,会注意到一些环境变量丢失或不完整。

    #******************************************************************
    #添加如下2行代码为windows计划执行使用,否则windows计划无法执行ps1
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
    Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Force
    #******************************************************************

    通过此更改,pwsh 将与 sh Bourne Shell 在设置登录环境方面的工作方式相同,从而使一切正常工作。

    创建基本任务

    Telemetry

    图片 5

    在这个预览版本中,增加了更多的遥测技术,详情见博客。

    图片 6

    这个版本也包含了许多 bug 修复以及有针对性的性能改进,请见更改日志:

    图片 7

    图片 8

    下载地址:

    图片 9

    1)、程序脚本:C:WindowsSystem32WindowsPowerShellv1.0powershell.exe

    2)、添加参数:-NonInteractive  "c:BackUp.ps1"

    图片 10

    图片 11

     

    我们测试下效果图:

    图片 12

     

    图片 13

     

    本文由澳门新葡4473网站发布于热门贴子,转载请注明出处:微软发布PowerShell 7 Preview 3

    关键词:

上一篇:Android Q 正式命名为 Android 10

下一篇:没有了