這是我的第一個 powershell 腳本。
我知道有些特定的事情可能會有所不同,我只是不知道該怎么做。
就像 中的Set-ScheduledTask重復 3 次switch,例如。
我希望我知道如何在交換機外部“實體化”任務物件并在內部添加/修改屬性(引數?),呼叫它在腳本的最后一行執行。
好吧,非常感謝任何幫助。
#Requires -RunAsAdministrator
# script parameters
[CmdletBinding(SupportsShouldProcess)]
param (
[ValidateSet('askme', 'hardcoded', 'system')]
[string]$taskrunner = 'system'
)
# print extra info on screen
$VerbosePreference = "Continue"
# clear screen
Clear-Host
# i always work from the script directory
Set-Location $PSScriptRoot
"
---
Running $($MyInvocation.Line)
---
** description in portuguese about what the script is suposed to do **
Este script importa um xml (previamente exportado do agendador de tarefas)
e agenda esta tarefa simulando um servico, dispensando o logon do usuario.
---
"
$taskname = 'sync-owncloud-as-a-service'
$taskxml = (Get-Content "$taskname.xml" | Out-String)
Register-ScheduledTask -Force -TaskName $taskname -xml $taskxml
switch ($taskrunner) {
'askme' {
$credential = Get-Credential -Message 'account credentials to run the task' -Title '--- ATENCAO ---'
$taskuser = $credential.UserName
$taskpassword = $credential.GetNetworkCredential().Password
Set-ScheduledTask -TaskName $taskname -User $taskuser -Password $taskpassword
}
'hardcoded' {
$taskuser = 'corp\nonprivilegeduser'
$taskpassword = 'verystrongpassaword'
Set-ScheduledTask -TaskName $taskname -User $taskuser -Password $taskpassword
}
'system' {
$taskprincipal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Set-ScheduledTask -TaskName $taskname -Principal $taskprincipal
}
Default {
'** how do i get here? **'
Write-Error "Parameter $_ does not apply to this script"
}
}
# print task info (check if its ok)
Get-ScheduledTaskInfo $taskname
編輯:有些術語可能聽起來有誤,因為我不是英語母語人士。如果我沒有理解,請隨時編輯我的問題或讓我重新措辭。
uj5u.com熱心網友回復:
祝賀你的第一個腳本。你可能在這里尋找的是噴濺。
# initialize parameters for Set-ScheduledTask
$params = @{
TaskName = $taskname
}
# configure parameters
switch ($taskrunner) {
'askme' {
$credential = Get-Credential -Message 'account credentials to run the task' -Title '--- ATENCAO ---'
$params["User"] = $credential.UserName
$params["Password"] = $credential.GetNetworkCredential().Password
}
'hardcoded' {
$params["User"] = 'corp\nonprivilegeduser'
$params["Password"] = 'verystrongpassaword'
}
'system' {
$params["Principal"] = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
}
Default {
throw "Parameter $_ does not apply to this script"
}
}
# call Set-ScheduledTask once with the configred parameters
Set-ScheduledTask @params
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/323335.html
