运行 PowerShell 之外的 PowerShell 命令
Run PowerShell command(s) outside of PowerShell
我有这个简单的 PowerShell 脚本:
Copy-Item -path ('\PC1\Images\' + (Get-ChildItem -Path '\PC1\Images' -Attributes !Directory *.dat | Sort-Object -Descending -Property LastWriteTime | Select-Object -first 1)) 'C:\Temp\PC1\screen.jpg' | Start-Process 'C:\Program Files\Google\Chrome\Application\chrome.exe' -ArgumentList 'file:///C:/Temp/PC1/screen.jpg'
如果我从 PowerShell 运行 此命令 window,它工作正常。
如果我将其保存为 .ps1 文件并从 Windows 资源管理器将其保存为 运行,则什么也不会发生(Chrome 无法打开所需的 URL)。
如何才能允许从某个快捷方式执行此脚本? (我想在我的 Windows 任务栏中添加一个 shortcut/icon 以便快速访问)。
你有两个选择:
其中之一:自己制作 .ps1
文件 - 默认情况下,打开时会打开 编辑 (double-clicked) 从文件资源管理器/桌面/任务栏 - 可直接执行:
参见 this answer。
重要提示:这样做将使您拖到任务栏的所有 .ps1
个文件关联带有 单个 图标,对于 PowerShell 本身,拖动的文件 固定 到该图标;也就是说,对于 运行 这样的文件,您必须通过 PowerShell 图标的 快捷菜单.
或:对于给定的 .ps1
文件,创建伴随 快捷方式文件 (.lnk
) 或批处理文件 (.cmd
) 通过 PowerShell 的 CLI 启动它(powershell.exe
for Windows PowerShell,pwsh.exe
适用于 PowerShell(核心)7+)
注意:按照如下所述创建伴随文件后,将其拖动到任务栏将为其提供自己的任务栏图标。
Batch-file方法:
在与 .ps1
相同的文件夹中创建一个批处理文件,并使用相同的基本文件名;例如,foo.cmd
和 foo.ps1
在.cmd
文件中添加如下内容(根据需要添加-NoProfile
和-ExecutionPolicy Bypass
):
@powershell.exe -NoExit -File "%~dpn0.ps1" %*
Shortcut-file方法:
请参阅 this answer 以了解如何以交互方式创建此类快捷方式文件。
请参阅 this answer 了解如何以编程方式创建快捷方式文件。
Powershell 中 运行 下一个命令的输出是什么?
Get-ExecutionPolicy
如果您得到的输出是“受限”,您可以尝试在与 .ps1 文件相同的文件夹中创建一个 .cmd 文件,其下一个内容为:
PowerShell.exe -ExecutionPolicy Bypass -File "your_ps1_name.ps1"
我有这个简单的 PowerShell 脚本:
Copy-Item -path ('\PC1\Images\' + (Get-ChildItem -Path '\PC1\Images' -Attributes !Directory *.dat | Sort-Object -Descending -Property LastWriteTime | Select-Object -first 1)) 'C:\Temp\PC1\screen.jpg' | Start-Process 'C:\Program Files\Google\Chrome\Application\chrome.exe' -ArgumentList 'file:///C:/Temp/PC1/screen.jpg'
如果我从 PowerShell 运行 此命令 window,它工作正常。 如果我将其保存为 .ps1 文件并从 Windows 资源管理器将其保存为 运行,则什么也不会发生(Chrome 无法打开所需的 URL)。
如何才能允许从某个快捷方式执行此脚本? (我想在我的 Windows 任务栏中添加一个 shortcut/icon 以便快速访问)。
你有两个选择:
其中之一:自己制作
.ps1
文件 - 默认情况下,打开时会打开 编辑 (double-clicked) 从文件资源管理器/桌面/任务栏 - 可直接执行:参见 this answer。
重要提示:这样做将使您拖到任务栏的所有
.ps1
个文件关联带有 单个 图标,对于 PowerShell 本身,拖动的文件 固定 到该图标;也就是说,对于 运行 这样的文件,您必须通过 PowerShell 图标的 快捷菜单.
或:对于给定的
.ps1
文件,创建伴随 快捷方式文件 (.lnk
) 或批处理文件 (.cmd
) 通过 PowerShell 的 CLI 启动它(powershell.exe
for Windows PowerShell,pwsh.exe
适用于 PowerShell(核心)7+)注意:按照如下所述创建伴随文件后,将其拖动到任务栏将为其提供自己的任务栏图标。
Batch-file方法:
在与
.ps1
相同的文件夹中创建一个批处理文件,并使用相同的基本文件名;例如,foo.cmd
和foo.ps1
在
.cmd
文件中添加如下内容(根据需要添加-NoProfile
和-ExecutionPolicy Bypass
):@powershell.exe -NoExit -File "%~dpn0.ps1" %*
Shortcut-file方法:
请参阅 this answer 以了解如何以交互方式创建此类快捷方式文件。
请参阅 this answer 了解如何以编程方式创建快捷方式文件。
Powershell 中 运行 下一个命令的输出是什么?
Get-ExecutionPolicy
如果您得到的输出是“受限”,您可以尝试在与 .ps1 文件相同的文件夹中创建一个 .cmd 文件,其下一个内容为:
PowerShell.exe -ExecutionPolicy Bypass -File "your_ps1_name.ps1"