Tag: 调用命令

使用脚本的参数调用第二个脚本

我相对较新的PowerShell,并有一个脚本,读取configuration文件,导致一组名称值对,我想作为parameter passing给另一个PowerShell脚本中的函数。 我不知道在devise时将在这个configuration文件中放置什么参数,所以在我需要调用第二个PowerShell脚本的时候,我基本上只有一个variables,它有第二个脚本的path,第二个脚本该variables是传递给pathvariables中标识的脚本的参数数组。 所以包含第二个脚本path($ scriptPath)的variables可能具有如下的值: "c:\the\path\to\the\second\script.ps1" 包含参数($ argumentList)的variables可能如下所示: -ConfigFilename "doohickey.txt" -RootDirectory "c:\some\kind\of\path" -Max 11 我如何从这种状态中获得$ argumentList的所有参数来执行script.ps1? 我希望这个第二个脚本的任何写入主机命令对于第一个脚本被调用的控制台是可见的。 我已经尝试了点源,Invoke-Command,Invoke-Expression和Start-Job,但是我还没有find一种不会产生错误的方法。 例如,我认为最简单的第一条路线是尝试开始工作,如下所示: Start-Job -FilePath $scriptPath -ArgumentList $argumentList …但是这个失败,这个错误: System.Management.Automation.ValidationMetadataException: Attribute cannot be added because it would cause the variable ConfigFilename with value -ConfigFilename to become invalid. …在这种情况下,“ConfigFilename”是由第二个脚本定义的参数列表中的第一个参数,我的调用显然试图将其值设置为“-ConfigFilename”,显然是为了通过名称来标识参数,没有设定它的价值。 我错过了什么? 编辑: 好的,这是一个名为invokee.ps1的文件,即将被称为脚本的模型 Param( [parameter(Mandatory=$true)] [alias("rc")] [string] [ValidateScript( {Test-Path $_ -PathType […]

如何使用Invoke-Command传递命名参数?

我有一个脚本,我可以通过Invoke-Command远程运行 Invoke-Command -ComputerName (Get-Content C:\Scripts\Servers.txt) ` -FilePath C:\Scripts\ArchiveEventLogs\ver5\ArchiveEventLogs.ps1 只要我使用默认参数,它工作正常。 但是,脚本有2个名为[switch]的参数(-Debug和-Clear) 如何通过Invoke-Command传递参数? 我试过-ArgumentList,但我得到的错误,所以我必须有语法错误或什么的。 任何帮助是极大的赞赏。

如何使用Invoke-Command cmdlet传递variables?

我必须从某些服务器获取事件日志,而且我不想读取每个find的服务器的凭据。 我试图通过使用ArgumentListparameter passing我的variables,但我不工作。 这是我的代码: $User = Read-Host -Prompt "Enter Username" $Password = Read-Host -Prompt "Enter Password" -AsSecureString $BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) $UnsecurePassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) Get-ADComputer -Filter "OperatingSystem -Like '*Server*'" | Sort-Object Name | ForEach-Object{ if($_.Name -like '*2008*'){ Invoke-Command -ComputerName $_.Name -ArgumentList $User, $UnsecurePassword -ScriptBlock { net use P: \\Server\dir1\dir2 /persistent:no /user:$User $UnsecurePassword Get-EventLog -LogName System -After […]