ฉันจะเรียกใช้ PowerShell ด้วยรันไทม์. NET 4 ได้อย่างไร


234

ฉันกำลังปรับปรุงสคริปต์ PowerShell ที่จัดการแอสเซมบลี. NET บางตัว สคริปต์ถูกเขียนขึ้นสำหรับแอสเซมบลีที่สร้างจาก. NET 2 (เฟรมเวิร์กรุ่นเดียวกันกับที่ PowerShell รันด้วย) แต่ตอนนี้จำเป็นต้องทำงานกับแอสเซมบลี. NET 4 เช่นเดียวกับแอสเซมบลี. NET 2

เนื่องจาก. NET 4 รองรับการใช้งานแอพพลิเคชั่นที่สร้างขึ้นจากเฟรมเวิร์กที่เก่ากว่าดูเหมือนว่าทางออกที่ง่ายที่สุดคือการเปิด PowerShell ด้วยรันไทม์. NET 4 เมื่อฉันต้องเรียกใช้แอสเซมบลี. NET 4

ฉันจะเรียกใช้ PowerShell ด้วยรันไทม์. NET 4 ได้อย่างไร



8
วันนี้ทางออกที่ง่ายที่สุดคือการติดตั้ง Powershell 3.0 CTP ซึ่งใช้ CLRVersion: 4.0.30319.1
จอน Z

2
ทุกคนยังคงติดอยู่กับ PowerShell 2 ดูคำตอบของ Tim Lewisสำหรับโซลูชันที่แปลเป็นภาษาท้องถิ่นซึ่งไม่ต้องการแก้ไขการกำหนดค่าทั้งเครื่อง
Eric Eskildsen

1
สำหรับการแก้ปัญหาที่ไม่มีทั้งระบบและไร้ที่พึ่งดูคำตอบนี้
vkrzv

คำตอบ:


147

PowerShell (เอ็นจิ้น) ทำงานได้ดีภายใต้. NET 4.0 PowerShell (โฮสต์คอนโซลและISE ) ไม่เพียงเพราะพวกเขาถูกคอมไพล์กับ. NET รุ่นเก่า มีการตั้งค่ารีจิสทรีที่จะเปลี่ยน. NET framework ที่โหลดทั้งระบบซึ่งจะอนุญาตให้ PowerShell ใช้คลาส .NET 4.0 ได้:

reg add hklm\software\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1
reg add hklm\software\wow6432node\microsoft\.netframework /v OnlyUseLatestCLR /t REG_DWORD /d 1

หากต้องการอัปเดตเฉพาะ ISE ให้ใช้. NET 4.0 คุณสามารถเปลี่ยนการกำหนดค่า ($ psHome \ powershell_ise.exe.config) ไฟล์เพื่อให้มีลักษณะเช่นนี้:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
      <supportedRuntime version="v4.0.30319" />
    </startup>
</configuration>

คุณสามารถสร้างแอปพลิเคชัน. NET 4.0 ที่เรียก PowerShell โดยใช้ PowerShell API (System.Management.Automation.PowerShell) ได้ดี แต่ขั้นตอนเหล่านี้จะช่วยให้โฮสต์ PowerShell ในกล่องทำงานภายใต้. NET 4.0


ลบรีจิสตรีคีย์เมื่อคุณไม่ต้องการมันอีกต่อไป ปุ่มเหล่านี้เป็นทั้งตัวเครื่องและบังคับให้โอนย้ายแอปพลิเคชันทั้งหมดไปยัง. NET 4.0 แม้กระทั่งแอปพลิเคชันที่ใช้. net 2 และ. net 3.5



9
เพื่อความชัดเจน powershell.exe (แอปโฮสต์คอนโซล) เป็นแอปพลิเคชั่นดั้งเดิม - ไม่ได้รับการจัดการ
Keith Hill

4
ฉันพบปัญหาจากด้านบน คุณต้องใส่ไฟล์ปรับแต่งในไดเรกทอรี 64- บิตเมื่อรันบนระบบปฏิบัติการ 64- ​​บิต ไฟล์ประมวลผล powershell แบบ 32 บิตดูเหมือนว่าจะรับการเปลี่ยนแปลงได้ดีจากที่นั่น
Chris McKenzie

