脚本顶部的变量为New-PSDrive
定义了几个命令/变量,以及连接和安装。
在此之后,创建一个函数来打开文本文件并从中提取信息。我知道这部分有效,因为我在其他两个脚本中使用它。
最后,脚本执行第一个变量中的命令。
脚本将显示为成功运行,但检查远程计算机显示没有任何反应。
在执行任何此类活动之前,远程计算机上有一个针对它运行的脚本:
完成这些步骤后,运行以下脚本安装一个软件。
$eAudIT2014V2Install = {
$eAudIT2014V2password = ConvertTo-SecureString "PasswordHere" -AsPlainText -Force
$eAudIT2014V2cred = New-Object System.Management.Automation.PSCredential('domain\user', $eAudIT2014V2password)
$eAudIT2014V2drive = New-PSDrive -Name eAudIT2014V2 -PSProvider FileSystem -Root "\\Server\Share" -Credential $eAudIT2014V2cred
$eAudIT2014V2job = Start-Job {"eAudIT2014V2:\Setup.cmd"}
Wait-Job $eAudIT2014V2job
Receive-Job $eAudIT2014V2job
}
Function Get-OpenFile($initialDirectory) {
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.InitialDirectory = $initialDirectory
$OpenFileDialog.ShowDialog()
$OpenFileDialog.Filename
$OpenFileDialog.ShowHelp = $true
}
$InputFile = Get-OpenFile
if ($InputFile -eq "Cancel") {
Write-Host "Canceled By User"
exit
} else {
$Computers = @(Get-Content -Path $InputFile)
}
foreach ($computer in $computers) {
Write-Host "Installing eAudIT 2014V2 on Selected Computers"
Invoke-Command $eAudIT2014V2Install
}
我注意到如果我告诉这个脚本运行像notepad.exe这样的基本内容,则会在机器上启动dllhost进程,但记事本从不这样做。我做错了什么?
答案 0 :(得分:3)
答案很简单。如果您没有告诉Invoke-Command
cmdlet您要在哪个计算机上执行代码,那么您的所有脚本都是徒劳的。因为它只是迭代循环并在本地计算机上多次调用该命令X次。您需要将第二行更改为最后一行,以指定要在其上执行代码的计算机:
Invoke-Command $eAudIT2014V2Install -ComputerName $computer