我正在努力使用一些 PowerShell,我觉得我应该能够轻松地做到这一点,并希望得到一些帮助。
我有一系列存储日志和配置文件的路径 within
C:\temp
。我需要删除临时文件,然后在每次运行应用程序(使用批处理文件启动)时创建指向登录用户 OneDrive 的符号链接。
所以我需要它运行大约 10 个文件夹,例如
rmdir /Q /S c:\temp\app\cgi-bin
rmdir /Q /S c:\temp\app\contrib
rmdir /Q /S c:\temp\app\logs
etc.
...然后运行等价于:
mklink /D c:\temp\app\cgi-bin c:\users\<logged on user>\One Drive - Company Name\app\cgi-bin
mklink /D c:\temp\app\contrib c:\users\<logged on user>\One Drive - Company Name\app\contrib
mklink /D c:\temp\app\logs c:\users\<logged on user>\One Drive - Company Name\app\logs
我在 PS 中尝试做的如下:
$username = $env:username
(get-item C:\temp\app\cgi-bin).Delete()
New-item -ItemType SymbolicLink -path c:\temp\app\cgi-bin -target 'C:\users\$username\OneDrive - Company Name\app\cgi-bin\'
...然后要让它在每个位置都运行相同的程序:
$username = $env:username
(get-item C:\temp\app\contrib).Delete()
New-item -ItemType SymbolicLink -path c:\temp\app\contrib -target 'C:\users\$username\OneDrive - Company Name\app\contrib\'
etc.
...但是完全迷路了。我觉得应该有一种简单的方法来遍历原始文件夹位置,然后将各个部分连接在一起。我又和
join-path
一起去了,但也不太顺利:
New-item -ItemType SymbolicLink -path C:\temp\app\cgi-bin -target (join-path 'C:\users' '"OneDrive - Company Name\app\cgi-bin\"')