我正在操作一个测试,其中使用多个.replace命令来格式化文本。
例如
$str="hello%worldZZZniceZZZtoZZZmeet"
$str.Replace("%","`n").replace("ZZZ","`n")
Run Code Online (Sandbox Code Playgroud)
控制台中的输出很好,但我需要迭代每一行。问题是$str.count = 1,即使在控制台中显示良好,powershell 仍将这个字符串视为一行。任何想法?
如果我将字符串输出到文件,然后读取该文件,它会读取新行,但我确信有更好的方法,而不是输出到文件,然后再次读回
我有一个很长的剧本。我有一个记录功能:
function Log ([string]$Content){
$Date = Get-Date
Add-Content -Path $LogPath -Value ("$Date : $Content")
}
Run Code Online (Sandbox Code Playgroud)
在脚本的某些时候,我需要并行运行作业。我有一个计算机名称列表,我需要对每个计算机名称使用 psexec。这应该作为并行运行的作业来完成
Start-Job -ScriptBlock {
Log "$line Has called"
$Program_List = gc $USERS_DB_PATH\$line.txt | select -Skip 1
if (Test-Connection $line -Quiet) {
ForEach ($program in $Program_List){
Log "$line $program"
#"line $line bot is $bot pwd is $pwd"
psexec \\"$line" -u bla.local\"$bot" -p $pwd cmd bla
}
}
else{
Log "Cannot Connect to $line"
}
}
#Remove-Item "$USERS_DB_PATH\$line.txt"
}
Run Code Online (Sandbox Code Playgroud)
我知道这与范围有关,但是如何使这个脚本块看到函数 Log 和所有必要的变量?他们都空了
我有看起来像这样的文件:filename.bla_1
当然,我不知道文件名中是否包含“_”。可能是 file_name.bla_1。我想编写一个函数来获取文件名并删除末尾的 _#。filename.bla_1 将是 --> filename.bla
echo $filename | rev | cut -d "_" -f2 | rev
Run Code Online (Sandbox Code Playgroud)
如果文件名中没有“ ”,我会这样做,但我想确保这也适用于带有“ ”的文件名