English 中文(简体)
CanShell ConsoleShell on .NET 4.0 approved for production?
原标题:Is the PowerShell ConsoleShell on .NET 4.0 approved for production?

在阅读了其他几个博客员额和文章(见下面的参考资料)之后,似乎有几种办法在4.0号电荷上运行,但很少能用于我们的目的。 由于我们如何使用我们的软件,我们不能更新登记册或增加申请。 这使我们有两种选择,即使用<代码>ConsoleShell <>/code>或高于PSHost,从而产生我们自己的损失。 由于第一种选择是简单明了的,我们希望能够使用第一种选择:ConsoleShell,但想知道我们可能遇到哪些问题,以及是否建议这样做。

Reference

其他问题 我已经看到,你可以采用以下方法,将PowerShell编为4.0。 这两种方法似乎都没有得到微软公司的正式制裁,但以下第一种方法被包含在。 微软连接问题。

4.0版的电壳管理办法似乎包括:

  1. Update the app.config to include .NET 4.0 as supported
  2. Add a registry setting to switch the version
  3. Use ConsoleShell to host your own PowerShell Console
  4. Implement your own PowerShell host, PSHost , as done by PoshConsole or Nuget
最佳回答

既然没有得到正式批准(我知道),那么没有人可以批准。 如果您的假想奏效并经过合理的测试,批准和使用。

我将PowerShell使用4.0,但选择4,也使用选择1(我不喜欢选择2,个人)。 因此,我批准了它,无论是生产还是非生产,我还是使用它。 由于以下两个原因,我仍在使用电荷2.0: (1) PowerShell.exe开始较快(特别是X64);2)以确保我国部分电力供应的发展与网络2相符。

另一种想法。 如果在2.NET 2.0(其中有一些问题,的确见“联通”)的PowerShell公司没有适当开展工作,那么“批准生产”本身并不大有助益。 人们必须克服现有的问题,网络2或NET 4并不重要。

P.S.,我应该提到,我也尝试了选择3。 我没有发现适合在我的假设情景中使用过的案例。 但是,我也没有发现在使用ConsoleShell方面有任何问题。

P.P.S 还有一个选择。 PowerShell.exe,将其改为MyConsoleShell.exe,与MyConsoleShell.exe.config configuised for NET 4. 既然你要单独申请,那么为什么不考虑这一点?

问题回答

我说的是权力的范畴,但我把这一点放在一起,强迫使用任意文字。

# Place this at the top of your script, and it will run as a .NET 4 ps script.
# #############################################################################
if ($PSVersionTable.CLRVersion.Major -lt 4) { try {
    $cfgPath = $Env:TEMP | Join-Path -ChildPath ([Guid]::NewGuid())
    mkdir $cfgPath | Out-Null
    "<configuration><startup useLegacyV2RuntimeActivationPolicy= true ><supportedRuntime version= v4.0 /></startup></configuration>" | Set-Content -Path $cfgPathpowershell.exe.activation_config -Encoding UTF8
    $darkMagic =  COMPLUS_ApplicationMigrationRuntimeActivationConfigPath 
    $old = [Environment]::GetEnvironmentVariable($darkMagic)
    [Environment]::SetEnvironmentVariable($darkMagic, $cfgPath)
    & powershell.exe $MyInvocation.MyCommand.Definition $args
} finally {
    [Environment]::SetEnvironmentVariable($darkMagic, $old)
    $cfgPath | Remove-Item -Recurse
    return
}}
# ##############################################################################

# My script starts here:
echo "Your arguments are: $args "
echo "The CLR Major Version is : $($PSVersionTable.CLRVersion.Major)"

该表在文字的开头处进行了检查,如果它没有4.0,它就会制作一个配置文件,设定一个环境变数,并重新管理权力书,以便其运行。 NET 4.0。

它对我来说,它确实会受到大约第二或那样的启动时间处罚,但至少可以做到:





相关问题
Mutually exclusive powershell parameters

SCENARIO I m writing a cmdlet for Powershell 2.0 using Visual Studio 2008 and .NET 3.5 the cmdlet requires 3 arguments. my intended grammar of the cmdlet is something like this: cmdletname [foo|...

Run a program from PowerShell with timeout

I ll write a script that runs a program and wait for it finished. But if the program is not finished within a specified time I want that the program is killed.

How to transpose data in powershell

I have a file that looks like this: a,1 b,2 c,3 a,4 b,5 c,6 (...repeat 1,000s of lines) How can I transpose it into this? a,b,c 1,2,3 4,5,6 Thanks

Powershell v2 remoting and delegation

I have installed Powershell V2 on 2 machines and run Enable-PsRemoting on both of them. Both machines are Win 2003 R2 and are joined to the same active directory domain and I can successfully run ...

PowerShell -match operator and multiple groups

I have the following log entry that I am processing in PowerShell I m trying to extract all the activity names and durations using the -match operator but I am only getting one match group back. I m ...

热门标签