11
คำแนะนำเล็ก ๆ เพียงคำเดียว ลบรีจิสตรีคีย์เมื่อคุณไม่ต้องการมันอีกต่อไป ฉันเสียเวลาพยายามค้นหาสาเหตุที่ฉันไม่สามารถสร้างโครงการ. NET 3.5 บางอย่างที่ฉันกำลังทำงานอยู่
Klark

7
โซลูชันการปรับเปลี่ยนรีจิสทรีที่เสนอมีผลข้างเคียงที่น่ารังเกียจหากคุณใช้การกำหนดเป้าหมายหลายอย่าง (เช่นการเขียนแอป. NET 2.0 ใน VS2010) ระวัง.
Todd Sprang

9
โปรดทราบว่า Microsoft เตือนไม่ให้ทำเช่นนี้: "แม้ว่าจะเป็นไปได้ที่จะบังคับให้ PowerShell 2.0 ทำงานด้วย. NET Framework 4.0 โดยใช้กลไกต่าง ๆ เช่นการสร้างไฟล์ปรับแต่งสำหรับ PowerShell หรือแก้ไขรีจิสตรี แต่กลไกเหล่านี้อาจไม่รองรับ ผลกระทบด้านลบต่อฟังก์ชันการทำงานอื่น ๆ ของ PowerShell เช่น PowerShell remoting และ cmdlets พร้อมชุดประกอบแบบผสม " connect.microsoft.com/PowerShell/feedback/details/525435/… Powershell 3.0 มีการสนับสนุนดั้งเดิมสำหรับ. NET 4.0
Timbo

238

ทางออกที่ดีที่สุดที่ฉันได้พบอยู่ในบล็อกโพสต์โดยใช้เวอร์ชันใหม่ (s) ของ .NET กับ PowerShell สิ่งนี้ทำให้ powershell.exe ทำงานด้วยแอสเซมบลี. NET 4 ได้

เพียงแค่ปรับเปลี่ยน (หรือสร้าง) $pshome\powershell.exe.configเพื่อให้มีสิ่งต่อไปนี้:

<?xml version="1.0"?> 
<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0.30319"/> 
        <supportedRuntime version="v2.0.50727"/> 
    </startup> 
</configuration> 

หมายเหตุเพิ่มเติมเกี่ยวกับการตั้งค่าอย่างรวดเร็ว:

ตำแหน่งและไฟล์ขึ้นอยู่กับแพลตฟอร์ม อย่างไรก็ตามจะให้สาระสำคัญแบบอินไลน์แก่คุณเกี่ยวกับวิธีทำให้โซลูชันใช้งานได้สำหรับคุณ

  • คุณสามารถค้นหาตำแหน่งของ PowerShell บนคอมพิวเตอร์ของคุณโดยดำเนินการcd $pshome ในหน้าต่าง Powershell (ไม่ทำงานจากพรอมต์ DOS)
    • เส้นทางจะเป็นสิ่งที่ต้องการ (ตัวอย่าง) C:\Windows\System32\WindowsPowerShell\v1.0\
  • ชื่อไฟล์ที่จะนำการกำหนดค่าคือ: powershell.exe.configถ้าคุณPowerShell.exeกำลังถูกดำเนินการ (สร้างไฟล์กำหนดค่าถ้าจำเป็น)
    • หากPowerShellISE.Exeกำลังทำงานอยู่คุณจะต้องสร้างไฟล์กำหนดค่าสหายเป็นPowerShellISE.Exe.config

23
วิธีที่ถูกต้องที่จะทำแน่นอน สิ่งนี้จะเปลี่ยนแปลงพฤติกรรมของ Powershell เท่านั้นไม่ใช่แอป. NET อื่น ๆ ทุกเครื่องในเครื่องของคุณ ...
Erik A. Brandstadmoen

4
สิ่งนี้ใช้ได้ดี แต่มีผลกับ PowerShell ทั้งหมดของคุณ หากคุณต้องการฟังก์ชั่นการทำงานบางอย่างให้ทำสำเนาโฟลเดอร์ powershell จากนั้นแก้ไขไฟล์ที่นั่น
แมตต์

8
ฉันเพิ่มไฟล์ตามที่ระบุไว้ข้างต้น อย่างไรก็ตามฉันไม่สามารถเรียกใช้ PowerShell ด้วยไฟล์นั้นได้อีกต่อไป - ฉันได้รับข้อผิดพลาด "โวลุ่มสำหรับไฟล์ได้รับการแก้ไขจากภายนอกเพื่อให้ไฟล์ที่เปิดอยู่นั้นไม่สามารถใช้งานได้อีกต่อไป" ความคิดใด ๆ
JoshL

13
@JoshL - บนระบบ 64 บิตฉันได้พบว่า. exe.config ต้องเข้าสู่ SysWOW64 \ WindowsPowershell (โฟลเดอร์ 32 บิต) แม้ว่าคุณจะพยายามเรียกใช้ powershell 64 บิตก็ตาม มิฉะนั้นคุณจะได้รับข้อผิดพลาด 'เปลี่ยนแปลงจากภายนอก'
Sam

4
The powershell.exe.config จำเป็นต้องอยู่ในสองแห่ง .... C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ และ C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \
Jonesome Reinstate Monica

28

โปรดระมัดระวังในการใช้วิธีการลงทะเบียนคีย์ ปุ่มเหล่านี้เป็นทั้งตัวเครื่องและโอนย้ายแอปพลิเคชันทั้งหมดไปยัง. NET 4.0 อย่างforcibily

ผลิตภัณฑ์จำนวนมากไม่สามารถใช้งานได้หากต้องทำการอพยพอย่างตั้งใจและนี่คือเครื่องมือทดสอบและไม่ใช่กลไกคุณภาพการผลิต Visual Studio 2008 และ 2010, MSBuild , turbotax และโฮสต์ของเว็บไซต์, SharePointและอื่น ๆ ไม่ควรถูกแปลงโดยอัตโนมัติ

หากคุณต้องการใช้ PowerShell กับ 4.0 ควรทำตามแอปพลิเคชันด้วยไฟล์การกำหนดค่าคุณควรตรวจสอบกับทีม PowerShell ตามคำแนะนำที่ถูกต้อง นี่เป็นโอกาสที่จะทำลายคำสั่ง PowerShell ที่มีอยู่บางส่วน


จุดที่ดีมากเกี่ยวกับการใช้คีย์รีจิสทรี อย่างมีความสุขแอปพลิเคชันตัวเรียกใช้งานที่มีไฟล์กำหนดค่าทำงานได้ดี สคริปต์ของเราใช้คำสั่งระบบไฟล์และการเรียก. NET โดยตรงเป็นหลักและเราไม่พบปัญหาใด ๆ กับคำสั่งที่เสียหาย เนื่องจาก. NET 4 นั้นรองรับการทำงานกับ. NET 2.0 ส่วนใหญ่ฉันจะไม่คิดว่ามันจะมีคำสั่งที่ใช้งานไม่ได้ (แม้ว่ามันจะไม่เจ็บที่ต้องระวัง :)
จักรพรรดิ XLII

26

หากคุณต้องการดำเนินการคำสั่งบล็อกสคริปต์หรือไฟล์สคริปต์เดียวใน. NET 4 ให้ลองใช้Activation Configuration Files จาก. NET 4เพื่อเริ่มต้นอินสแตนซ์เดียวของ PowerShell โดยใช้ CLR เวอร์ชัน 4

รายละเอียดทั้งหมด:

http://blog.codeassassin.com/2011/03/23/executing-individual-powershell-commands-using-net-4/

ตัวอย่างโมดูล PowerShell:

https://gist.github.com/882528


21

หากคุณยังติดอยู่กับ PowerShell v1.0 หรือ v2.0 นี่คือความแตกต่างของฉันในคำตอบที่ยอดเยี่ยมของ Jason Stangroome

สร้างpowershell4.cmdที่ไหนสักแห่งบนเส้นทางของคุณด้วยเนื้อหาต่อไปนี้:

@echo off
:: http://stackoverflow.com/questions/7308586/using-batch-echo-with-special-characters
if exist %~dp0powershell.exe.activation_config goto :run
echo.^<?xml version="1.0" encoding="utf-8" ?^>                 > %~dp0powershell.exe.activation_config
echo.^<configuration^>                                        >> %~dp0powershell.exe.activation_config
echo.  ^<startup useLegacyV2RuntimeActivationPolicy="true"^>  >> %~dp0powershell.exe.activation_config
echo.    ^<supportedRuntime version="v4.0"/^>                 >> %~dp0powershell.exe.activation_config
echo.  ^</startup^>                                           >> %~dp0powershell.exe.activation_config
echo.^</configuration^>                                       >> %~dp0powershell.exe.activation_config
:run
:: point COMPLUS_ApplicationMigrationRuntimeActivationConfigPath to the directory that this cmd file lives in
:: and the directory contains a powershell.exe.activation_config file which matches the executable name powershell.exe
set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath=%~dp0
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe %*
set COMPLUS_ApplicationMigrationRuntimeActivationConfigPath=

สิ่งนี้จะช่วยให้คุณสามารถเปิดใช้งานอินสแตนซ์ของคอนโซล PowerShell ที่ทำงานภายใต้. NET 4.0

คุณสามารถเห็นความแตกต่างในระบบของฉันที่ฉันมี PowerShell 2.0 โดยตรวจสอบเอาต์พุตของสองคำสั่งต่อไปนี้ที่รันจาก cmd

C:\>powershell -ExecutionPolicy ByPass -Command $PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.5485
BuildVersion                   6.1.7601.17514
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1


C:\>powershell4.cmd -ExecutionPolicy ByPass -Command $PSVersionTable

Name                           Value
----                           -----
PSVersion                      2.0
PSCompatibleVersions           {1.0, 2.0}
BuildVersion                   6.1.7601.17514
CLRVersion                     4.0.30319.18408
WSManStackVersion              2.0
PSRemotingProtocolVersion      2.1
SerializationVersion           1.1.0.1

3
นี่คือคำตอบที่ดีที่สุดเนื่องจากเป็นการเปลี่ยนแปลงที่มีการแปลเป็นภาษาท้องถิ่นและไม่ทำการเปลี่ยนแปลงใด ๆ กับระบบอย่างต่อเนื่อง สิ่งที่ดี!
เซบาสเตียน

! ที่ยอดเยี่ยม คุณสามารถช่วยที่นี่ได้ไหม stackoverflow.com/questions/39801315/…
johny ทำไม

@TimLewis เป็นไปได้หรือไม่ที่จะส่งหลายข้อความไปยังอินสแตนซ์ ps4.cmd เดียวกันได้หรือไม่
johny ทำไม

@ johnywhy การส่งคำสั่งหลายคำสั่งไปยัง. cmd เหมือนกับการส่งคำสั่งหลายคำสั่งไปยัง. exe เพราะ. cmd ใช้% * เพื่อส่งผ่านพารามิเตอร์ทั้งหมดผ่านไปยัง. exe มันไม่ได้สร้างความแตกต่างอย่างไรก็ตามเนื่องจากคุณยังต้องระวังวิธีที่ cmd.exe แยกวิเคราะห์บรรทัดคำสั่งเมื่อมันส่งพารามิเตอร์เพื่อปฏิบัติการที่มันเปิดตัว ฉันจะดูคำถามสแตกล้นอื่น ๆ และที่อยู่เฉพาะของคุณ
ทิมลูอิส

ฉันพยายามใช้เทคนิคนี้ร่วมกับ -Version command line parameter docs.microsoft.com/en-us/powershell/scripting/core-powershell/…น่าเสียดายที่มันไม่ทำงาน PowerShell เวอร์ชันล่าสุดของฉัน (5.1.17134.407) ตามที่กำหนดจาก $ PSVersionTable.PSVersion เปิดตัวแทน
eisenpony

17

นี่คือเนื้อหาของไฟล์การกำหนดค่าที่ฉันใช้เพื่อรองรับแอสเซมบลี. NET 2.0 และ. NET 4:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- http://msdn.microsoft.com/en-us/library/w4atty68.aspx -->
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" />
    <supportedRuntime version="v2.0.50727" />
  </startup>
</configuration>

นอกจากนี้ต่อไปนี้เป็นเวอร์ชั่นที่เรียบง่ายของโค้ดที่เข้ากันได้กับ PowerShell 1.0 ที่ฉันใช้ในการรันสคริปต์ของเราจากอาร์กิวเมนต์บรรทัดรับคำสั่งที่ส่งผ่าน:

class Program {
  static void Main( string[] args ) {
    Console.WriteLine( ".NET " + Environment.Version );

    string script = "& " + string.Join( " ", args );
    Console.WriteLine( script );
    Console.WriteLine( );

    // Simple host that sends output to System.Console
    PSHost host = new ConsoleHost( this );
    Runspace runspace = RunspaceFactory.CreateRunspace( host );

    Pipeline pipeline = runspace.CreatePipeline( );
    pipeline.Commands.AddScript( script );

    try {
      runspace.Open( );
      IEnumerable<PSObject> output = pipeline.Invoke( );
      runspace.Close( );

      // ...
    }
    catch( RuntimeException ex ) {
      string psLine = ex.ErrorRecord.InvocationInfo.PositionMessage;
      Console.WriteLine( "error : {0}: {1}{2}", ex.GetType( ), ex.Message, psLine );
      ExitCode = -1;
    }
  }
}

นอกเหนือจากการจัดการข้อผิดพลาดพื้นฐานที่แสดงด้านบนแล้วเรายังแทรกtrapคำสั่งลงในสคริปต์เพื่อแสดงข้อมูลการวินิจฉัยเพิ่มเติม (คล้ายกับฟังก์ชั่นแก้ไขข้อผิดพลาดของ Jeffrey Snover )


10

คำตอบอื่น ๆ มาจากก่อนปี 2012 และพวกเขามุ่งเน้นไปที่ "แฮ็ค" PowerShell 1.0 หรือ PowerShell 2.0 เพื่อกำหนดเป้าหมายเวอร์ชันที่ใหม่กว่าของ. NET Framework และ Common Language Runtime (CLR)

อย่างไรก็ตามในขณะที่ได้รับการเขียนในการแสดงความคิดเห็นเป็นจำนวนมากตั้งแต่ปี 2012 (เมื่อ PowerShell 3.0 มา) เป็นทางออกที่ดีมากคือการติดตั้งรุ่นใหม่ล่าสุดของ PowerShell โดยอัตโนมัติจะกำหนดเป้าหมาย v4.0.30319CLR ซึ่งหมายความว่า. NET 4.0, 4.5, 4.5.1, 4.5.2 หรือ 4.6 (คาดว่าในปี 2015) เนื่องจากทุกรุ่นเหล่านี้มีการแทนที่แบบแทนที่กัน การใช้งาน$PSVersionTableหรือดูตรวจสอบการติดตั้ง PowerShell รุ่นด้ายถ้าคุณไม่แน่ใจรุ่น PowerShell ของคุณ

ในขณะที่เขียนรุ่นใหม่ล่าสุดของ PowerShell คือ 4.0 และสามารถดาวน์โหลดได้ด้วยกรอบงานการจัดการ Windows (การเชื่อมโยงการค้นหาของ Google)


2
ความต้องการของระบบสำหรับ Windows Management Framework 4.0 (คล้ายกับ 3.0) คือ: Windows 7, Windows Embedded Standard 7, Windows Server 2008 R2, Windows Server 2012
Peter Mortensen

9

ที่จริงแล้วคุณสามารถให้ PowerShell ทำงานโดยใช้. NET 4 โดยไม่กระทบกับแอปพลิเคชั่น. NET อื่น ๆ ฉันต้องทำเช่นนั้นเพื่อใช้คุณสมบัติ "โฮสต์" HttpWebRequest ใหม่อย่างไรก็ตามการเปลี่ยน "OnlyUseLatestCLR" ทำให้ Fiddler แตกเนื่องจากไม่สามารถใช้งานได้ภายใต้. NET 4

