[玩转系统] 非 Windows 平台上的 PowerShell 差异
作者:精品下载站 日期:2024-12-14 03:00:34 浏览:13 分类:玩电脑
非 Windows 平台上的 PowerShell 差异
PowerShell 致力于在所有支持的平台上提供相同的功能。但是,由于 .NET Core 和特定于平台的差异,某些功能的行为有所不同或不可用。还进行了其他更改以提高 PowerShell 在非 Windows 平台上的互操作性。
.NET Framework 与 .NET Core
Linux 和 macOS 上的 PowerShell 使用 .NET Core,它是 Microsoft Windows 上完整 .NET Framework 的子集。因此,由于框架的差异,在 Windows 上运行的脚本可能无法在非 Windows 平台上运行。
有关 .NET Core 中的更改的详细信息,请参阅从 .NET Framework 迁移到 .NET Core 的重大更改。
一般 Unix 互操作性更改
- 添加了对 Unix 平台上本机命令通配符的支持。这意味着您可以在
ls *.txt
等本机命令中使用通配符。 more
功能遵循 Linux$PAGER
并默认为less
。- 处理本机命令参数时,尾部反斜杠会自动转义。
- 修复了 ConsoleHost 以在 Unix 平台上支持
NoEcho
。 - 不要在 Unix 上添加
PATHEXT
环境变量。 - 软件包中包含一个
powershell
手册页。
执行政策
在非 Windows 平台上运行时,PowerShell 会忽略执行策略。 Get-ExecutionPolicy
在 Linux 和 macOS 上返回 Unrestricted。 Set-ExecutionPolicy
在 Linux 和 macOS 上不执行任何操作。
PowerShell 中的区分大小写
从历史上看,PowerShell 一直不区分大小写,只有少数例外。在类 UNIX 操作系统上,文件系统主要区分大小写,并且 PowerShell 遵循文件系统的标准。
- 在 PowerShell 中指定文件名时,必须使用正确的大小写。
- 如果脚本尝试加载模块并且模块名称大小写不正确,则模块加载会失败。如果模块引用的名称与实际文件名的正确大小写不匹配,则此行为可能会导致现有脚本出现问题。
- 虽然文件系统中的名称区分大小写,但文件名的制表符补全不区分大小写。制表符补全使用不区分大小写的匹配在名称列表中循环。
Get-Help
支持 Unix 平台上不区分大小写的模式匹配。Import-Module
与文件名一起使用来确定模块名称时不区分大小写。
Linux 和 macOS 的文件系统支持
- 提供给 cmdlet 的路径现在与斜杠无关(
/
和\
都用作目录分隔符) -
XDG 基本目录规范现在受到尊重并默认使用:
- Linux/macOS 配置文件路径位于
~/.config/powershell/profile.ps1
- Linux/macOS 配置文件路径位于
- 历史记录保存路径位于
~/.local/share/powershell/PSReadline/ConsoleHost_history.txt
- 用户模块路径位于
~/.local/share/powershell/Modules
Get-ChildItem
,使其工作方式更像 *nix ls -R
和 Windows DIR /S
本机命令。 Get-ChildItem
现在返回递归搜索期间遇到的符号链接,并且不搜索这些链接的目标目录。.PS1 文件扩展名
PowerShell 脚本必须以 .ps1
结尾,以便解释器了解如何在当前进程中加载和运行它们。在当前进程中运行脚本是 PowerShell 的预期常见行为。您可以将 #!
幻数添加到没有 .ps1
扩展名的脚本中,但这会导致脚本在新的 PowerShell 实例中运行,从而阻止交换对象时脚本无法正常工作。从 Bash 或其他 shell 执行 PowerShell 脚本时,可能需要这种行为。
删除了方便的别名
为了方便用户,PowerShell 在 Windows 上提供了一组映射到 Linux 命令名称的别名。在 Linux 和 macOS 上,基本命令 ls
、cp
、mv
、rm
的“便捷别名” cat
、man
、mount
和 ps
已被删除,以允许本机可执行文件在不指定路径的情况下运行。
记录
在 macOS 上,PowerShell 使用本机 os_log
API 记录到 Apple 的统一日志记录系统。在 Linux 上,PowerShell 使用 Syslog,这是一种无处不在的日志记录解决方案。
作业控制
Linux 或 macOS 上的 PowerShell 不支持 Unix 风格的作业控制。 fg
和 bg
命令不可用。但是,您可以使用适用于所有平台的 PowerShell 作业。
将 &
放在管道末尾会导致管道作为 PowerShell 作业运行。当管道后台运行时,会返回一个作业对象。一旦管道作为作业运行,所有 *-Job
cmdlet 都可用于管理作业。管道中使用的变量(忽略特定于流程的变量)会自动复制到作业中,因此 Copy-Item $foo $bar & 可以正常工作。该作业在当前目录而不是用户的主目录中运行。
远程支持
在 Unix 平台上使用 WinRM 的 PowerShell 远程处理 (PSRP) 需要 NTLM/Negotiate 或基于 HTTPS 的基本身份验证。 macOS 上的 PSRP 仅支持通过 HTTPS 进行基本身份验证。不支持基于 Kerberos 的身份验证。
PowerShell 在所有平台(Windows、Linux 和 macOS)上支持通过 SSH 的 PowerShell 远程处理 (PSRP)。有关详细信息,请参阅 PowerShell 中的 SSH 远程处理。
充足管理 (JEA) 支持
Linux 或 macOS 上的 PowerShell 不允许您创建约束管理 (JEA) 远程处理端点。
sudo
、exec
和 PowerShell
由于 PowerShell 在内存中运行大多数命令(例如 Python 或 Ruby),因此您无法直接将 sudo
与 PowerShell 内置命令一起使用。您可以从 sudo
运行 pwsh
。如果需要使用 sudo
从 PowerShell 中运行 PowerShell cmdlet,例如 sudo Set-Date 8/18/2016
,那么您可以使用 sudo pwsh设置日期 2016 年 8 月 18 日
。
非 Windows 平台上包含的模块
对于非 Windows 平台,PowerShell 包括以下模块:
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- PackageManagement
- PowerShell获取
- PS阅读线
- ThreadJob
PowerShell 中常用的大量命令 (cmdlet) 在 Linux 或 macOS 上不可用。通常,这些命令不适用于这些平台。例如,用于 Windows 特定功能(如注册表或服务)的命令不可用。其他命令(例如 Set-ExecutionPolicy)存在但不起作用。
有关模块和 cmdlet 及其支持的平台的完整列表,请参阅模块和 cmdlet 的发布历史记录。
PowerShell 不再附带模块
出于各种兼容性原因,PowerShell 中不再包含以下模块。
- 伊势
- Microsoft.PowerShell.LocalAccounts
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Operation.Validation
- PS预定作业
- PS工作流程
- PS工作流程实用程序
适用于 Linux 或 macOS 的 PowerShell 中不包含以下特定于 Windows 的模块。
- CimCmdlets
- Microsoft.PowerShell.Diagnostics
- Microsoft.WSMan.Management
- PSD诊断
Cmdlet 在非 Windows 平台上不可用
一些 cmdlet 已从 PowerShell 中删除。其他功能在非 Windows 平台上不可用或可能以不同方式工作。有关从 PowerShell 中删除的 cmdlet 的完整列表,请参阅从 PowerShell 中删除的 Cmdlet。
Microsoft.PowerShell.Core
以下 cmdlet 在 Linux 或 macOS 上不可用:
Disable-PSRemoting
Enable-PSRemoting
Connect-PSSession
Disconnect-PSSession
Receive-PSSession
Get-PSSessionCapability
Disable-PSSessionConfiguration
Enable-PSSessionConfiguration
Get-PSSessionConfiguration
Register-PSSessionConfiguration
Set-PSSessionConfiguration
Unregister-PSSessionConfiguration
Test-PSSessionConfigurationFile
Get-Help
的 ShowWindow 参数不适用于非 Windows 平台。 PowerShell 7.3 添加了适用于 Linux 和 macOS 的 Switch-Process
cmdlet 和 exec
函数。这些命令在 Windows 上不可用。
Microsoft.PowerShell.Security cmdlet
以下 cmdlet 在 Linux 或 macOS 上不可用:
Get-Acl
Set-Acl
Get-AuthenticodeSignature
Set-AuthenticodeSignature
New-FileCatalog
Test-FileCatalog
这些 cmdlet 仅从 PowerShell 7.1 开始可用。
Get-CmsMessage
Protect-CmsMessage
Unprotect-CmsMessage
Microsoft.PowerShell.管理 cmdlet
以下 cmdlet 在 Linux 和 macOS 上不可用:
Rename-Computer
Get-ComputerInfo
Get-HotFix
Clear-RecycleBin
Get-Service
New-Service
Remove-Service
Restart-Service
Resume-Service
Set-Service
Start-Service
Stop-Service
Suspend-Service
Set-TimeZone
以下 cmdlet 可用但有限制:
Get-Clipboard
- 在 PowerShell 7.0+ 中可用Set-Clipboard
- 在 PowerShell 7.0+ 中可用Restart-Computer
- 适用于 PowerShell 7.1+ 中的 Linux 和 macOSStop-Computer
- 适用于 PowerShell 7.1+ 中的 Linux 和 macOS
Microsoft.PowerShell.Utility cmdlet
以下 cmdlet 在 Linux 和 macOS 上不可用:
Convert-String
ConvertFrom-String
ConvertFrom-SddlString
Out-GridView
Out-Printer
Show-Command
别名在 Linux 或 macOS 上不可用
下表列出了可用于 Windows 但在非 Windows 平台上不可用的别名。这些别名不可用,因为别名与这些平台上的本机命令冲突。
ac
添加内容
cat
获取内容
clear
清除主机
compare
比较对象
cp
复制项目
cpp
复制项目属性
diff
比较对象
kill
停止进程
ls
获取子项
man
帮助
mount
新 PSDrive
mv
移动项目
ps
获取进程
rm
删除项目
rmdir
删除项目
sleep
开始-睡眠
sort
排序对象
start
启动进程
tee
Tee 对象
write
写输出
该表不包含非 Windows 平台上不存在的 cmdlet 不可使用的别名。
PowerShell 期望状态配置 (DSC)
从 PowerShell 7.2 开始,PSDesiredStateConfiguration 模块已从 PowerShell 中删除,并在 PowerShell 库中发布。有关更多信息,请参阅 PowerShell 团队博客上的公告。有关在 Linux 上使用 DSC 的更多信息,请参阅适用于 Linux 的 DSC 入门。 macOS 不支持 DSC v1.1 和 v2.x。 DSC v3 在 Windows、Linux 和 macOS 上受支持,但仍处于早期开发阶段。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag