2017-06-22 5 views
5

से ओएस संस्करण, लिनक्स और विंडोज का निर्धारण करें मैं एक स्क्रिप्ट के भीतर पावरहेल का उपयोग कर ओएस प्रकार, (लिनक्स, विंडोज) कैसे निर्धारित कर सकता हूं?पावरहेल

प्रतिक्रिया स्क्रिप्ट को मान्यता नहीं दी जाती है जब मेरी लिपि का यह हिस्सा लिनक्स होस्ट पर चलाया जाता है।

If ($OsType -eq "Linux") 
{ 
    $UrlAuthority = ($Request.BaseResponse).RequestMessage | Select-Object -ExpandProperty RequestUri | Select-Object -ExpandProperty host 
} 
Else 
    $UrlAuthority = $Request.BaseResponse | Select-Object -ExpandProperty ResponseUri | Select-Object -ExpandProperty Authority 

मैं Get-CimInstance Win32_OperatingSystem इस्तेमाल कर सकते हैं लेकिन यह लिनक्स पर विफल हो जाएगा के रूप में यह मान्यता प्राप्त नहीं है:

$UrlAuthority = $Request.BaseResponse | Select-Object -ExpandProperty ResponseUri | Select-Object -ExpandProperty Authority 

तो मैं एक If बयान ओएस प्रकार है कि इस के समान लगेगा निर्धारित करने के लिए चाहते हैं।

+0

नहीं है 'मिल-host' जिसमें वह डेटा है? – 4c74356b41

+0

[यह उपयोगी हो सकता है] (http://www.sqlserver-dba.com/2012/06/how-to-check-operating-system-type-with-powershell.html) – gms0ulman

+0

ऐसा नहीं है कि मैं बता सकता हूं। न ही दस्तावेज़ीकरण [लिंक] (https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/get-host) – boomcubist

उत्तर

5

क्या ओएस के लिए अन्य प्लेटफॉर्म पर आप पर्यावरण चर नहीं देख सकते हैं? GCI ENV:

विशेष रूप से, विंडोज कम से कम पर, वहाँ एक ओएस वातावरण चर है, ताकि आप का उपयोग करके यह पूरा करने में सक्षम होना चाहिए:

Write-Output "$($ENV:OS)" 

या अधिक बस (प्रॉम्प्ट पर)

$env:OS 
+0

मैंने शुरुआत में यह कोशिश की, और यह "Windows_NT" लौटा मेरी विंडोज 8.1 मशीन पर ... मुझे लगता है कि ओपी अधिक विस्तार के बाद है। – gms0ulman

+1

@ gms0ulman ऐसा लगता है कि यह किसी भी विंडोज बॉक्स पर Windows_NT की रिपोर्ट करता है। मुझे लगता है कि ओपी दूसरे के विरुद्ध एक की तलाश कर रहा है क्योंकि वह "मैं विंडोज़ 10 या उबंटू पर हूं" की तरह कुछ नहीं पूछ रहा था? – TheIncorrigible1

+0

यह सही है। मैं यह कर सकता हूं 'अगर ("$ ($ ENV: OS)" -एक $ शून्य) '- यह लिनक्स पर शून्य देता है, इसलिए यदि यह शून्य नहीं है तो यह विंडोज़ है!धन्यवाद। – boomcubist

1

जब आपको केवल यह जांचना है कि यह खिड़कियां या लिनक्स है या नहीं, तो आप इसका उपयोग कर सकते हैं (त्वरित और गंदा):

कुछ
3

पर लिनक्स/OSX PowerShell संस्करणों के बाद से नवीनतम बीटा के लिए अद्यतन किया जाना चाहिए आप $PSVersionTable, OS, Platform और GitCommitId

अद्यतन के नए गुणों का उपयोग कर सकते v6.0.0-beta.3 में देखते हैं -Command से PowerShell.exe के लिए breaking changes

  • बदलें स्थितीय पैरामीटर -file को

मंच Win32NT ओएस Microsoft Windows 10.0.15063

PS C:\Program Files\PowerShell\6.0.0-beta.3> $PSVersionTable 

Name       Value 
----       ----- 
PSVersion      6.0.0-beta 
PSEdition      Core 
GitCommitId     v6.0.0-beta.3 
OS        Microsoft Windows 10.0.15063 
Platform      Win32NT 
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0...} 
PSRemotingProtocolVersion  2.3 
SerializationVersion   1.1.0.1 
WSManStackVersion    3.0 

PS> $PSVersionTable                             

मंच Unix ओएस Linux (ubuntu)

Name       Value                        
----       -----                        
PSVersion      6.0.0-beta                       
PSEdition      Core                         
GitCommitId     v6.0.0-beta.3                      
OS        Linux 4.4.0-79-generiC#100-Ubuntu SMP Wed May 17 19:58:14 UTC 2017         
Platform      Unix                         
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0...}                    
PSRemotingProtocolVersion  2.3                         
SerializationVersion   1.1.0.1                        
WSManStackVersion    3.0                         

मंच Unix ओएस Darwin

PS> $PSVersionTable 
> 
Name       Value 
----       ----- 
PSVersion      6.0.0-beta 
PSEdition      Core 
GitCommitId     v6.0.0-beta.3 
OS        Darwin 16.6.0 Darwin Kernel Version 16.6.0: Fri Apr 14 16:21:16 PDT 2017; root:xnu-37... 
Platform      Unix 
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0...} 
PSRemotingProtocolVersion  2.3 
SerializationVersion   1.1.0.1 
WSManStackVersion    3.0 
+0

यह 6 संस्करण से पहले PowerShell पर चलने पर मदद नहीं करेगा। – lit

+0

@lit '$ env की अनुपस्थिति/उपस्थिति: ओएस'' $ PSVersionTable.Os' या '$ PSVersionTable.Platform की अनुपस्थिति/उपस्थिति के रूप में कुछ अलग बताएगी ' – LotPings

+0

@ लोटिंग्स - हां, मंच के कुछ व्यापक संग्रह और चीजों से नहीं, प्लेटफॉर्म को समझना संभव हो सकता है। लिखने के लिए स्वभाव कोड की तरह लगता है और बनाए रखने के लिए और भी अधिक स्वभावपूर्ण लगता है। – lit