ผู้พัฒนา PowerShell เห็นได้ชัดว่าเกิดเหตุการณ์นี้ขึ้นและพวกเขาได้เพิ่มคีย์รีจิสทรีเพื่อระบุเวอร์ชันของ Framework ที่ควรใช้ ปัญหาเล็กน้อยหนึ่งคือคุณต้องเป็นเจ้าของคีย์รีจิสทรีก่อนที่จะเปลี่ยนเนื่องจากผู้ดูแลระบบไม่สามารถเข้าถึงได้

  • HKLM: \ Software \ Microsoft \ Powershell \ 1 \ PowerShellEngine \ RuntimeVersion (64 บิตและ 32 บิต)
  • HKLM: \ Software \ Wow6432Node \ Microsoft \ Powershell \ 1 \ PowerShellEngine \ RuntimeVersion (32 บิตบนเครื่อง 64 บิต)

เปลี่ยนค่าของคีย์นั้นเป็นรุ่นที่ต้องการ โปรดทราบว่าสแน็ปอินบางตัวอาจไม่โหลดอีกต่อไปเว้นแต่ว่าเข้ากันได้กับ. NET 4 (WASP เป็นสิ่งเดียวที่ฉันมีปัญหา แต่ฉันไม่ได้ใช้งานจริง ๆ ) VMWare , SQL Server 2008 , PSCX, Active Directory (Microsoft และQuest Software ) และ SCOM ทำงานได้ดี


+1 นี่เป็นทางเลือกที่สำคัญมาก (และดีกว่า) กว่ารายการ reg อื่น ๆ ซึ่งจะมีผลกับแอปพลิเคชัน. net ทั้งหมด แต่โซลูชันนี้มีผลเฉพาะกับ PowerShell เท่านั้น
Christian Mikkelsen

หลังจากใช้งาน "OnlyUseLatestCLR" Fiddler ของฉันก็เสียหายเช่นเดียวกับสคริปต์ PowerShell บางตัวที่ไม่ได้ทำงานอีกต่อไปเนื่องจากไม่สามารถติดต่อเซิร์ฟเวอร์บางตัวได้ ฉันเปลี่ยนค่ากลับเป็น 0 ด้วยตนเองใน regedt32 และตอนนี้ทุกอย่างก็ทำงานได้อีกครั้ง ขอบคุณ!
เนวิลล์

WASP, PSCX และ SCOM คืออะไร (ในบริบทนี้)
ปีเตอร์มอร์เทนเซ่น

7

หากคุณไม่ต้องการแก้ไขไฟล์รีจิสทรีหรือ app.config วิธีอื่นคือการสร้างแอปคอนโซล NET 4 แบบง่าย ๆ ที่เลียนแบบสิ่งที่ PowerShell.exe ทำและโฮสต์ PowerShell ConsoleShell

ดูตัวเลือก 2 - โฮสต์ Windows PowerShell ด้วยตัวคุณเอง

ก่อนอื่นเพิ่มการอ้างอิงไปยังSystem.Management.AutomationและMicrosoft.PowerShell.ConsoleHostแอสเซมบลีซึ่งสามารถพบได้ภายใต้% programfiles% \ Referenceแอสเซมบลี\ Microsoft \ WindowsPowerShell \ v1.0

จากนั้นใช้รหัสต่อไปนี้:

using System;
using System.Management.Automation.Runspaces;
using Microsoft.PowerShell;

namespace PSHostCLRv4
{
    class Program
    {
        static int Main(string[] args)
        {
            var config = RunspaceConfiguration.Create();
                return ConsoleShell.Start(
                config,
                "Windows PowerShell - Hosted on CLR v4\nCopyright (C) 2010 Microsoft Corporation. All rights reserved.",
                "",
                args
            );
        }
    }
}

6

เช่นเดียวกับตัวเลือกอื่นPoshConsoleล่าสุดมีไบนารีที่กำหนดเป้าหมายเป็น. NET 4 RC (ซึ่งทำงานได้ดีกับรุ่น RTM) โดยไม่มีการกำหนดค่าใด ๆ


1

ทำงานเพียงแค่ powershell.exe กับชุดตัวแปรสภาพแวดล้อมในการCOMPLUS_version v4.0.30319ตัวอย่างเช่นจาก cmd.exe หรือ. bat-file:

set COMPLUS_version=v4.0.30319
powershell -file c:\scripts\test.ps1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.