我必须还原大约60个不同大小的SQL数据库。我在谷歌上找到了一个脚本来互相恢复所有数据库,只是从我的文件夹中按1个1个选择它。我没有那么成功,可能是因为我对SQL等不熟悉。
它可以在powershell或sql命令行中完成,我现在发现的是这样的:
RESTORE DATABASE [db1] FROM DISK = N'C:\folder\db1.bak' WITH FILE = 1, NOUNLOAD, STATS = 10
GO
RESTORE DATABASE [db2] FROM DISK = N'C:\folder\db2.bak' WITH FILE = 1, NOUNLOAD, STATS = 10
GO
Run Code Online (Sandbox Code Playgroud)
因此,我要做的是从某个文件夹中获取文件名,并将“ db1.bak”等替换为我刚从文件夹中选择的名称,然后运行脚本。
我知道必须有一个更聪明的方法,或者是否有可能将许多.bak文件“加载”到SSMS中,以便程序将彼此依次运行?
我用powershell构建了一个小工具,我通过批处理文件打开它.批处理文件具有以下内容:
powershell -file "D:\scripts\Powershell\xxx.ps1"
Run Code Online (Sandbox Code Playgroud)
现在它打开我的工具,但始终在后台显示命令提示符.我希望在运行我的文件后隐藏CMD.
怎么实现呢?我试过-hidden
但是我的整个程序都被隐藏了:D
谢谢
我现在在编写,窃取和修改脚本方面做得更好但在这里我有点困难.我的脚本汇总了特定文件夹中的文件并对其进行了计数.像这样 :
{
function alljournals
{
$colItems = (get-childitem "$targetfolder" -include *.xlsx* -recurse | measure-object -property length -sum)
write-host "Collected all .xlsx files from all ImportJournal folders" -foregroundcolor "green"
"Number of files: "+ $colItems.count + [Environment]::NewLine + "Size of all files "+"{0:N2}" -f ($colItems.sum / 1MB) + " MB"
}
alljournals
}
Run Code Online (Sandbox Code Playgroud)
使用write-host列出该文件夹中所有文件的最智能方法是什么?我试着把一个写主机$ colitems.Fullname放在没有好结果的地方.
我知道我可以轻松地将文件放在一个循环中,而不是使用foreach并显示文件名.但为此,我必须改变一切.那有办法吗?
现在它显示的内容如下:
Collected all .xlsx files from all Importjournalfolders
Number of files 15
Size of all files: 13,3mb
Run Code Online (Sandbox Code Playgroud)
在输出之前我需要的是具有路径的所有文件的列表
任何想法或提示?
我有一个小的 powershell 脚本,可以远程从服务器收集指标。通常调用函数来收集 CPU / 内存 / HDD 信息。
我从文本文件中提取服务器,并为每台机器调用函数。
foreach ($i in Get-Content "C:\Servers.txt")
{{"=========================="; $i + "`n" + "==========================";
"Number of CPU Cores" ; CPU-Info ; "Memory in GB" ; Memory-Info
; "HDDs in GB" ; HDD-Size }
Run Code Online (Sandbox Code Playgroud)
首先,我尝试使用 outfile 所有内容,out-file
但当然每个新输入都会覆盖我的文件。有没有办法临时存储输出并以一种好的方式输出它?
你会推荐什么?也许有更顺畅的方式来做到这一点?
powershell scripting powershell-2.0 powershell-3.0 powershell-4.0
我刚写了一个小脚本,显示了我选择的最新事件日志.
现在我想将输出存储在一个字符串中,但我没有设法做到这一点.
这是我的功能:
function geteventlog
{
get-eventlog -logname System -EntryType Error -newest 2 | Select-Object message,source | fl *
}
Run Code Online (Sandbox Code Playgroud)
Powershell 2.0
我仍然对一切都很新,现在我正在尝试验证我的输入SQL.
我的powershell脚本允许我查看一些我想要在选定数据库中输入的变量.我需要的是检查条目是否已存在.如果它存在,我的脚本将停止.
脚本部分:
if exists(select * from [DB1].dbo.[table1]
where Name = '$variable1')
"stop script but how?"
else
insert into ......
Run Code Online (Sandbox Code Playgroud)
所以我需要一些东西来代替"停止脚本但是如何?" 不知何故 :)
powershell ×4
batch-file ×1
scripting ×1
sql ×1
sql-server ×1
ssms ×1
store ×1
string ×1
validating ×1