使用 powershell 在远程机器上创建计划任务
Creating a scheduled task on a remote machine with powershell
我遇到了一个问题,当我尝试在我域中的远程计算机上创建计划任务时收到拒绝访问错误。奇怪的是,当我在 powershell 中使用 "New Remote Powershell Tab" 按钮和 运行 我的代码时,它 运行 完美无缺。但是,我似乎无法通过 运行 正常使用 powershell 脚本来复制它。我有域管理员凭据,我用它来创建与远程计算机的会话,但这似乎并不重要。有没有办法复制我在使用远程 powershell 选项时似乎获得的权限?
function Install {
$hostname = Read-Host -Prompt "Enter hostname"
echo 'Testing connection...'
If(!(Test-Connection -ComputerName $hostname -Count 1 -quiet)){
echo "`n"
echo 'There was an issue connecting to this computer.'
pause
Install
}
echo 'Connection successful!'
Get-Service -Name WinRM -ComputerName $hostname | Start-Service
$cd = Convert-Path .
Copy-Item -Path "$cd\Install.bat" -Destination "\$hostname\C$\Install.bat"
New-PSSession -ComputerName $hostname -Credential *
$gettime = (Get-Date).AddMinutes(1)
$run = $gettime.ToString('HH:mm')
$action = New-ScheduledTaskAction -Execute 'C:\Test'
$trigger = New-ScheduledTaskTrigger -Once -At $run
$principal = New-ScheduledTaskPrincipal -GroupID "BUILTIN\Administrators" -RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -TaskName "Install" -Description "Test"
pause
}
Install
脚本中 New-PSSession -ComputerName $hostname -Credential *
的意图是什么?
如果您尝试在远程机器上创建计划任务,请为本地机器创建脚本,一旦它在本地机器上运行,然后将其放入 Scriptblock 并使用 Invoke-Command
[=13= 调用]
$Credes = Get-Credential
Invoke-Command -ComputerName $hostname -Credential $Credes -Scriptblock {
$action = New-ScheduledTaskAction -Execute 'C:\Test'
$trigger = New-ScheduledTaskTrigger -Once -At $run
$principal = New-ScheduledTaskPrincipal -GroupID "BUILTIN\Administrators" -RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -TaskName "Install" -Description "Test"
}
我遇到了一个问题,当我尝试在我域中的远程计算机上创建计划任务时收到拒绝访问错误。奇怪的是,当我在 powershell 中使用 "New Remote Powershell Tab" 按钮和 运行 我的代码时,它 运行 完美无缺。但是,我似乎无法通过 运行 正常使用 powershell 脚本来复制它。我有域管理员凭据,我用它来创建与远程计算机的会话,但这似乎并不重要。有没有办法复制我在使用远程 powershell 选项时似乎获得的权限?
function Install {
$hostname = Read-Host -Prompt "Enter hostname"
echo 'Testing connection...'
If(!(Test-Connection -ComputerName $hostname -Count 1 -quiet)){
echo "`n"
echo 'There was an issue connecting to this computer.'
pause
Install
}
echo 'Connection successful!'
Get-Service -Name WinRM -ComputerName $hostname | Start-Service
$cd = Convert-Path .
Copy-Item -Path "$cd\Install.bat" -Destination "\$hostname\C$\Install.bat"
New-PSSession -ComputerName $hostname -Credential *
$gettime = (Get-Date).AddMinutes(1)
$run = $gettime.ToString('HH:mm')
$action = New-ScheduledTaskAction -Execute 'C:\Test'
$trigger = New-ScheduledTaskTrigger -Once -At $run
$principal = New-ScheduledTaskPrincipal -GroupID "BUILTIN\Administrators" -RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -TaskName "Install" -Description "Test"
pause
}
Install
脚本中 New-PSSession -ComputerName $hostname -Credential *
的意图是什么?
如果您尝试在远程机器上创建计划任务,请为本地机器创建脚本,一旦它在本地机器上运行,然后将其放入 Scriptblock 并使用 Invoke-Command
[=13= 调用]
$Credes = Get-Credential
Invoke-Command -ComputerName $hostname -Credential $Credes -Scriptblock {
$action = New-ScheduledTaskAction -Execute 'C:\Test'
$trigger = New-ScheduledTaskTrigger -Once -At $run
$principal = New-ScheduledTaskPrincipal -GroupID "BUILTIN\Administrators" -RunLevel Highest
Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -TaskName "Install" -Description "Test"
}