欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

powershell 窗口 如何运行 ps1 文件 AG chatgpt 有大用 有大大用

powershell  窗口 如何运行 ps1 文件 

在 PowerShell 窗口中运行 .ps1 文件可以通过以下几种方法实现:


方法 1:直接运行(需权限允许)

  1. 开启执行权限(如果未设置过):
    默认情况下,PowerShell 会限制脚本执行。以管理员身份运行 PowerShell,输入以下命令允许脚本运行:

    powershell            
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser            

       

  • RemoteSigned:允许本地脚本运行,远程脚本需签名。

  • 其他选项:Unrestricted(无限制,不安全)或 Bypass(仅本次会话允许)。

  • Set-ExecutionPolicy RemoteSigned -Scope CurrentUser       #仅当前用户

  • Set-ExecutionPolicy RemoteSigned -Scope LocalMachine    #所有用户

  • 运行脚本

    powershell            
    & "C:\路径\脚本名.ps1"            

           

    或直接输入脚本路径:

    powershell            
    C:\路径\脚本名.ps1            

       


  • 方法 2:使用 powershell.exe 命令

    (适用于旧版或需要额外参数时)

    powershell    
    powershell.exe -File "C:\路径\脚本名.ps1"    


    附加参数:

    • -NoProfile:不加载用户配置文件,加快启动。

    • -ExecutionPolicy Bypass:临时绕过执行策略限制。


    方法 3:通过 Invoke-Expression

    (适用于动态脚本内容,但有安全风险)

    powershell    
    Invoke-Expression -Command (Get-Content "C:\路径\脚本名.ps1" -Raw)    



    常见问题

    1. 报错“无法加载文件,因为在此系统上禁止运行脚本”
      需先执行 Set-ExecutionPolicy(见方法1)。

    2. 路径包含空格
      用引号包裹路径:

      powershell            
      & "C:\我的文件夹\脚本.ps1"            

         

    3. 以管理员身份运行脚本

    • 手动:右键 PowerShell 图标 → “以管理员身份运行”,再执行脚本。

    • 自动:在脚本内添加管理员权限检查:

      powershell                
      if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {    Start-Process powershell.exe "-File `"$PSCommandPath`"" -Verb RunAs    exit }                

             


    示例

    假设脚本路径为 D:\example.ps1,步骤:

    1. 打开 PowerShell。

    2. 输入:

      powershell            
      & "D:\example.ps1"            

         


    通过以上方法,你可以灵活地在 PowerShell 中运行 .ps1 脚本。根据实际需求选择合适的方式即可!


    & "D:\example.ps1" 其中  & 是什么意思

    在 PowerShell 中,&(称为调用运算符,Invoke Operator)用于执行命令、脚本或代码块,通常用于以下场景:


    1. 执行字符串形式的命令或脚本路径

    • 作用:将字符串(如脚本路径)当作命令执行。

    • 示例

      powershell
      & "D:\example.ps1"

      这里的 & 告诉 PowerShell:将 "D:\example.ps1" 解释为可执行命令(而非普通字符串)。


    2. 与变量或表达式配合动态执行

    powershell
    $scriptPath = "D:\example.ps1" & $scriptPath  # 执行变量中的路径

    为什么需要 &

    1. 路径包含特殊字符(如空格)
      PowerShell 默认会尝试解析不带引号的字符串,而路径中的空格会导致歧义。例如:

      powershell
      D:\My Scripts\example.ps1  # 可能报错:My 被误认为命令 & "D:\My Scripts\example.ps1"  # 正确
    2. 区分“字符串”和“可执行对象”

      powershell
      "Get-Process"      # 只是一个字符串,不会执行 & "Get-Process"    # 实际运行 Get-Process 命令

    其他类似的运算符对比

    运算符用途示例
    &执行命令或脚本(无新进程)& "D:\example.ps1"
    .执行脚本并在当前作用域运行(变量共享). "D:\example.ps1"
    Start-Process启动新进程运行程序Start-Process "D:\example.ps1"

    常见问题

    • 能否省略 &

      • 路径无空格或特殊字符(如 D:\example.ps1)。

      • 脚本位于当前目录时,需加 .\(如 .\example.ps1)。

      • 可以,但需满足以下条件:

      • 推荐始终使用 &,避免意外行为。


    总结

    • & "D:\example.ps1" 中的 & 是调用运算符,确保字符串路径被正确执行为脚本。

    • 它是 PowerShell 灵活性和安全性的重要设计之一,尤其在处理动态脚本或复杂路径时必不可少。


    powerershell  Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 详解

    PowerShell Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 详解

    命令作用

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 是 PowerShell 中用于设置执行策略(Execution Policy)的命令,它配置当前用户在当前作用域下的脚本执行权限。

    各参数解释

    RemoteSigned

    这是执行策略的级别,表示:

    • 允许运行本地创建的脚本(不要求数字签名)

    • 但对从互联网下载的脚本,要求必须有受信任的发布者的数字签名(否则阻止运行)

    -Scope CurrentUser

    指定策略的作用范围:

    • 只影响当前用户(而不是所有用户)

    • 设置存储在HKCU (HKEY_CURRENT_USER)注册表项中

    • 不要求管理员权限

    对比其他执行策略

    策略级别本地脚本远程脚本描述
    Restricted❌ 禁止❌ 禁止默认策略,不允许任何脚本运行
    AllSigned✅ (需签名)✅ (需签名)所有脚本必须签名才能运行
    RemoteSigned✅ (需签名)本地脚本可直接运行,远程需签名
    Unrestricted✅ (警告)允许所有脚本,但运行远程脚本有警告
    Bypass无限制,无警告

    适用场景

    1. 开发环境中需要运行自己编写的 PowerShell 脚本

    2. 需要从互联网下载并运行经过验证的脚本

    3. 在多用户系统中,只想修改自己的执行策略而不影响其他用户

    注意事项

    1. 执行策略不是安全边界,只是防止意外执行脚本的机制

    2. RemoteSigned 策略下,从互联网下载的脚本需要先解压缩(Windows 会标记为"来自其他计算机")

    3. 要查看当前执行策略,可使用 Get-ExecutionPolicy -List

    4. 如果需要管理员权限的脚本,可能需要以管理员身份运行 PowerShell

    其他相关命令示例

    powershell
    # 查看所有作用域的执行策略 Get-ExecutionPolicy -List # 仅为当前会话临时设置执行策略(不持久化) Set-ExecutionPolicy RemoteSigned -Scope Process # 还原为默认设置 Set-ExecutionPolicy Restricted -Scope CurrentUser

    这个命令通常在开始使用 PowerShell 脚本编程时首先执行,以解除默认的限制策略。


     -Scope 所有用户

    PowerShell Set-ExecutionPolicy 的 -Scope 参数详解(所有用户设置)

    设置所有用户的执行策略

    要设置所有用户的执行策略,需要使用以下命令:

    powershell
    Set-ExecutionPolicy RemoteSigned -Scope LocalMachine

    各参数解释

    -Scope LocalMachine

    • 影响计算机上的所有用户

    • 设置存储在HKLM (HKEY_LOCAL_MACHINE)注册表项中

    • 需要管理员权限才能执行

    执行条件的差异

    对比项-Scope CurrentUser-Scope LocalMachine
    影响范围仅当前用户本地计算机上的所有用户
    存储位置HKCU 注册表HKLM 注册表
    权限要求不需要管理员权限需要管理员权限
    优先级更高更低

    实际应用建议

    1. 生产环境推荐:管理员通常使用 -Scope LocalMachine 统一设置所有用户的策略

    2. 开发环境推荐:普通用户使用 -Scope CurrentUser 自行设置不影响他人

    3. 优先级规则:当多个作用域设置冲突时,PowerShell 按以下顺序应用策略:

      Process → CurrentUser → LocalMachine
      

    相关命令示例

    powershell
    # 查看所有作用域的执行策略 Get-ExecutionPolicy -List # 为所有用户设置执行策略(需要管理员权限) Set-ExecutionPolicy RemoteSigned -Scope LocalMachine # 恢复所有用户的默认限制 Set-ExecutionPolicy Restricted -Scope LocalMachine

    安全提醒

    1. 在共享计算机上谨慎使用 LocalMachine 范围

    2. 企业环境中可能需要遵守组策略设置

    3. 某些环境可能通过组策略锁定执行策略,这时本地设置可能无效



    普通分类: