我想在v2模式下运行powershell脚本。没有包装脚本可以做到这一点吗?
例如,如果我可以使用两个文件,我现在可以这样做。
MainContent.ps1
write-output 'run some code'
Read-Host -Prompt "Scripts Completed : Press any key to exit"
Wrapper.ps1
powershell -version 2 -file 'MainContent.ps1'
这会有效,但我希望我不需要这个第二个包装文件,因为我正在创建一大堆这些ps1脚本,并且包装文件的数量会增加一倍我需要的脚本。
我希望我可以做这样的事情。
MainContent.ps1
Set-Powershell -version 2
write-output 'run some code'
Read-Host -Prompt "Scripts Completed : Press any key to exit"
稍后,我还希望每个脚本都要求一组凭据,而不使用包装文件。
这目前可能吗?
要清楚,我使用的是powershell的第2版
答案 0 :(得分:3)
如果您的唯一目标是避免创建单独的包装器脚本,则始终可以让脚本重新启动。以下脚本将始终使用PS 2.0版重新启动一次。
param([switch]$_restart)
if (-not $_restart) {
powershell -Version 2 -File $MyInvocation.MyCommand.Definition -_restart
exit
}
'run some code'
Read-Host -Prompt "Scripts Completed : Press any key to exit"
或者你可以让它有条件。仅当版本大于2.0时,此脚本才会使用版本2重新启动。
if ($PSVersionTable.PSVersion -gt [Version]"2.0") {
powershell -Version 2 -File $MyInvocation.MyCommand.Definition
exit
}
'run some code'
Read-Host -Prompt "Scripts Completed : Press any key to exit"