小编4oo*_*oo4的帖子

Win10 Powershell - 简单If/Elseif取决于条件订单?

我正在尝试编写一个检查操作系统主要版本的部署脚本,然后根据该命令运行命令.我可以抓住它[System.Environment]::OSVersion.Version.Major,但当我尝试在if/elseif语句中使用它时,我总是得到第一个条件,并且变量以某种方式变化.

所以我正在测试的代码就是这个(使用Windows 10机器):

$OS_VERSION=$([System.Environment]::OSVersion.Version.Major)

if ($OS_VERSION = 6) {
  Write-Output "OS Version is $OS_VERSION"
  # Do stuff...
} elseif ($OS_VERSION = 10) {
  Write-Output "OS Version is $OS_VERSION"
  # Do different stuff..
}
Run Code Online (Sandbox Code Playgroud)

我注意到,当我按预期运行条件的顺序时,更令人沮丧的是,该语句在Windows 7机器上运行得非常好.

这是Powershell的一个错误/怪癖我错过了,还是我做了一些愚蠢的事情?

syntax powershell conditional

3
推荐指数
2
解决办法
236
查看次数

计划任务 Powershell 脚本 - 作为用户帐户运行正常,但不能作为系统运行

我正在尝试将 Powershell 脚本作为SYSTEM帐户作为计划任务运行,并且该任务运行正常,但该脚本运行不正确,因为它没有加载一些以 SYSTEM 身份运行时所需的 Citrix Powershell 管理单元,但运行正常作为我的用户帐户。

该脚本会检查加载 Citrix 管理单元,但这些管理单元在作为SYSTEM.

if ((Get-PSSnapin "Citrix.Common.Commands" -EA silentlycontinue) -eq $null) {
try { Add-PSSnapin Citrix.* -ErrorAction Stop }
catch { write-error "Error Citrix.* Powershell snapin"; Return }
Run Code Online (Sandbox Code Playgroud)

我需要做什么特别的事情才能正确加载这些管理单元吗?我打电话喜欢这个剧本,如果它事项:powershell.exe -executionpolicy bypass -file C:\path\to\script.ps1

编辑:从运行 (Get-PSSnapin -registered).countSYSTEM和我的用户帐户,我可以看到管理单元已正确加载,但仍然无法弄清楚为什么脚本的行为不同。

操作系统是Server 2016,版本1607,这是脚本:https : //gist.github.com/4oo4/85cec464e123d7f2793745e662d6e7ab

powershell

1
推荐指数
1
解决办法
2221
查看次数

标签 统计

powershell ×2

conditional ×1

syntax ×1