我确实通过Microsoft组策略定义了在计算机启动时运行Powershell脚本。另外,我还要求在不保存凭据的情况下按计划任务运行Powershell脚本。 在这两种情况下,我都有相同的问题...
我想运行Citrix Powershell-Command(PSSnapIn),如:
Set-BrokerMachine -MachineName "domain.local\$env:COMPUTERNAME" -AdminAddress "RemoteServer.domain.local" -InMaintenanceMode $True
手册: https://citrix.github.io/delivery-controller-sdk/Broker/Set-BrokerMachine/
当然,只有拥有权限的用户才能运行这些Citrix命令。我可以授予域用户运行命令“ Set-BrokerMachine”的权限,但是在上述方案中,PowerShell脚本在 system-user 的上下文中运行。
我确实通过PSExec模拟了系统用户: Error running as System-User
我的脚本当然会做其他事情,我想让它们以系统用户身份运行,但是现在我正在寻找一种干净的解决方案来使那些Citrix命令运行。
如果可能的话,我不想在脚本中保存凭据。
编辑#1:
我将能够解决以下代码:
$Username = "MySpecialUser"
$Password = 'MyPassword'
$SecurePassword = ConvertTo-SecureString $Password -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential $Username, $SecurePassword
$Result = Invoke-Command -Session ( New-PSSession -ComputerName "RemoteServer.domain.local" -Credential $Credential ) -ScriptBlock {
Add-PSSnapin Citrix*
Set-BrokerMachine -MachineName "domain.local\$args" -InMaintenanceMode $True
} -ArgumentList $env:COMPUTERNAME -HideComputerName
Remove-PSSession -InstanceId $Result.RunspaceId
我不喜欢这样,因为:
是否有更好/更清洁的解决方案?有什么想法吗?