要求:我正在尝试使用以下代码在10服务器中创建BKP文件夹,但有些人不知道如何在服务器中创建新文件夹。
foreach ($instance in Get-Content "C:\servers\List.txt")
{
$local = Get-Location;
$final_local = "C:\BKP";
if (!$local.Equals("C:\"))
{
cd "C:\";
if ((Test-Path $final_local) -eq 0)
{
mkdir $final_local;
cd $final_local;
}
## if path already exists
## DB Connect
}
}
答案 0 :(得分:2)
首先:您使用的是错误的测试,您应该使用:
if($local.Path -eq "C:\")
使用相等的方法比较对象看看:
$local | get-member
$local | fl *
小心PowerShell CmdLet返回对象。
第二次:如果$local.Path
等于"C:\"
,则不会创建任何内容。
您的代码如下:
ForEach ($instance in $(Get-Content "C:\servers\List.txt"))
{
$local = Get-Location;
$final_local = "C:\BKP";
if($local.Path -ne "C:\")
{
cd "C:\";
if((Test-Path $final_local) -eq 0)
{
mkdir $final_local;
cd $final_local;
}
## if path already exists
## DB Connect
}
答案 1 :(得分:0)
使用此命令创建目录:
{{1}}
答案 2 :(得分:0)
尝试使用invoke-command我假设服务器需要凭据,如果适合你,可以跳过它。
$credentials = Get-Credential $create = { $local = Get-Location; $final_local = "C:\BKP" if(!$local.Equals("C:\")){ cd "C:\"; if((Test-Path $final_local) -eq 0){ New-Item -ItemType Directory -Force -Path "$final_local"; cd $final_local; } ## if path already exists ## DB Connect } } ForEach ($instance in Get-Content "C:\servers\List.txt") { Invoke-Command -ScriptBlock $create -ComputerName $instance -Credential $credentials }