هل من سبب تم استبعاد $ env: PROCESSOR_ARCHITECTURE ؟ أعتقد أنه مفيد.
هذا مفقود في كل من Linux و MacOS PSCore6.
نفّذ الأمر التالي في Linux أو MacOS PSCore ويكون المتغير مفقودًا.
dir env:
هذا المتغير env $
لم يرد في نظام تشغيل بخلاف Windows.
CentOS:
PS /home/maxt> cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
نظام التشغيل MacOS:
Maximos-Mac:~ maxt$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.4
BuildVersion: 17E199
#CentOS
PS /home/maxt> $PSVersionTable
Name Value
---- -----
PSVersion 6.1.0-preview.2
PSEdition Core
GitCommitId v6.1.0-preview.2
OS Linux 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
#MacOS
PS /Users/maxt> $PSVersionTable
Name Value
---- -----
PSVersion 6.1.0-preview.2
PSEdition Core
GitCommitId v6.1.0-preview.2
OS Darwin 17.5.0 Darwin Kernel Version 17.5.0: Mon Mar 5 22:24:32 PST 2018; root:xnu-45...
Platform Unix
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
أعتقد أنه نظرًا لكونه متغيرًا في البيئة ، فإن PowerShell لا يتحكم في وجود هذا الإعداد. إنه نظام التشغيل المضيف الذي يحدد PROCESSOR_ARCHITECTURE
في البيئة ، وكان هناك تفضيل عام لـ PowerShell لعدم تعيين متغيرات بيئة جديدة (خاصة وأن هذا من المحتمل أن يؤدي إلى كسر الأشياء).
للتوضيح ، انتقل إلى cmd.exe
على Windows واكتب echo %PROCESSOR_ARCHITECTURE%
وستظهر لك القيمة. انتقل إلى bash
على UNIX واكتب echo $PROCESSOR_ARCHITECTURE
ولن تحصل على أي شيء افتراضيًا. يهدف PowerShell إلى فعل الشيء نفسه على كل منصة معنية.
فقط من أجل الاكتمال ، في UNIX ، يجب أن تكون قادرًا على استخدام uname -m
(أعتقد أن $PSVersionTable
يستخدم هذا مقابل OS
). أعتقد أنه ربما كان هناك بعض النقاش حول وجود متغير داخلي لـ PowerShell لتتبع بنية المعالج أيضًا.
شكرا لكم جميعا!!
:)
التعليق الأكثر فائدة
أعتقد أنه نظرًا لكونه متغيرًا في البيئة ، فإن PowerShell لا يتحكم في وجود هذا الإعداد. إنه نظام التشغيل المضيف الذي يحدد
PROCESSOR_ARCHITECTURE
في البيئة ، وكان هناك تفضيل عام لـ PowerShell لعدم تعيين متغيرات بيئة جديدة (خاصة وأن هذا من المحتمل أن يؤدي إلى كسر الأشياء).للتوضيح ، انتقل إلى
cmd.exe
على Windows واكتبecho %PROCESSOR_ARCHITECTURE%
وستظهر لك القيمة. انتقل إلىbash
على UNIX واكتبecho $PROCESSOR_ARCHITECTURE
ولن تحصل على أي شيء افتراضيًا. يهدف PowerShell إلى فعل الشيء نفسه على كل منصة معنية.