所以我是PowerShell的新手,我正在尝试让这个函数工作。我有2个ValidateSet数组,有3个参数。这些参数应该用来更改文件路径,并将它们从一个服务器复制到另一个服务器。由于某种原因,我一直得到参数的命令提示符,而不是它们通过。我猜这是foreach对象的问题,但我很茫然。但是,它是为$archivePath工作的。我是新来的,所以请温柔点...TIA
param(
[Parameter(Mandatory = $true)]
[ValidateSet("One", "Two", "Three")]
[string[]]$Channel
,[Parameter(Mandatory = $true)]
[Alias('Phase')]
[ValidateSet("Devl", "Test", "Prod")]
[string[]]$Phase
,[Parameter(Mandatory = $false)]
[string]$FilenameFilter = '.csv'
,[Parameter(Mandatory = $false)]
[switch]$CreateTrigger
)
function ExitWithCode { param($exitcode) $host.SetShouldExit($exitcode); exit $exitcode }
$exitcode = 0
try {
# Get a list of files on the host server.
#
$files = Get-ChildItem -File -Path "\\ServerName\d\Extract\$Phase\FileTransfer\$Channel\Outbound"
# Destination directory.
#
$LocalPath = "\\ServerName\d\Extract\$Phase\FileTransfer\$Channel\Outbound" #for testing
# Set up folder name for Archive server. Formated as YYYYMMDDTHHMMSS YYYYMMDD --> Var_Date, 'T' --> Var_Constant & HHMMSS --> Var_Time
#
$Var_Date = get-date -UFormat "%Y-%m-%d"
$Var_Constant = 'T'
$Var_Time = get-date -UFormat "%H-%M-%S"
$Var_Fulldate = $Var_Date + $Var_Constant + $Var_Time
$ArchivePath = $env:USERPROFILE + "\Desktop\$Channel\$Var_Fulldate" #For testing
New-Item -Type Directory -Path $ArchivePath
if (-not (Test-Path -Path $ArchivePath -ErrorAction SilentlyContinue)) { $ArchivePath = $Env:TEMP }
#Look for files in Outbound directory and remove
Get-ChildItem -File -Path $LocalPath | ForEach-Object { Copy-Item $_.FullName } #Using copy instead of remove for test
$FileCount = 0
Write-Output Try2 #for testing
pause #for testing
foreach ($file in $files) {
if ((-not $file.IsDirectory) -and ($File.FullName -match $FilenameFilter)) {
$localfilename = $LocalPath + $file.Name
if (Test-Path $localfilename) { Copy-Item $localfilename }
try {
Copy-Item -Path $(Join-Path -Path $LocalPath -ChildPath $file.Name) -Destination $ArchivePath
#Remove files from outbound since they've been archived
#
#Remove-Item -Path $file.FullName
"Retrieved file $file"
$FileCount++
}
catch {
Write-Output Try13 #for testing
$exitcode = 13
"failed to retrieve $file"
}
finally {
$error.Clear()
}
}
}
}
catch {
Write-Output Try3
$exitcode = 14
}
finally {
Write-Output Try4
$error.Clear()
}
if ($CreateTrigger -and ($exitcode -eq 0) -and ($FileCount -gt 0)) {
New-Item -Path "$LocalPath\Trigger_File.trg" -ItemType File | Out-Null
}
#ExitWithCode $exitcode # take out for testing
输出:
PS C:\Users\me> \\Server\blah\USERS\me\My Documents\Folder\Get-FileName_t4.ps1
cmdlet Get-FileName_t4.ps1 at command pipeline position 1
Supply values for the following parameters:
Channel[0]: Three
Channel[1]:
Phase[0]: Devl
Phase[1]:
Directory: C:\Users\me\Desktop\Three
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 11/22/2019 12:17 PM 2019-11-22T12-17-23
Try2
Press Enter to continue...:
Retrieved file File1_20191122080912.csv
Retrieved file File2_20191122080922.csv
Retrieved file File3_20191122080925.csv
Retrieved file File4_20191122080932.csv
Retrieved file File5_20191122080933.csv
Retrieved file File6_20191122080933.csv
Try4
您会得到提示,因为您没有传入这些参数,但是mandatory=$true
设置在您得到提示的参数上。由于您的会话是交互式的,它要求您输入正确的值。如果不希望得到提示,请提供强制参数:
"\\Server\blah\USERS\me\My Documents\Folder\Get-FileName_t4.ps1" -Channel Three -Phase Dev1
我注意到了另外几件事:
mandatory=$false
,因为mandatory
默认为$false
-phase
参数设置phase
别名也是多余的我当前正在尝试使用脚本列出远程计算机上已安装的程序。 我不仅要捕获远程程序列表,而且要捕获一个系统直接向前的版本。 但是,当我在多个系统中循环时,就会完全丢失和字段。
编辑:底部的工作代码 我对编程相对较新,我正在试图理解为什么这不起作用。我决定通过一个函数而不是来处理卡片,以保持它尽可能模块化。这是我下面的代码;我知道错误与指针有关,但我不明白我做错了什么。 工作代码:
在一个DOM操作练习中,我学习了如何使用纯JavaScript创建HTML元素。也就是像这样的东西: 我必须创建一个函数,允许用户将对象作为参数传入,以设置元素的属性。这个对象包含任意数量的键(属性)和值(属性值)。即属性可以是“src”,值可以是“image.jpg”。类似的东西。用户可以在调用函数时向此对象传递任意多的属性。 附带说明,对代码和JS都很新,请原谅我:P
问题内容: 我试图将对象数组从js传递到rails 滑轨 在这里,记录器语句总是让我把 我期望下面的登录轨道。 问题答案: 您应该在Javascript中使用Javascript,该Javascript以数组或哈希作为参数(因为它们是唯一有效的JSON构造)。它返回一个形式,该形式是序列化为JSON的Javascript对象。 在Ruby方面,您将收到JSON编码的字符串,因此需要(在Rails中
如何获得[0]。。。,[4] 下面对象的参数值? 下面看到的对象是EntityManager的结果。createNativeQuery()。我想使用这些值创建一个POJO。我知道我可以用EntityManager。createNativeQuery(“SQL查询”,MyPOJO.class),但它只返回ID为的POJO,所有其他变量都为null?!我对如何获取物体的参数很感兴趣。 不可能将返回的对
当我试图在调试模式下运行eclipse时,我遇到了一个问题。我在eclipse中将app jar添加到Tomcat6.0中,当我试图调试或启动tomcat服务器时,它会一次又一次地抛出这个错误。我尝试在管理模式下运行eclipse,但即使这样也没有帮助。PFB错误详细信息! 正在发布配置...将文件复制到C:/software/software/apache-tomcat-6.0.41/backu